mirror of
				https://github.com/Telecominfraproject/ols-nos.git
				synced 2025-10-31 18:17:52 +00:00 
			
		
		
		
	[device]: Add a new supported device AS7312-54XS (#1821)
* Switch Vendor: Edge-core * Switch SKU: AS7312-54XS * ASIC Vendor: Broadcom * Swich ASIC: Tomahawk+ * Port Configuration: 48x25G + 6x100G * SONiC Image: SONiC-ONIE-Broadcom Signed-off-by: polly_hsu@edge-core.com
This commit is contained in:
		| @@ -0,0 +1,55 @@ | ||||
| # name          lanes                 alias             index | ||||
| Ethernet0       41                    twentyfiveGigE1   0 | ||||
| Ethernet1       42                    twentyfiveGigE2   1 | ||||
| Ethernet2       43                    twentyfiveGigE3   2 | ||||
| Ethernet3       44                    twentyfiveGigE4   3 | ||||
| Ethernet4       49                    twentyfiveGigE5   4 | ||||
| Ethernet5       50                    twentyfiveGigE6   5 | ||||
| Ethernet6       51                    twentyfiveGigE7   6 | ||||
| Ethernet7       52                    twentyfiveGigE8   7 | ||||
| Ethernet8       53                    twentyfiveGigE9   8 | ||||
| Ethernet9       54                    twentyfiveGigE10  9 | ||||
| Ethernet10      55                    twentyfiveGigE11  10 | ||||
| Ethernet11      56                    twentyfiveGigE12  11 | ||||
| Ethernet12      65                    twentyfiveGigE13  12 | ||||
| Ethernet13      66                    twentyfiveGigE14  13 | ||||
| Ethernet14      67                    twentyfiveGigE15  14 | ||||
| Ethernet15      68                    twentyfiveGigE16  15 | ||||
| Ethernet16      33                    twentyfiveGigE17  16 | ||||
| Ethernet17      34                    twentyfiveGigE18  17 | ||||
| Ethernet18      35                    twentyfiveGigE19  18 | ||||
| Ethernet19      36                    twentyfiveGigE20  19 | ||||
| Ethernet20      37                    twentyfiveGigE21  20 | ||||
| Ethernet21      38                    twentyfiveGigE22  21 | ||||
| Ethernet22      39                    twentyfiveGigE23  22 | ||||
| Ethernet23      40                    twentyfiveGigE24  23 | ||||
| Ethernet24      69                    twentyfiveGigE25  24 | ||||
| Ethernet25      70                    twentyfiveGigE26  25 | ||||
| Ethernet26      71                    twentyfiveGigE27  26 | ||||
| Ethernet27      72                    twentyfiveGigE28  27 | ||||
| Ethernet28      81                    twentyfiveGigE29  28 | ||||
| Ethernet29      82                    twentyfiveGigE30  29 | ||||
| Ethernet30      83                    twentyfiveGigE31  30 | ||||
| Ethernet31      84                    twentyfiveGigE32  31 | ||||
| Ethernet32      85                    twentyfiveGigE33  32 | ||||
| Ethernet33      86                    twentyfiveGigE34  33 | ||||
| Ethernet34      87                    twentyfiveGigE35  34 | ||||
| Ethernet35      88                    twentyfiveGigE36  35 | ||||
| Ethernet36      97                    twentyfiveGigE37  36 | ||||
| Ethernet37      98                    twentyfiveGigE38  37 | ||||
| Ethernet38      99                    twentyfiveGigE39  38 | ||||
| Ethernet39      100                   twentyfiveGigE40  39 | ||||
| Ethernet40      101                   twentyfiveGigE41  40 | ||||
| Ethernet41      102                   twentyfiveGigE42  41 | ||||
| Ethernet42      103                   twentyfiveGigE43  42 | ||||
| Ethernet43      104                   twentyfiveGigE44  43 | ||||
| Ethernet44      105                   twentyfiveGigE45  44 | ||||
| Ethernet45      106                   twentyfiveGigE46  45 | ||||
| Ethernet46      107                   twentyfiveGigE47  46 | ||||
| Ethernet47      108                   twentyfiveGigE48  47 | ||||
| Ethernet48      5,6,7,8               hundredGigE49     48 | ||||
| Ethernet52      1,2,3,4               hundredGigE50     52 | ||||
| Ethernet56      109,110,111,112       hundredGigE51     56 | ||||
| Ethernet60      21,22,23,24           hundredGigE52     60 | ||||
| Ethernet64      9,10,11,12            hundredGigE53     64 | ||||
| Ethernet68      117,118,119,120       hundredGigE54     68 | ||||
| @@ -0,0 +1 @@ | ||||
| SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th-as7312-48x25G+6x100G.config.bcm | ||||
| @@ -0,0 +1,519 @@ | ||||
| # accton_as7312_54x 48x25G+6x100G SDK config | ||||
| os=unix | ||||
| schan_intr_enable=0 | ||||
|  | ||||
| l2_mem_entries=40960 | ||||
| l2xmsg_mode=1 | ||||
| l3_mem_entries=40960 | ||||
| mem_cache_enable=0 | ||||
| parity_correction=0 | ||||
| parity_enable=0 | ||||
| mmu_lossless=1 | ||||
|  | ||||
| pbmp_oversubscribe=0x0407ffc00ff00ff003fc3ffc00200222 | ||||
| pbmp_xport_xe=0x0407ffd00ff00ff403fc3ffc00200222 | ||||
|  | ||||
| ## FC10 ## | ||||
| dport_map_port_42=1 | ||||
| dport_map_port_43=2 | ||||
| dport_map_port_44=3 | ||||
| dport_map_port_45=4 | ||||
|  | ||||
| ## FC12 ## | ||||
| dport_map_port_50=5 | ||||
| dport_map_port_51=6 | ||||
| dport_map_port_52=7 | ||||
| dport_map_port_53=8 | ||||
|  | ||||
| ## FC13 ## | ||||
| dport_map_port_54=9 | ||||
| dport_map_port_55=10 | ||||
| dport_map_port_56=11 | ||||
| dport_map_port_57=12 | ||||
|  | ||||
| ## FC16 ## | ||||
| dport_map_port_68=13 | ||||
| dport_map_port_69=14 | ||||
| dport_map_port_70=15 | ||||
| dport_map_port_71=16 | ||||
|  | ||||
| ## FC8 ## | ||||
| dport_map_port_34=17 | ||||
| dport_map_port_35=18 | ||||
| dport_map_port_36=19 | ||||
| dport_map_port_37=20 | ||||
|  | ||||
| ## FC9 ## | ||||
| dport_map_port_38=21 | ||||
| dport_map_port_39=22 | ||||
| dport_map_port_40=23 | ||||
| dport_map_port_41=24 | ||||
|  | ||||
| ## FC17 ## | ||||
| dport_map_port_72=25 | ||||
| dport_map_port_73=26 | ||||
| dport_map_port_74=27 | ||||
| dport_map_port_75=28 | ||||
|  | ||||
| ## FC20 ## | ||||
| dport_map_port_84=29 | ||||
| dport_map_port_85=30 | ||||
| dport_map_port_86=31 | ||||
| dport_map_port_87=32 | ||||
|  | ||||
| ## FC21 ## | ||||
| dport_map_port_88=33 | ||||
| dport_map_port_89=34 | ||||
| dport_map_port_90=35 | ||||
| dport_map_port_91=36 | ||||
|  | ||||
| ## FC24 ## | ||||
| dport_map_port_102=37 | ||||
| dport_map_port_103=38 | ||||
| dport_map_port_104=39 | ||||
| dport_map_port_105=40 | ||||
|  | ||||
| ## FC25 ## | ||||
| dport_map_port_106=41 | ||||
| dport_map_port_107=42 | ||||
| dport_map_port_108=43 | ||||
| dport_map_port_109=44 | ||||
|  | ||||
| ## FC26 ## | ||||
| dport_map_port_110=45 | ||||
| dport_map_port_111=46 | ||||
| dport_map_port_112=47 | ||||
| dport_map_port_113=48 | ||||
|  | ||||
| ## FC1 ## | ||||
| dport_map_port_5=49 | ||||
|  | ||||
| ## FC0 ## | ||||
| dport_map_port_1=50 | ||||
|  | ||||
| ## FC27 ## | ||||
| dport_map_port_114=51 | ||||
|  | ||||
| ## FC5 ## | ||||
| dport_map_port_21=52 | ||||
|  | ||||
| ## FC2 ## | ||||
| dport_map_port_9=53 | ||||
|  | ||||
| ## FC29 ## | ||||
| dport_map_port_122=54 | ||||
|  | ||||
| #for KR | ||||
| #dport_map_port_66=55 | ||||
| #dport_map_port_100=56 | ||||
|  | ||||
| /* Port Map */ | ||||
| ## FC10 ## | ||||
| portmap_42=41:25 | ||||
| portmap_43=42:25 | ||||
| portmap_44=43:25 | ||||
| portmap_45=44:25 | ||||
|  | ||||
| ## FC12 ## | ||||
| portmap_50=49:25 | ||||
| portmap_51=50:25 | ||||
| portmap_52=51:25 | ||||
| portmap_53=52:25 | ||||
|  | ||||
|  | ||||
| ## FC13 ## | ||||
| portmap_54=53:25 | ||||
| portmap_55=54:25 | ||||
| portmap_56=55:25 | ||||
| portmap_57=56:25 | ||||
|  | ||||
| ## FC16 ## | ||||
| portmap_68=65:25 | ||||
| portmap_69=66:25 | ||||
| portmap_70=67:25 | ||||
| portmap_71=68:25 | ||||
|  | ||||
|  | ||||
| ## FC8 ## | ||||
| portmap_34=33:25 | ||||
| portmap_35=34:25 | ||||
| portmap_36=35:25 | ||||
| portmap_37=36:25 | ||||
|  | ||||
| ## FC9 ## | ||||
| portmap_38=37:25 | ||||
| portmap_39=38:25 | ||||
| portmap_40=39:25 | ||||
| portmap_41=40:25 | ||||
|  | ||||
| ## FC17 ## | ||||
| portmap_72=69:25 | ||||
| portmap_73=70:25 | ||||
| portmap_74=71:25 | ||||
| portmap_75=72:25 | ||||
|  | ||||
| ## FC20 ## | ||||
| portmap_84=81:25 | ||||
| portmap_85=82:25 | ||||
| portmap_86=83:25 | ||||
| portmap_87=84:25 | ||||
|  | ||||
|  | ||||
| ## FC21 ## | ||||
| portmap_88=85:25 | ||||
| portmap_89=86:25 | ||||
| portmap_90=87:25 | ||||
| portmap_91=88:25 | ||||
|  | ||||
| ## FC24 ## | ||||
| portmap_102=97:25 | ||||
| portmap_103=98:25 | ||||
| portmap_104=99:25 | ||||
| portmap_105=100:25 | ||||
|  | ||||
| ## FC25 ## | ||||
| portmap_106=101:25 | ||||
| portmap_107=102:25 | ||||
| portmap_108=103:25 | ||||
| portmap_109=104:25 | ||||
|  | ||||
| ## FC26 ## | ||||
| portmap_110=105:25 | ||||
| portmap_111=106:25 | ||||
| portmap_112=107:25 | ||||
| portmap_113=108:25 | ||||
|  | ||||
| ## FC1 ## | ||||
| portmap_5=5:100 | ||||
|  | ||||
| ## FC0 ## | ||||
| portmap_1=1:100 | ||||
|  | ||||
| ## FC27 ## | ||||
| portmap_114=109:100 | ||||
|  | ||||
| ## FC5 ## | ||||
| portmap_21=21:100 | ||||
|  | ||||
| ## FC2 ## | ||||
| portmap_9=9:100 | ||||
|  | ||||
| ## FC29 ## | ||||
| portmap_122=117:100 | ||||
|  | ||||
| # CPU to MAC | ||||
| # TSC-E management port 1 | ||||
| #portmap_66=129:10 | ||||
| # TSC-E management port 2 | ||||
| #portmap_100=131:10 | ||||
|  | ||||
| xgxs_rx_lane_map_42=0x2310 | ||||
| xgxs_rx_lane_map_43=0x2310 | ||||
| xgxs_rx_lane_map_44=0x2310 | ||||
| xgxs_rx_lane_map_45=0x2310 | ||||
| xgxs_rx_lane_map_50=0x3210 | ||||
| xgxs_rx_lane_map_51=0x3210 | ||||
| xgxs_rx_lane_map_52=0x3210 | ||||
| xgxs_rx_lane_map_53=0x3210 | ||||
| xgxs_rx_lane_map_54=0x3210 | ||||
| xgxs_rx_lane_map_55=0x3210 | ||||
| xgxs_rx_lane_map_56=0x3210 | ||||
| xgxs_rx_lane_map_57=0x3210 | ||||
| xgxs_rx_lane_map_68=0x0123 | ||||
| xgxs_rx_lane_map_69=0x0123 | ||||
| xgxs_rx_lane_map_70=0x0123 | ||||
| xgxs_rx_lane_map_71=0x0123 | ||||
| xgxs_rx_lane_map_34=0x0123 | ||||
| xgxs_rx_lane_map_35=0x0123 | ||||
| xgxs_rx_lane_map_36=0x0123 | ||||
| xgxs_rx_lane_map_37=0x0123 | ||||
| xgxs_rx_lane_map_38=0x0123 | ||||
| xgxs_rx_lane_map_39=0x0123 | ||||
| xgxs_rx_lane_map_40=0x0123 | ||||
| xgxs_rx_lane_map_41=0x0123 | ||||
| xgxs_rx_lane_map_72=0x3210 | ||||
| xgxs_rx_lane_map_73=0x3210 | ||||
| xgxs_rx_lane_map_74=0x3210 | ||||
| xgxs_rx_lane_map_75=0x3210 | ||||
| xgxs_rx_lane_map_84=0x1032 | ||||
| xgxs_rx_lane_map_85=0x1032 | ||||
| xgxs_rx_lane_map_86=0x1032 | ||||
| xgxs_rx_lane_map_87=0x1032 | ||||
| xgxs_rx_lane_map_88=0x2301 | ||||
| xgxs_rx_lane_map_89=0x2301 | ||||
| xgxs_rx_lane_map_90=0x2301 | ||||
| xgxs_rx_lane_map_91=0x2301 | ||||
| xgxs_rx_lane_map_102=0x0123 | ||||
| xgxs_rx_lane_map_103=0x0123 | ||||
| xgxs_rx_lane_map_104=0x0123 | ||||
| xgxs_rx_lane_map_105=0x0123 | ||||
| xgxs_rx_lane_map_106=0x3210 | ||||
| xgxs_rx_lane_map_107=0x3210 | ||||
| xgxs_rx_lane_map_108=0x3210 | ||||
| xgxs_rx_lane_map_109=0x3210 | ||||
| xgxs_rx_lane_map_110=0x1032 | ||||
| xgxs_rx_lane_map_111=0x1032 | ||||
| xgxs_rx_lane_map_112=0x1032 | ||||
| xgxs_rx_lane_map_113=0x1032 | ||||
| xgxs_rx_lane_map_5=0x3210 | ||||
| xgxs_rx_lane_map_1=0x3210 | ||||
| xgxs_rx_lane_map_114=0x0123 | ||||
| xgxs_rx_lane_map_21=0x0213 | ||||
| xgxs_rx_lane_map_9=0x3210 | ||||
| xgxs_rx_lane_map_122=0x1230 | ||||
|  | ||||
| xgxs_tx_lane_map_42=0x0132 | ||||
| xgxs_tx_lane_map_43=0x0132 | ||||
| xgxs_tx_lane_map_44=0x0132 | ||||
| xgxs_tx_lane_map_45=0x0132 | ||||
| xgxs_tx_lane_map_50=0x3210 | ||||
| xgxs_tx_lane_map_51=0x3210 | ||||
| xgxs_tx_lane_map_52=0x3210 | ||||
| xgxs_tx_lane_map_53=0x3210 | ||||
| xgxs_tx_lane_map_54=0x3210 | ||||
| xgxs_tx_lane_map_55=0x3210 | ||||
| xgxs_tx_lane_map_56=0x3210 | ||||
| xgxs_tx_lane_map_57=0x3210 | ||||
| xgxs_tx_lane_map_68=0x0123 | ||||
| xgxs_tx_lane_map_69=0x0123 | ||||
| xgxs_tx_lane_map_70=0x0123 | ||||
| xgxs_tx_lane_map_71=0x0123 | ||||
| xgxs_tx_lane_map_34=0x0123 | ||||
| xgxs_tx_lane_map_35=0x0123 | ||||
| xgxs_tx_lane_map_36=0x0123 | ||||
| xgxs_tx_lane_map_37=0x0123 | ||||
| xgxs_tx_lane_map_38=0x0123 | ||||
| xgxs_tx_lane_map_39=0x0123 | ||||
| xgxs_tx_lane_map_40=0x0123 | ||||
| xgxs_tx_lane_map_41=0x0123 | ||||
| xgxs_tx_lane_map_72=0x0123 | ||||
| xgxs_tx_lane_map_73=0x0123 | ||||
| xgxs_tx_lane_map_74=0x0123 | ||||
| xgxs_tx_lane_map_75=0x0123 | ||||
| xgxs_tx_lane_map_84=0x0123 | ||||
| xgxs_tx_lane_map_85=0x0123 | ||||
| xgxs_tx_lane_map_86=0x0123 | ||||
| xgxs_tx_lane_map_87=0x0123 | ||||
| xgxs_tx_lane_map_88=0x2301 | ||||
| xgxs_tx_lane_map_89=0x2301 | ||||
| xgxs_tx_lane_map_90=0x2301 | ||||
| xgxs_tx_lane_map_91=0x2301 | ||||
| xgxs_tx_lane_map_102=0x0123 | ||||
| xgxs_tx_lane_map_103=0x0123 | ||||
| xgxs_tx_lane_map_104=0x0123 | ||||
| xgxs_tx_lane_map_105=0x0123 | ||||
| xgxs_tx_lane_map_106=0x3210 | ||||
| xgxs_tx_lane_map_107=0x3210 | ||||
| xgxs_tx_lane_map_108=0x3210 | ||||
| xgxs_tx_lane_map_109=0x3210 | ||||
| xgxs_tx_lane_map_110=0x1032 | ||||
| xgxs_tx_lane_map_111=0x1032 | ||||
| xgxs_tx_lane_map_112=0x1032 | ||||
| xgxs_tx_lane_map_113=0x1032 | ||||
| xgxs_tx_lane_map_5=0x3210 | ||||
| xgxs_tx_lane_map_1=0x3210 | ||||
| xgxs_tx_lane_map_114=0x0123 | ||||
| xgxs_tx_lane_map_21=0x3210 | ||||
| xgxs_tx_lane_map_9=0x3210 | ||||
| xgxs_tx_lane_map_122=0x3210 | ||||
|  | ||||
| #Polarity RX | ||||
| phy_xaui_rx_polarity_flip_34=0x1 | ||||
| phy_xaui_rx_polarity_flip_35=0x1 | ||||
| phy_xaui_rx_polarity_flip_36=0x1 | ||||
| phy_xaui_rx_polarity_flip_37=0x1 | ||||
| phy_xaui_rx_polarity_flip_38=0x1 | ||||
| phy_xaui_rx_polarity_flip_39=0x1 | ||||
| phy_xaui_rx_polarity_flip_40=0x1 | ||||
| phy_xaui_rx_polarity_flip_41=0x1 | ||||
| phy_xaui_rx_polarity_flip_84=0x1 | ||||
| phy_xaui_rx_polarity_flip_85=0x0 | ||||
| phy_xaui_rx_polarity_flip_86=0x1 | ||||
| phy_xaui_rx_polarity_flip_87=0x0 | ||||
| phy_xaui_rx_polarity_flip_88=0x1 | ||||
| phy_xaui_rx_polarity_flip_89=0x0 | ||||
| phy_xaui_rx_polarity_flip_90=0x1 | ||||
| phy_xaui_rx_polarity_flip_91=0x1 | ||||
| phy_xaui_rx_polarity_flip_102=0x0 | ||||
| phy_xaui_rx_polarity_flip_103=0x0 | ||||
| phy_xaui_rx_polarity_flip_104=0x1 | ||||
| phy_xaui_rx_polarity_flip_105=0x0 | ||||
| phy_xaui_rx_polarity_flip_122=0xf | ||||
| #Polarity TX | ||||
| phy_xaui_tx_polarity_flip_42=0x1 | ||||
| phy_xaui_tx_polarity_flip_43=0x1 | ||||
| phy_xaui_tx_polarity_flip_44=0x1 | ||||
| phy_xaui_tx_polarity_flip_45=0x1 | ||||
| phy_xaui_tx_polarity_flip_34=0x1 | ||||
| phy_xaui_tx_polarity_flip_35=0x1 | ||||
| phy_xaui_tx_polarity_flip_36=0x1 | ||||
| phy_xaui_tx_polarity_flip_37=0x1 | ||||
| phy_xaui_tx_polarity_flip_38=0x0 | ||||
| phy_xaui_tx_polarity_flip_39=0x1 | ||||
| phy_xaui_tx_polarity_flip_40=0x0 | ||||
| phy_xaui_tx_polarity_flip_41=0x1 | ||||
| phy_xaui_tx_polarity_flip_72=0x1 | ||||
| phy_xaui_tx_polarity_flip_73=0x1 | ||||
| phy_xaui_tx_polarity_flip_74=0x1 | ||||
| phy_xaui_tx_polarity_flip_75=0x1 | ||||
| phy_xaui_tx_polarity_flip_84=0x1 | ||||
| phy_xaui_tx_polarity_flip_85=0x1 | ||||
| phy_xaui_tx_polarity_flip_86=0x1 | ||||
| phy_xaui_tx_polarity_flip_87=0x1 | ||||
| phy_xaui_tx_polarity_flip_88=0x1 | ||||
| phy_xaui_tx_polarity_flip_89=0x1 | ||||
| phy_xaui_tx_polarity_flip_90=0x1 | ||||
| phy_xaui_tx_polarity_flip_91=0x1 | ||||
| phy_xaui_tx_polarity_flip_102=0x1 | ||||
| phy_xaui_tx_polarity_flip_103=0x1 | ||||
| phy_xaui_tx_polarity_flip_104=0x1 | ||||
| phy_xaui_tx_polarity_flip_105=0x1 | ||||
| phy_xaui_tx_polarity_flip_122=0xb | ||||
|  | ||||
| #Driver Current | ||||
| serdes_driver_current_42=0x8 | ||||
| serdes_driver_current_43=0x8 | ||||
| serdes_driver_current_44=0x8 | ||||
| serdes_driver_current_45=0x8 | ||||
| serdes_driver_current_50=0x8 | ||||
| serdes_driver_current_51=0x8 | ||||
| serdes_driver_current_52=0x8 | ||||
| serdes_driver_current_53=0x8 | ||||
| serdes_driver_current_54=0x8 | ||||
| serdes_driver_current_55=0x8 | ||||
| serdes_driver_current_56=0x8 | ||||
| serdes_driver_current_57=0x8 | ||||
| serdes_driver_current_68=0x8 | ||||
| serdes_driver_current_69=0x8 | ||||
| serdes_driver_current_70=0x8 | ||||
| serdes_driver_current_71=0x8 | ||||
| serdes_driver_current_34=0x8 | ||||
| serdes_driver_current_35=0x8 | ||||
| serdes_driver_current_36=0x8 | ||||
| serdes_driver_current_37=0x8 | ||||
| serdes_driver_current_38=0x8 | ||||
| serdes_driver_current_39=0x8 | ||||
| serdes_driver_current_40=0x8 | ||||
| serdes_driver_current_41=0x8 | ||||
| serdes_driver_current_72=0x8 | ||||
| serdes_driver_current_73=0x8 | ||||
| serdes_driver_current_74=0x8 | ||||
| serdes_driver_current_75=0x8 | ||||
| serdes_driver_current_84=0x8 | ||||
| serdes_driver_current_85=0x8 | ||||
| serdes_driver_current_86=0x8 | ||||
| serdes_driver_current_87=0x8 | ||||
| serdes_driver_current_88=0x8 | ||||
| serdes_driver_current_89=0x8 | ||||
| serdes_driver_current_90=0x8 | ||||
| serdes_driver_current_91=0x8 | ||||
| serdes_driver_current_102=0x8 | ||||
| serdes_driver_current_103=0x8 | ||||
| serdes_driver_current_104=0x8 | ||||
| serdes_driver_current_105=0x8 | ||||
| serdes_driver_current_106=0x8 | ||||
| serdes_driver_current_107=0x8 | ||||
| serdes_driver_current_108=0x8 | ||||
| serdes_driver_current_109=0x8 | ||||
| serdes_driver_current_110=0x8 | ||||
| serdes_driver_current_111=0x8 | ||||
| serdes_driver_current_112=0x8 | ||||
| serdes_driver_current_113=0x8 | ||||
| serdes_driver_current_lane0_5=0x8 | ||||
| serdes_driver_current_lane1_5=0x8 | ||||
| serdes_driver_current_lane2_5=0x8 | ||||
| serdes_driver_current_lane3_5=0x8 | ||||
| serdes_driver_current_lane0_1=0x8 | ||||
| serdes_driver_current_lane1_1=0x8 | ||||
| serdes_driver_current_lane2_1=0x8 | ||||
| serdes_driver_current_lane3_1=0x8 | ||||
| serdes_driver_current_lane0_114=0x8 | ||||
| serdes_driver_current_lane1_114=0x8 | ||||
| serdes_driver_current_lane2_114=0x8 | ||||
| serdes_driver_current_lane3_114=0x8 | ||||
| serdes_driver_current_lane0_21=0x8 | ||||
| serdes_driver_current_lane1_21=0x8 | ||||
| serdes_driver_current_lane2_21=0x8 | ||||
| serdes_driver_current_lane3_21=0x8 | ||||
| serdes_driver_current_lane0_9=0x8 | ||||
| serdes_driver_current_lane1_9=0x8 | ||||
| serdes_driver_current_lane2_9=0x8 | ||||
| serdes_driver_current_lane3_9=0x8 | ||||
| serdes_driver_current_lane0_122=0x8 | ||||
| serdes_driver_current_lane1_122=0x8 | ||||
| serdes_driver_current_lane2_122=0x8 | ||||
| serdes_driver_current_lane3_122=0x8 | ||||
|  | ||||
| #Preemphasis | ||||
| serdes_preemphasis_42=0x264006 | ||||
| serdes_preemphasis_43=0x264006 | ||||
| serdes_preemphasis_44=0x254106 | ||||
| serdes_preemphasis_45=0x254106 | ||||
| serdes_preemphasis_50=0x254106 | ||||
| serdes_preemphasis_51=0x254106 | ||||
| serdes_preemphasis_52=0x254106 | ||||
| serdes_preemphasis_53=0x254106 | ||||
| serdes_preemphasis_54=0x254106 | ||||
| serdes_preemphasis_55=0x254106 | ||||
| serdes_preemphasis_56=0x254106 | ||||
| serdes_preemphasis_57=0x234306 | ||||
| serdes_preemphasis_68=0x234306 | ||||
| serdes_preemphasis_69=0x204606 | ||||
| serdes_preemphasis_70=0x204606 | ||||
| serdes_preemphasis_71=0x204606 | ||||
| serdes_preemphasis_34=0x234306 | ||||
| serdes_preemphasis_35=0x234306 | ||||
| serdes_preemphasis_36=0x234306 | ||||
| serdes_preemphasis_37=0x234306 | ||||
| serdes_preemphasis_38=0x234306 | ||||
| serdes_preemphasis_39=0x234306 | ||||
| serdes_preemphasis_40=0x234306 | ||||
| serdes_preemphasis_41=0x234306 | ||||
| serdes_preemphasis_72=0x1e4806 | ||||
| serdes_preemphasis_73=0x1e4806 | ||||
| serdes_preemphasis_74=0x1e4806 | ||||
| serdes_preemphasis_75=0x1e4806 | ||||
| serdes_preemphasis_84=0x1e4806 | ||||
| serdes_preemphasis_85=0x1a4c06 | ||||
| serdes_preemphasis_86=0x1a4c06 | ||||
| serdes_preemphasis_87=0x1b4b06 | ||||
| serdes_preemphasis_88=0x1b4b06 | ||||
| serdes_preemphasis_89=0x1e4806 | ||||
| serdes_preemphasis_90=0x1e4806 | ||||
| serdes_preemphasis_91=0x1e4806 | ||||
| serdes_preemphasis_102=0x1e4806 | ||||
| serdes_preemphasis_103=0x1e4806 | ||||
| serdes_preemphasis_104=0x1e4806 | ||||
| serdes_preemphasis_105=0x1e4806 | ||||
| serdes_preemphasis_106=0x1e4806 | ||||
| serdes_preemphasis_107=0x1e4806 | ||||
| serdes_preemphasis_108=0x1e4806 | ||||
| serdes_preemphasis_109=0x1e4806 | ||||
| serdes_preemphasis_110=0x1e4806 | ||||
| serdes_preemphasis_111=0x1d4906 | ||||
| serdes_preemphasis_112=0x234306 | ||||
| serdes_preemphasis_113=0x1f4706 | ||||
| serdes_preemphasis_lane0_5=0x294106 | ||||
| serdes_preemphasis_lane1_5=0x294106 | ||||
| serdes_preemphasis_lane2_5=0x294106 | ||||
| serdes_preemphasis_lane3_5=0x294106 | ||||
| serdes_preemphasis_lane0_1=0x294106 | ||||
| serdes_preemphasis_lane1_1=0x294106 | ||||
| serdes_preemphasis_lane2_1=0x294106 | ||||
| serdes_preemphasis_lane3_1=0x294106 | ||||
| serdes_preemphasis_lane0_114=0x2a4006 | ||||
| serdes_preemphasis_lane1_114=0x2a4006 | ||||
| serdes_preemphasis_lane2_114=0x2a4006 | ||||
| serdes_preemphasis_lane3_114=0x2a4006 | ||||
| serdes_preemphasis_lane0_21=0x2c3c08 | ||||
| serdes_preemphasis_lane1_21=0x2a4006 | ||||
| serdes_preemphasis_lane2_21=0x2a4006 | ||||
| serdes_preemphasis_lane3_21=0x2a4006 | ||||
| serdes_preemphasis_lane0_9=0x284206 | ||||
| serdes_preemphasis_lane1_9=0x284206 | ||||
| serdes_preemphasis_lane2_9=0x284206 | ||||
| serdes_preemphasis_lane3_9=0x284206 | ||||
| serdes_preemphasis_lane0_122=0x283e06 | ||||
| serdes_preemphasis_lane1_122=0x283e06 | ||||
| serdes_preemphasis_lane2_122=0x283e06 | ||||
| serdes_preemphasis_lane3_122=0x294601 | ||||
| @@ -0,0 +1,3 @@ | ||||
| CONSOLE_PORT=0x2f8 | ||||
| CONSOLE_DEV=1 | ||||
| CONSOLE_SPEED=115200 | ||||
							
								
								
									
										79
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/led_proc_init.soc
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										79
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/led_proc_init.soc
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,79 @@ | ||||
| # accton_as7312_54x 48x25G+6x100G SDK port LED macro init SOC | ||||
| s CMIC_LEDUP0_DATA_RAM 0 | ||||
| s CMIC_LEDUP1_DATA_RAM 0 | ||||
|  | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_0_3    REMAP_PORT_0=63   REMAP_PORT_1=63    REMAP_PORT_2=63   REMAP_PORT_3=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_4_7    REMAP_PORT_4=63   REMAP_PORT_5=63    REMAP_PORT_6=63   REMAP_PORT_7=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_8_11   REMAP_PORT_8=27   REMAP_PORT_9=26    REMAP_PORT_10=25  REMAP_PORT_11=24 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_12_15  REMAP_PORT_12=63  REMAP_PORT_13=63   REMAP_PORT_14=63  REMAP_PORT_15=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_16_19  REMAP_PORT_16=63  REMAP_PORT_17=63   REMAP_PORT_18=63  REMAP_PORT_19=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_20_23  REMAP_PORT_20=31  REMAP_PORT_21=30   REMAP_PORT_22=29  REMAP_PORT_23=28 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_24_27  REMAP_PORT_24=15  REMAP_PORT_25=14   REMAP_PORT_26=13  REMAP_PORT_27=12 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_28_31  REMAP_PORT_28=19  REMAP_PORT_29=18   REMAP_PORT_30=17  REMAP_PORT_31=16 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_32_35  REMAP_PORT_32=63  REMAP_PORT_33=63   REMAP_PORT_34=63  REMAP_PORT_35=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_36_39  REMAP_PORT_36=63  REMAP_PORT_37=63   REMAP_PORT_38=63  REMAP_PORT_39=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_40_43  REMAP_PORT_40=35  REMAP_PORT_41=34   REMAP_PORT_42=33  REMAP_PORT_43=32 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_44_47  REMAP_PORT_44=63  REMAP_PORT_45=63   REMAP_PORT_46=63  REMAP_PORT_47=63 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_48_51  REMAP_PORT_48=23  REMAP_PORT_49=22   REMAP_PORT_50=21  REMAP_PORT_51=20 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_52_55  REMAP_PORT_52=11  REMAP_PORT_53=10   REMAP_PORT_54=9   REMAP_PORT_55=8 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_56_59  REMAP_PORT_56=7   REMAP_PORT_57=6    REMAP_PORT_58=5   REMAP_PORT_59=4 | ||||
| m CMIC_LEDUP0_PORT_ORDER_REMAP_60_63  REMAP_PORT_60=3   REMAP_PORT_61=2    REMAP_PORT_62=1   REMAP_PORT_63=0 | ||||
|  | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_0_3    REMAP_PORT_0=19  REMAP_PORT_1=18   REMAP_PORT_2=17  REMAP_PORT_3=16 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_4_7    REMAP_PORT_4=23   REMAP_PORT_5=22    REMAP_PORT_6=21   REMAP_PORT_7=20 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_8_11   REMAP_PORT_8=3    REMAP_PORT_9=2     REMAP_PORT_10=1   REMAP_PORT_11=0 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_12_15  REMAP_PORT_12=63  REMAP_PORT_13=63   REMAP_PORT_14=63  REMAP_PORT_15=63 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_16_19  REMAP_PORT_16=7   REMAP_PORT_17=6    REMAP_PORT_18=5   REMAP_PORT_19=4 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_20_23  REMAP_PORT_20=11  REMAP_PORT_21=10   REMAP_PORT_22=9   REMAP_PORT_23=8 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_24_27  REMAP_PORT_24=63  REMAP_PORT_25=63   REMAP_PORT_26=63  REMAP_PORT_27=63 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_28_31  REMAP_PORT_28=63  REMAP_PORT_29=63   REMAP_PORT_30=63  REMAP_PORT_31=63 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_32_35  REMAP_PORT_32=15  REMAP_PORT_33=14   REMAP_PORT_34=13  REMAP_PORT_35=12 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_36_39  REMAP_PORT_36=27  REMAP_PORT_37=26   REMAP_PORT_38=25  REMAP_PORT_39=24 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_40_43  REMAP_PORT_40=63  REMAP_PORT_41=63   REMAP_PORT_42=63  REMAP_PORT_43=63 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_44_47  REMAP_PORT_44=63  REMAP_PORT_45=63   REMAP_PORT_46=63  REMAP_PORT_47=63 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_48_51  REMAP_PORT_48=31  REMAP_PORT_49=30   REMAP_PORT_50=29  REMAP_PORT_51=28 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_52_55  REMAP_PORT_52=35  REMAP_PORT_53=34   REMAP_PORT_54=33  REMAP_PORT_55=32 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_56_59  REMAP_PORT_56=63  REMAP_PORT_57=63   REMAP_PORT_58=63  REMAP_PORT_59=63 | ||||
| m CMIC_LEDUP1_PORT_ORDER_REMAP_60_63  REMAP_PORT_60=63  REMAP_PORT_61=63   REMAP_PORT_62=63  REMAP_PORT_63=63 | ||||
|  | ||||
| led 0 stop | ||||
| led 0 prog \ | ||||
|  02 FD 42 80 02 FF 42 00 02 FE 42 00 02 FA 42 7E \ | ||||
|  02 FB 42 24 06 F9 D2 00 74 1E 02 F9 42 03 67 AC \ | ||||
|  67 C3 67 52 86 FE 67 C3 67 52 86 FE 67 C3 67 52 \ | ||||
|  86 FE 67 C3 67 52 86 FE 06 FB D6 FE 74 1E 86 FC \ | ||||
|  3E FA 06 FE 88 4A 03 71 4C 67 84 57 67 84 57 67 \ | ||||
|  98 57 06 FE 88 80 4A 00 27 97 75 4F 90 4A 00 27 \ | ||||
|  4A 01 27 B7 97 71 69 77 42 06 F9 D6 FC 74 7C 02 \ | ||||
|  F9 4A 07 37 4E 07 02 FC 42 00 4E 07 06 F9 0A 07 \ | ||||
|  71 4F 77 42 16 FF 06 FD 17 4D DA 07 74 95 12 FF \ | ||||
|  52 00 86 FD 57 86 FF 57 16 FF 06 FD 07 4D DA 07 \ | ||||
|  74 A9 12 FF 52 00 86 FD 57 86 FF 57 06 FE C2 FC \ | ||||
|  98 98 12 F4 50 C2 FC 98 98 F2 F0 14 06 F4 C2 03 \ | ||||
|  88 77 D1 06 FE C2 FC 98 98 F2 E0 14 06 FE C2 03 \ | ||||
|  88 18 71 E2 80 18 71 DD 67 98 67 98 57 67 98 67 \ | ||||
|  84 57 80 18 71 EB 67 84 67 98 57 67 84 67 84 57 \ | ||||
|  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||||
| led 0 start | ||||
| led auto on | ||||
|  | ||||
| led 1 stop | ||||
| led 1 prog \ | ||||
|  02 FD 42 80 02 FF 42 00 02 FE 42 00 02 FA 42 7E \ | ||||
|  02 FB 42 24 06 F9 D2 00 74 1E 02 F9 42 03 67 AC \ | ||||
|  67 C3 67 52 86 FE 67 C3 67 52 86 FE 67 C3 67 52 \ | ||||
|  86 FE 67 C3 67 52 86 FE 06 FB D6 FE 74 1E 86 FC \ | ||||
|  3E FA 06 FE 88 4A 03 71 4C 67 84 57 67 84 57 67 \ | ||||
|  98 57 06 FE 88 80 4A 00 27 97 75 4F 90 4A 00 27 \ | ||||
|  4A 01 27 B7 97 71 69 77 42 06 F9 D6 FC 74 7C 02 \ | ||||
|  F9 4A 07 37 4E 07 02 FC 42 00 4E 07 06 F9 0A 07 \ | ||||
|  71 4F 77 42 16 FF 06 FD 17 4D DA 07 74 95 12 FF \ | ||||
|  52 00 86 FD 57 86 FF 57 16 FF 06 FD 07 4D DA 07 \ | ||||
|  74 A9 12 FF 52 00 86 FD 57 86 FF 57 06 FE C2 FC \ | ||||
|  98 98 12 F4 50 C2 FC 98 98 F2 F0 14 06 F4 C2 03 \ | ||||
|  88 77 D1 06 FE C2 FC 98 98 F2 E0 14 06 FE C2 03 \ | ||||
|  88 18 71 E2 80 18 71 DD 67 98 67 98 57 67 98 67 \ | ||||
|  84 57 80 18 71 EB 67 84 67 98 57 67 84 67 84 57 \ | ||||
|  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||||
| led 1 start | ||||
| led auto on | ||||
							
								
								
									
										1184
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/minigraph.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1184
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/minigraph.xml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										24
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/plugins/eeprom.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/plugins/eeprom.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| try: | ||||
|     import exceptions | ||||
|     import binascii | ||||
|     import time | ||||
|     import optparse | ||||
|     import warnings | ||||
|     import os | ||||
|     import sys | ||||
|     from sonic_eeprom import eeprom_base | ||||
|     from sonic_eeprom import eeprom_tlvinfo | ||||
|     import subprocess | ||||
| except ImportError, e: | ||||
|     raise ImportError (str(e) + "- required module not found") | ||||
|  | ||||
| class board(eeprom_tlvinfo.TlvInfoDecoder): | ||||
|     _TLV_INFO_MAX_LEN = 256 | ||||
|     def __init__(self, name, path, cpld_root, ro): | ||||
|         self.eeprom_path = "/sys/bus/i2c/devices/1-0057/eeprom" | ||||
|         #Two i2c buses might get flipped order, check them both. | ||||
|         if not os.path.exists(self.eeprom_path): | ||||
|             self.eeprom_path = "/sys/bus/i2c/devices/0-0057/eeprom" | ||||
|         super(board, self).__init__(self.eeprom_path, 0, '', True) | ||||
| @@ -0,0 +1,61 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| ############################################################################# | ||||
| # Accton | ||||
| # | ||||
| # Module contains an implementation of SONiC PSU Base API and | ||||
| # provides the PSUs status which are available in the platform | ||||
| # | ||||
| ############################################################################# | ||||
|  | ||||
| import os.path | ||||
|  | ||||
| try: | ||||
|     from sonic_psu.psu_base import PsuBase | ||||
| except ImportError as e: | ||||
|     raise ImportError (str(e) + "- required module not found") | ||||
|  | ||||
| class PsuUtil(PsuBase): | ||||
|     """Platform-specific PSUutil class""" | ||||
|  | ||||
|     def __init__(self): | ||||
|         PsuBase.__init__(self) | ||||
|  | ||||
|         self.psu_path = "/sys/bus/i2c/devices/" | ||||
|         self.psu_presence = "/psu_present" | ||||
|         self.psu_oper_status = "/psu_power_good" | ||||
|         self.psu_mapping = { | ||||
|             2: "11-0053", | ||||
|             1: "10-0050", | ||||
|         } | ||||
|  | ||||
|     def get_num_psus(self): | ||||
|         return len(self.psu_mapping) | ||||
|  | ||||
|     def get_psu_status(self, index): | ||||
|         if index is None: | ||||
|             return False | ||||
|  | ||||
|         status = 0 | ||||
|         node = self.psu_path + self.psu_mapping[index]+self.psu_oper_status | ||||
|         try: | ||||
|             with open(node, 'r') as power_status: | ||||
|                 status = int(power_status.read()) | ||||
|         except IOError: | ||||
|             return False | ||||
|  | ||||
|         return status == 1 | ||||
|  | ||||
|     def get_psu_presence(self, index): | ||||
|         if index is None: | ||||
|             return False | ||||
|  | ||||
|         status = 0 | ||||
|         node = self.psu_path + self.psu_mapping[index] + self.psu_presence | ||||
|         try: | ||||
|             with open(node, 'r') as presence_status: | ||||
|                 status = int(presence_status.read()) | ||||
|         except IOError: | ||||
|             return False | ||||
|  | ||||
|         return status == 1 | ||||
							
								
								
									
										215
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/plugins/sfputil.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								device/accton/x86_64-accton_as7312_54xs-r0/plugins/sfputil.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,215 @@ | ||||
| # sfputil.py | ||||
| # | ||||
| # Platform-specific SFP transceiver interface for SONiC | ||||
| # | ||||
|  | ||||
| try: | ||||
|     import time | ||||
|     from sonic_sfp.sfputilbase import SfpUtilBase | ||||
| except ImportError as e: | ||||
|     raise ImportError("%s - required module not found" % str(e)) | ||||
|  | ||||
|  | ||||
| class SfpUtil(SfpUtilBase): | ||||
|     """Platform-specific SfpUtil class""" | ||||
|  | ||||
|     PORT_START = 0 | ||||
|     PORT_END = 71 | ||||
|     PORTS_IN_BLOCK = 72 | ||||
|     QSFP_PORT_START = 48 | ||||
|     QSFP_PORT_END = 72 | ||||
|  | ||||
|     BASE_VAL_PATH = "/sys/class/i2c-adapter/i2c-{0}/{1}-0050/" | ||||
|  | ||||
|     _port_to_is_present = {} | ||||
|     _port_to_lp_mode = {} | ||||
|  | ||||
|     _port_to_eeprom_mapping = {} | ||||
|     _cpld_mapping = { | ||||
|        0:  "4-0060", | ||||
|        1:  "5-0062", | ||||
|        2:  "6-0064", | ||||
|            } | ||||
|     _port_to_i2c_mapping = { | ||||
|            0:  18,  | ||||
|            1:  19,  | ||||
|            2:  20,  | ||||
|            3:  21,  | ||||
|            4:  22,  | ||||
|            5:  23,  | ||||
|            6:  24,  | ||||
|            7:  25,  | ||||
|            8:  26, | ||||
|            9:  27, | ||||
|            10: 28, | ||||
|            11: 29, | ||||
|            12: 30, | ||||
|            13: 31, | ||||
|            14: 32, | ||||
|            15: 33, | ||||
|            16: 34, | ||||
|            17: 35, | ||||
|            18: 36, | ||||
|            19: 37, | ||||
|            20: 38, | ||||
|            21: 39, | ||||
|            22: 40, | ||||
|            23: 41, | ||||
|            24: 42, | ||||
|            25: 43, | ||||
|            26: 44, | ||||
|            27: 45, | ||||
|            28: 46, | ||||
|            29: 47, | ||||
|            30: 48, | ||||
|            31: 49, | ||||
|            32: 50, | ||||
|            33: 51, | ||||
|            34: 52, | ||||
|            35: 53, | ||||
|            36: 54, | ||||
|            37: 55, | ||||
|            38: 56, | ||||
|            39: 57, | ||||
|            40: 58, | ||||
|            41: 59, | ||||
|            42: 60, | ||||
|            43: 61, | ||||
|            44: 62, | ||||
|            45: 63, | ||||
|            46: 64, | ||||
|            47: 65, | ||||
|            48: 66, #QSFP49 | ||||
|            49: 66, | ||||
|            50: 66, | ||||
|            51: 66, | ||||
|            52: 67, #QSFP50 | ||||
|            53: 67, | ||||
|            54: 67, | ||||
|            55: 67, | ||||
|            56: 68, #QSFP51 | ||||
|            57: 68, | ||||
|            58: 68, | ||||
|            59: 68, | ||||
|            60: 69, #QSFP52 | ||||
|            61: 69, | ||||
|            62: 69, | ||||
|            63: 69, | ||||
|            64: 70, #QSFP53 | ||||
|            65: 70, | ||||
|            66: 70, | ||||
|            67: 70, | ||||
|            68: 71, #QSFP54 | ||||
|            69: 71, | ||||
|            70: 71, | ||||
|            71: 71, | ||||
|            } | ||||
|  | ||||
|     @property | ||||
|     def port_start(self): | ||||
|         return self.PORT_START | ||||
|  | ||||
|     @property | ||||
|     def port_end(self): | ||||
|         return self.PORT_END | ||||
|  | ||||
|     @property | ||||
|     def qsfp_port_start(self): | ||||
|         return self.QSFP_PORT_START | ||||
|  | ||||
|     @property | ||||
|     def qsfp_port_end(self): | ||||
|         return self.QSFP_PORT_END | ||||
|      | ||||
|     @property | ||||
|     def qsfp_ports(self): | ||||
|         return range(self.QSFP_PORT_START, self.PORTS_IN_BLOCK + 1) | ||||
|  | ||||
|     @property | ||||
|     def port_to_eeprom_mapping(self): | ||||
|         return self._port_to_eeprom_mapping | ||||
|  | ||||
|     def __init__(self): | ||||
|         eeprom_path = '/sys/bus/i2c/devices/{0}-0050/eeprom' | ||||
|         for x in range(0, self.port_end+1): | ||||
|             self.port_to_eeprom_mapping[x] = eeprom_path.format( | ||||
|                 self._port_to_i2c_mapping[x]) | ||||
|  | ||||
|         SfpUtilBase.__init__(self) | ||||
|  | ||||
|  | ||||
|     # For port 48~51 are QSFP, here presumed they're all split to 4 lanes. | ||||
|     def get_cage_num(self, port_num):              | ||||
|         cage_num = port_num | ||||
|         if (port_num >= self.QSFP_PORT_START): | ||||
|             cage_num = (port_num - self.QSFP_PORT_START)/4 | ||||
|             cage_num = cage_num + self.QSFP_PORT_START | ||||
|  | ||||
|         return cage_num | ||||
|  | ||||
|     # For cage 0~23 and 48~51 are at cpld2, others are at cpld3. | ||||
|     def get_cpld_num(self, port_num):              | ||||
|         cpld_i = 1 | ||||
|         cage_num = self.get_cage_num(port_num) | ||||
|         if (port_num > 23 and port_num < self.QSFP_PORT_START): | ||||
|             cpld_i = 2 | ||||
|  | ||||
|         if (cage_num >= 52):  | ||||
|             cpld_i = 2 | ||||
|  | ||||
|         return cpld_i | ||||
|  | ||||
|     def get_presence(self, port_num): | ||||
|         # Check for invalid port_num | ||||
|         if port_num < self.port_start or port_num > self.port_end: | ||||
|             return False | ||||
|          | ||||
|         cage_num = self.get_cage_num(port_num) | ||||
|         cpld_i = self.get_cpld_num(port_num) | ||||
|  | ||||
|         cpld_ps = self._cpld_mapping[cpld_i] | ||||
|         path = "/sys/bus/i2c/devices/{0}/module_present_{1}" | ||||
|         port_ps = path.format(cpld_ps, cage_num+1) | ||||
|  | ||||
|         try: | ||||
|             val_file = open(port_ps) | ||||
|         except IOError as e: | ||||
|             print "Error: unable to open file: %s" % str(e)           | ||||
|             return False | ||||
|  | ||||
|         content = val_file.readline().rstrip() | ||||
|         val_file.close() | ||||
|  | ||||
|         # content is a string, either "0" or "1" | ||||
|         if content == "1": | ||||
|             return True | ||||
|  | ||||
|         return False | ||||
|  | ||||
|     def get_low_power_mode(self, port_num):              | ||||
|         raise NotImplementedError | ||||
|  | ||||
|     def set_low_power_mode(self, port_num, lpmode):                 | ||||
|         raise NotImplementedError | ||||
|  | ||||
|     def reset(self, port_num): | ||||
|         if port_num < self.qsfp_port_start or port_num > self.qsfp_port_end: | ||||
|             return False | ||||
|           | ||||
|         cage_num = self.get_cage_num(port_num) | ||||
|         cpld_i = self.get_cpld_num(port_num) | ||||
|         cpld_ps = self._cpld_mapping[cpld_i] | ||||
|         path = "/sys/bus/i2c/devices/{0}/module_reset_{1}" | ||||
|         port_ps = path.format(cpld_ps, cage_num+1) | ||||
|         try: | ||||
|             reg_file = open(port_ps, 'w') | ||||
|         except IOError as e: | ||||
|             print "Error: unable to open file: %s" % str(e)           | ||||
|             return False | ||||
|  | ||||
|         reg_value = '0' | ||||
|  | ||||
|         reg_file.write(reg_value) | ||||
|         reg_file.close() | ||||
|          | ||||
|         return True | ||||
		Reference in New Issue
	
	Block a user
	 Polly Hsu
					Polly Hsu