[device & platform] led and transceiver deamon for inventec switch d7032 and d7054 (#1678)

* [device]: Modify SFPUtil for inventec-d7032
[device]: Add front panel led support for Inventec-d7032
[platform]: Add transceiver monitor daemon for Inventec-d7032 and Inventec-d7054

* [device] follow new porting guide to have broadcom config under device folder

* remove license
This commit is contained in:
klhaung 2018-08-13 03:39:20 +08:00 committed by lguohan
parent d761630f73
commit 58db7f17a7
16 changed files with 2412 additions and 12 deletions

View File

@ -1,2 +1,2 @@
SAI_INIT_CONFIG_FILE=/etc/bcm/th-d7032q28b-32x100g.config.bcm
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th-d7032q28b-32x100g.config.bcm
SAI_NUM_ECMP_MEMBERS=32

View File

@ -0,0 +1,290 @@
# Redwood BCM Shell config / all 100G 32 ports
# Define default OS / SAL
os=unix
l2_mem_entries=8192
l3_mem_entries=8192
l3_alpm_enable=2
#ipv6_lpm_128b_enable=1
l2xmsg_mode=1
mem_cache_enable=0
parity_correction=0
parity_enable=0
# per Broadcom feedback, no more pbmp_oversubscribe
# pbmp_oversubscribe=0x00003fc000000ff0000003fc000001fe
oversubscribe_mode=1
pbmp_xport_xe=0x3fd000000ff4000003fc000001fe
# EagleCore ports
portmap_66=129:10
portmap_100=131:10
# Loopback ports
portmap_33=132:10
portmap_67=133:10
portmap_101=134:10
portmap_135=135:10
portmap_68=65:100
portmap_69=69:100
portmap_70=73:100
portmap_71=77:100
portmap_72=81:100
portmap_73=85:100
portmap_74=89:100
portmap_75=93:100
portmap_102=97:100
portmap_103=101:100
portmap_104=105:100
portmap_105=109:100
portmap_106=113:100
portmap_107=117:100
portmap_108=121:100
portmap_109=125:100
portmap_1=1:100
portmap_2=5:100
portmap_3=9:100
portmap_4=13:100
portmap_5=17:100
portmap_6=21:100
portmap_7=25:100
portmap_8=29:100
portmap_34=33:100
portmap_35=37:100
portmap_36=41:100
portmap_37=45:100
portmap_38=49:100
portmap_39=53:100
portmap_40=57:100
portmap_41=61:100
phy_xaui_tx_polarity_flip_ce0=0x8
phy_xaui_tx_polarity_flip_ce1=0x6
phy_xaui_tx_polarity_flip_ce2=0x6
phy_xaui_tx_polarity_flip_ce3=0x6
phy_xaui_tx_polarity_flip_ce4=0x3
phy_xaui_tx_polarity_flip_ce5=0x4
phy_xaui_tx_polarity_flip_ce6=0xc
phy_xaui_tx_polarity_flip_ce7=0x6
phy_xaui_tx_polarity_flip_ce8=0xc
phy_xaui_tx_polarity_flip_ce9=0x3
phy_xaui_tx_polarity_flip_ce10=0x3
phy_xaui_tx_polarity_flip_ce11=0x3
phy_xaui_tx_polarity_flip_ce12=0x4
phy_xaui_tx_polarity_flip_ce13=0x1
phy_xaui_tx_polarity_flip_ce14=0x2
phy_xaui_tx_polarity_flip_ce15=0x3
phy_xaui_tx_polarity_flip_ce16=0x2
phy_xaui_tx_polarity_flip_ce17=0x3
phy_xaui_tx_polarity_flip_ce18=0x2
phy_xaui_tx_polarity_flip_ce19=0x8
phy_xaui_tx_polarity_flip_ce20=0x2
phy_xaui_tx_polarity_flip_ce21=0x9
phy_xaui_tx_polarity_flip_ce22=0x8
phy_xaui_tx_polarity_flip_ce23=0x9
phy_xaui_tx_polarity_flip_ce24=0x2
phy_xaui_tx_polarity_flip_ce25=0x4
phy_xaui_tx_polarity_flip_ce26=0xd
phy_xaui_tx_polarity_flip_ce27=0xc
phy_xaui_tx_polarity_flip_ce28=0x3
phy_xaui_tx_polarity_flip_ce29=0xc
phy_xaui_tx_polarity_flip_ce30=0xc
phy_xaui_tx_polarity_flip_ce31=0x2
phy_xaui_rx_polarity_flip_ce0=0xb
phy_xaui_rx_polarity_flip_ce1=0xc
phy_xaui_rx_polarity_flip_ce2=0xc
phy_xaui_rx_polarity_flip_ce3=0xc
phy_xaui_rx_polarity_flip_ce4=0x1
phy_xaui_rx_polarity_flip_ce5=0xc
phy_xaui_rx_polarity_flip_ce6=0x4
phy_xaui_rx_polarity_flip_ce7=0xc
phy_xaui_rx_polarity_flip_ce8=0xb
phy_xaui_rx_polarity_flip_ce9=0x6
phy_xaui_rx_polarity_flip_ce10=0x1
phy_xaui_rx_polarity_flip_ce11=0x8
phy_xaui_rx_polarity_flip_ce12=0xc
phy_xaui_rx_polarity_flip_ce13=0x6
phy_xaui_rx_polarity_flip_ce14=0x4
phy_xaui_rx_polarity_flip_ce15=0xe
phy_xaui_rx_polarity_flip_ce16=0xe
phy_xaui_rx_polarity_flip_ce17=0x2
phy_xaui_rx_polarity_flip_ce18=0x4
phy_xaui_rx_polarity_flip_ce19=0x6
phy_xaui_rx_polarity_flip_ce20=0xe
phy_xaui_rx_polarity_flip_ce21=0x3
phy_xaui_rx_polarity_flip_ce22=0x3
phy_xaui_rx_polarity_flip_ce23=0x3
phy_xaui_rx_polarity_flip_ce24=0xb
phy_xaui_rx_polarity_flip_ce25=0xc
phy_xaui_rx_polarity_flip_ce26=0xe
phy_xaui_rx_polarity_flip_ce27=0xc
phy_xaui_rx_polarity_flip_ce28=0xb
phy_xaui_rx_polarity_flip_ce29=0x9
phy_xaui_rx_polarity_flip_ce30=0x6
phy_xaui_rx_polarity_flip_ce31=0x9
# EQ/iDriver
serdes_preemphasis_1=0x323E00
serdes_preemphasis_2=0x323E00
serdes_preemphasis_3=0x323E00
serdes_preemphasis_4=0x323E00
serdes_preemphasis_5=0x323E00
serdes_preemphasis_6=0x323E00
serdes_preemphasis_7=0x323E00
serdes_preemphasis_8=0x323E00
serdes_preemphasis_9=0x343C00
serdes_preemphasis_10=0x343C00
serdes_preemphasis_11=0x343C00
serdes_preemphasis_12=0x343C00
serdes_preemphasis_13=0x343C00
serdes_preemphasis_14=0x343C00
serdes_preemphasis_15=0x343C00
serdes_preemphasis_16=0x343C00
serdes_preemphasis_17=0x323E00
serdes_preemphasis_18=0x323E00
serdes_preemphasis_19=0x323E00
serdes_preemphasis_20=0x323E00
serdes_preemphasis_21=0x323E00
serdes_preemphasis_22=0x323E00
serdes_preemphasis_23=0x323E00
serdes_preemphasis_24=0x323E00
serdes_preemphasis_25=0x304000
serdes_preemphasis_26=0x304000
serdes_preemphasis_27=0x304000
serdes_preemphasis_28=0x304000
serdes_preemphasis_29=0x304000
serdes_preemphasis_30=0x304000
serdes_preemphasis_31=0x304000
serdes_preemphasis_32=0x304000
serdes_preemphasis_34=0x2D4300
serdes_preemphasis_35=0x2D4300
serdes_preemphasis_36=0x2D4300
serdes_preemphasis_37=0x2D4300
serdes_preemphasis_38=0x2D4300
serdes_preemphasis_39=0x2D4300
serdes_preemphasis_40=0x2D4300
serdes_preemphasis_41=0x2D4300
serdes_preemphasis_42=0x2B4500
serdes_preemphasis_43=0x2B4500
serdes_preemphasis_44=0x2B4500
serdes_preemphasis_45=0x2B4500
serdes_preemphasis_46=0x2B4500
serdes_preemphasis_47=0x2B4500
serdes_preemphasis_48=0x2B4500
serdes_preemphasis_49=0x2B4500
serdes_preemphasis_50=0x2B4500
serdes_preemphasis_51=0x2B4500
serdes_preemphasis_52=0x2B4500
serdes_preemphasis_53=0x2B4500
serdes_preemphasis_54=0x284800
serdes_preemphasis_55=0x284800
serdes_preemphasis_56=0x284800
serdes_preemphasis_57=0x284800
serdes_preemphasis_58=0x2B4500
serdes_preemphasis_59=0x2B4500
serdes_preemphasis_60=0x2B4500
serdes_preemphasis_61=0x2B4500
serdes_preemphasis_62=0x2B4500
serdes_preemphasis_63=0x2B4500
serdes_preemphasis_64=0x2B4500
serdes_preemphasis_65=0x2B4500
serdes_preemphasis_68=0x284800
serdes_preemphasis_69=0x284800
serdes_preemphasis_70=0x284800
serdes_preemphasis_71=0x284800
serdes_preemphasis_72=0x284800
serdes_preemphasis_73=0x284800
serdes_preemphasis_74=0x284800
serdes_preemphasis_75=0x284800
serdes_preemphasis_76=0x284800
serdes_preemphasis_77=0x284800
serdes_preemphasis_78=0x284800
serdes_preemphasis_79=0x284800
serdes_preemphasis_80=0x2A4600
serdes_preemphasis_81=0x2A4600
serdes_preemphasis_82=0x2A4600
serdes_preemphasis_83=0x2A4600
serdes_preemphasis_84=0x2B4500
serdes_preemphasis_85=0x2B4500
serdes_preemphasis_86=0x2B4500
serdes_preemphasis_87=0x2B4500
serdes_preemphasis_88=0x2A4600
serdes_preemphasis_89=0x2A4600
serdes_preemphasis_90=0x2A4600
serdes_preemphasis_91=0x2A4600
serdes_preemphasis_92=0x2B4500
serdes_preemphasis_93=0x2B4500
serdes_preemphasis_94=0x2B4500
serdes_preemphasis_95=0x2B4500
serdes_preemphasis_96=0x2B4500
serdes_preemphasis_97=0x2B4500
serdes_preemphasis_98=0x2B4500
serdes_preemphasis_99=0x2B4500
serdes_preemphasis_102=0x2B4500
serdes_preemphasis_103=0x2B4500
serdes_preemphasis_104=0x2B4500
serdes_preemphasis_105=0x2B4500
serdes_preemphasis_106=0x2B4500
serdes_preemphasis_107=0x2B4500
serdes_preemphasis_108=0x2B4500
serdes_preemphasis_109=0x2B4500
serdes_preemphasis_110=0x2D4300
serdes_preemphasis_111=0x2D4300
serdes_preemphasis_112=0x2D4300
serdes_preemphasis_113=0x2D4300
serdes_preemphasis_114=0x304000
serdes_preemphasis_115=0x304000
serdes_preemphasis_116=0x304000
serdes_preemphasis_117=0x304000
serdes_preemphasis_118=0x304000
serdes_preemphasis_119=0x304000
serdes_preemphasis_120=0x304000
serdes_preemphasis_121=0x304000
serdes_preemphasis_122=0x304000
serdes_preemphasis_123=0x304000
serdes_preemphasis_124=0x304000
serdes_preemphasis_125=0x304000
serdes_preemphasis_126=0x343C00
serdes_preemphasis_127=0x343C00
serdes_preemphasis_128=0x343C00
serdes_preemphasis_129=0x343C00
serdes_preemphasis_130=0x343C00
serdes_preemphasis_131=0x343C00
serdes_preemphasis_132=0x343C00
serdes_preemphasis_133=0x343C00

View File

@ -0,0 +1,427 @@
# Redwood BCM Shell config / all 100G 32 ports
# Define default OS / SAL
os=unix
l2_mem_entries=8192
l3_mem_entries=8192
l3_alpm_enable=2
#ipv6_lpm_128b_enable=1
l2xmsg_mode=1
mem_cache_enable=0
parity_correction=0
parity_enable=0
# per Broadcom feedback, no more pbmp_oversubscribe
# pbmp_oversubscribe=0x00003fc000000ff0000003fc000001fe
oversubscribe_mode=1
pbmp_xport_xe=0x3fd000000ff4000003fc000001fe
# EagleCore ports
portmap_66=129:10
portmap_100=131:10
# Loopback ports
portmap_33=132:10
portmap_67=133:10
portmap_101=134:10
portmap_135=135:10
portmap_68=65:40
portmap_69=69:40
portmap_70=73:40
portmap_71=77:40
portmap_72=81:40
portmap_73=85:40
portmap_74=89:40
portmap_75=93:40
portmap_102=97:40
portmap_103=101:40
portmap_104=105:40
portmap_105=109:40
portmap_106=113:40
portmap_107=117:40
portmap_108=121:40
portmap_109=125:40
portmap_1=1:40
portmap_2=5:40
portmap_3=9:40
portmap_4=13:40
portmap_5=17:40
portmap_6=21:40
portmap_7=25:40
portmap_8=29:40
portmap_34=33:40
portmap_35=37:40
portmap_36=41:40
portmap_37=45:40
portmap_38=49:40
portmap_39=53:40
portmap_40=57:40
portmap_41=61:40
phy_xaui_tx_polarity_flip_xe0=0x8
phy_xaui_tx_polarity_flip_xe1=0x6
phy_xaui_tx_polarity_flip_xe2=0x6
phy_xaui_tx_polarity_flip_xe3=0x6
phy_xaui_tx_polarity_flip_xe4=0x3
phy_xaui_tx_polarity_flip_xe5=0x4
phy_xaui_tx_polarity_flip_xe6=0xc
phy_xaui_tx_polarity_flip_xe7=0x6
phy_xaui_tx_polarity_flip_xe8=0xc
phy_xaui_tx_polarity_flip_xe9=0x3
phy_xaui_tx_polarity_flip_xe10=0x3
phy_xaui_tx_polarity_flip_xe11=0x3
phy_xaui_tx_polarity_flip_xe12=0x4
phy_xaui_tx_polarity_flip_xe13=0x1
phy_xaui_tx_polarity_flip_xe14=0x2
phy_xaui_tx_polarity_flip_xe15=0x3
phy_xaui_tx_polarity_flip_xe16=0x2
phy_xaui_tx_polarity_flip_xe17=0x3
phy_xaui_tx_polarity_flip_xe18=0x2
phy_xaui_tx_polarity_flip_xe19=0x8
phy_xaui_tx_polarity_flip_xe20=0x2
phy_xaui_tx_polarity_flip_xe21=0x9
phy_xaui_tx_polarity_flip_xe22=0x8
phy_xaui_tx_polarity_flip_xe23=0x9
phy_xaui_tx_polarity_flip_xe24=0x2
phy_xaui_tx_polarity_flip_xe25=0x4
phy_xaui_tx_polarity_flip_xe26=0xd
phy_xaui_tx_polarity_flip_xe27=0xc
phy_xaui_tx_polarity_flip_xe28=0x3
phy_xaui_tx_polarity_flip_xe29=0xc
phy_xaui_tx_polarity_flip_xe30=0xc
phy_xaui_tx_polarity_flip_xe31=0x2
phy_xaui_rx_polarity_flip_xe0=0xb
phy_xaui_rx_polarity_flip_xe1=0xc
phy_xaui_rx_polarity_flip_xe2=0xc
phy_xaui_rx_polarity_flip_xe3=0xc
phy_xaui_rx_polarity_flip_xe4=0x1
phy_xaui_rx_polarity_flip_xe5=0xc
phy_xaui_rx_polarity_flip_xe6=0x4
phy_xaui_rx_polarity_flip_xe7=0xc
phy_xaui_rx_polarity_flip_xe8=0xb
phy_xaui_rx_polarity_flip_xe9=0x6
phy_xaui_rx_polarity_flip_xe10=0x1
phy_xaui_rx_polarity_flip_xe11=0x8
phy_xaui_rx_polarity_flip_xe12=0xc
phy_xaui_rx_polarity_flip_xe13=0x6
phy_xaui_rx_polarity_flip_xe14=0x4
phy_xaui_rx_polarity_flip_xe15=0xe
phy_xaui_rx_polarity_flip_xe16=0xe
phy_xaui_rx_polarity_flip_xe17=0x2
phy_xaui_rx_polarity_flip_xe18=0x4
phy_xaui_rx_polarity_flip_xe19=0x6
phy_xaui_rx_polarity_flip_xe20=0xe
phy_xaui_rx_polarity_flip_xe21=0x3
phy_xaui_rx_polarity_flip_xe22=0x3
phy_xaui_rx_polarity_flip_xe23=0x3
phy_xaui_rx_polarity_flip_xe24=0xb
phy_xaui_rx_polarity_flip_xe25=0xc
phy_xaui_rx_polarity_flip_xe26=0xe
phy_xaui_rx_polarity_flip_xe27=0xc
phy_xaui_rx_polarity_flip_xe28=0xb
phy_xaui_rx_polarity_flip_xe29=0x9
phy_xaui_rx_polarity_flip_xe30=0x6
phy_xaui_rx_polarity_flip_xe31=0x9
# EQ/iDriver
# 0 ~ 5
serdes_preemphasis_1=0x1E5200
serdes_preemphasis_2=0x1E5200
serdes_preemphasis_3=0x1E5200
serdes_preemphasis_4=0x1E5200
serdes_driver_current_1=0x000001
serdes_driver_current_2=0x000001
serdes_driver_current_3=0x000001
serdes_driver_current_4=0x000001
serdes_preemphasis_5=0x1E5200
serdes_preemphasis_6=0x1E5200
serdes_preemphasis_7=0x1E5200
serdes_preemphasis_8=0x1E5200
serdes_driver_current_5=0x000001
serdes_driver_current_6=0x000001
serdes_driver_current_7=0x000001
serdes_driver_current_8=0x000001
serdes_preemphasis_9=0x1E5200
serdes_preemphasis_10=0x1E5200
serdes_preemphasis_11=0x1E5200
serdes_preemphasis_12=0x1E5200
serdes_driver_current_9=0x000001
serdes_driver_current_10=0x000001
serdes_driver_current_11=0x000001
serdes_driver_current_12=0x000001
serdes_preemphasis_13=0x1E5200
serdes_preemphasis_14=0x1E5200
serdes_preemphasis_15=0x1E5200
serdes_preemphasis_16=0x1E5200
serdes_driver_current_13=0x000001
serdes_driver_current_14=0x000001
serdes_driver_current_15=0x000001
serdes_driver_current_16=0x000001
serdes_preemphasis_17=0x1E5200
serdes_preemphasis_18=0x1E5200
serdes_preemphasis_19=0x1E5200
serdes_preemphasis_20=0x1E5200
serdes_driver_current_17=0x000001
serdes_driver_current_18=0x000001
serdes_driver_current_19=0x000001
serdes_driver_current_20=0x000001
serdes_preemphasis_21=0x1E5200
serdes_preemphasis_22=0x1E5200
serdes_preemphasis_23=0x1E5200
serdes_preemphasis_24=0x1E5200
serdes_driver_current_21=0x000001
serdes_driver_current_22=0x000001
serdes_driver_current_23=0x000001
serdes_driver_current_24=0x000001
# 6 ~ 11
serdes_preemphasis_25=0x1A5600
serdes_preemphasis_26=0x1A5600
serdes_preemphasis_27=0x1A5600
serdes_preemphasis_28=0x1A5600
serdes_driver_current_25=0x000001
serdes_driver_current_26=0x000001
serdes_driver_current_27=0x000001
serdes_driver_current_28=0x000001
serdes_preemphasis_29=0x1A5600
serdes_preemphasis_30=0x1A5600
serdes_preemphasis_31=0x1A5600
serdes_preemphasis_32=0x1A5600
serdes_driver_current_29=0x000001
serdes_driver_current_30=0x000001
serdes_driver_current_31=0x000001
serdes_driver_current_32=0x000001
serdes_preemphasis_34=0x1A5600
serdes_preemphasis_35=0x1A5600
serdes_preemphasis_36=0x1A5600
serdes_preemphasis_37=0x1A5600
serdes_driver_current_34=0x000001
serdes_driver_current_35=0x000001
serdes_driver_current_36=0x000001
serdes_driver_current_37=0x000001
serdes_preemphasis_38=0x1A5600
serdes_preemphasis_39=0x1A5600
serdes_preemphasis_40=0x1A5600
serdes_preemphasis_41=0x1A5600
serdes_driver_current_38=0x000001
serdes_driver_current_39=0x000001
serdes_driver_current_40=0x000001
serdes_driver_current_41=0x000001
serdes_preemphasis_42=0x1A5600
serdes_preemphasis_43=0x1A5600
serdes_preemphasis_44=0x1A5600
serdes_preemphasis_45=0x1A5600
serdes_driver_current_42=0x000001
serdes_driver_current_43=0x000001
serdes_driver_current_44=0x000001
serdes_driver_current_45=0x000001
serdes_preemphasis_46=0x1A5600
serdes_preemphasis_47=0x1A5600
serdes_preemphasis_48=0x1A5600
serdes_preemphasis_49=0x1A5600
serdes_driver_current_46=0x000001
serdes_driver_current_47=0x000001
serdes_driver_current_48=0x000001
serdes_driver_current_49=0x000001
# 12 ~ 13
serdes_preemphasis_50=0x165A00
serdes_preemphasis_51=0x165A00
serdes_preemphasis_52=0x165A00
serdes_preemphasis_53=0x165A00
serdes_driver_current_50=0x000000
serdes_driver_current_51=0x000000
serdes_driver_current_52=0x000000
serdes_driver_current_53=0x000000
serdes_preemphasis_54=0x165A00
serdes_preemphasis_55=0x165A00
serdes_preemphasis_56=0x165A00
serdes_preemphasis_57=0x165A00
serdes_driver_current_54=0x000000
serdes_driver_current_55=0x000000
serdes_driver_current_56=0x000000
serdes_driver_current_57=0x000000
# 14 ~ 16
serdes_preemphasis_58=0x125E00
serdes_preemphasis_59=0x125E00
serdes_preemphasis_60=0x125E00
serdes_preemphasis_61=0x125E00
serdes_driver_current_58=0x000100
serdes_driver_current_59=0x000100
serdes_driver_current_60=0x000100
serdes_driver_current_61=0x000100
serdes_preemphasis_62=0x125E00
serdes_preemphasis_63=0x125E00
serdes_preemphasis_64=0x125E00
serdes_preemphasis_65=0x125E00
serdes_driver_current_62=0x000100
serdes_driver_current_63=0x000100
serdes_driver_current_64=0x000100
serdes_driver_current_65=0x000100
serdes_preemphasis_68=0x125E00
serdes_preemphasis_69=0x125E00
serdes_preemphasis_70=0x125E00
serdes_preemphasis_71=0x125E00
serdes_driver_current_68=0x000100
serdes_driver_current_69=0x000100
serdes_driver_current_70=0x000100
serdes_driver_current_71=0x000100
# 17 ~ 21
serdes_preemphasis_72=0x106000
serdes_preemphasis_73=0x106000
serdes_preemphasis_74=0x106000
serdes_preemphasis_75=0x106000
serdes_driver_current_72=0x000100
serdes_driver_current_73=0x000100
serdes_driver_current_74=0x000100
serdes_driver_current_75=0x000100
serdes_preemphasis_76=0x106000
serdes_preemphasis_77=0x106000
serdes_preemphasis_78=0x106000
serdes_preemphasis_79=0x106000
serdes_driver_current_76=0x000100
serdes_driver_current_77=0x000100
serdes_driver_current_78=0x000100
serdes_driver_current_79=0x000100
serdes_preemphasis_80=0x106000
serdes_preemphasis_81=0x106000
serdes_preemphasis_82=0x106000
serdes_preemphasis_83=0x106000
serdes_driver_current_80=0x000100
serdes_driver_current_81=0x000100
serdes_driver_current_82=0x000100
serdes_driver_current_83=0x000100
serdes_preemphasis_84=0x106000
serdes_preemphasis_85=0x106000
serdes_preemphasis_86=0x106000
serdes_preemphasis_87=0x106000
serdes_driver_current_84=0x000100
serdes_driver_current_85=0x000100
serdes_driver_current_86=0x000100
serdes_driver_current_87=0x000100
serdes_preemphasis_88=0x106000
serdes_preemphasis_89=0x106000
serdes_preemphasis_90=0x106000
serdes_preemphasis_91=0x106000
serdes_driver_current_88=0x000100
serdes_driver_current_89=0x000100
serdes_driver_current_90=0x000100
serdes_driver_current_91=0x000100
# 22 ~ 23
serdes_preemphasis_92=0x125E00
serdes_preemphasis_93=0x125E00
serdes_preemphasis_94=0x125E00
serdes_preemphasis_95=0x125E00
serdes_driver_current_92=0x000100
serdes_driver_current_93=0x000100
serdes_driver_current_94=0x000100
serdes_driver_current_95=0x000100
serdes_preemphasis_96=0x125E00
serdes_preemphasis_97=0x125E00
serdes_preemphasis_98=0x125E00
serdes_preemphasis_99=0x125E00
serdes_driver_current_96=0x000100
serdes_driver_current_97=0x000100
serdes_driver_current_98=0x000100
serdes_driver_current_99=0x000100
# 24 ~ 25
serdes_preemphasis_102=0x165A00
serdes_preemphasis_103=0x165A00
serdes_preemphasis_104=0x165A00
serdes_preemphasis_105=0x165A00
serdes_driver_current_102=0x000000
serdes_driver_current_103=0x000000
serdes_driver_current_104=0x000000
serdes_driver_current_105=0x000000
serdes_preemphasis_106=0x165A00
serdes_preemphasis_107=0x165A00
serdes_preemphasis_108=0x165A00
serdes_preemphasis_109=0x165A00
serdes_driver_current_106=0x000000
serdes_driver_current_107=0x000000
serdes_driver_current_108=0x000000
serdes_driver_current_109=0x000000
# 26 ~ 29
serdes_preemphasis_110=0x1A5600
serdes_preemphasis_111=0x1A5600
serdes_preemphasis_112=0x1A5600
serdes_preemphasis_113=0x1A5600
serdes_driver_current_110=0x000001
serdes_driver_current_111=0x000001
serdes_driver_current_112=0x000001
serdes_driver_current_113=0x000001
serdes_preemphasis_114=0x1A5600
serdes_preemphasis_115=0x1A5600
serdes_preemphasis_116=0x1A5600
serdes_preemphasis_117=0x1A5600
serdes_driver_current_114=0x000001
serdes_driver_current_115=0x000001
serdes_driver_current_116=0x000001
serdes_driver_current_117=0x000001
serdes_preemphasis_118=0x1A5600
serdes_preemphasis_119=0x1A5600
serdes_preemphasis_120=0x1A5600
serdes_preemphasis_121=0x1A5600
serdes_driver_current_118=0x000001
serdes_driver_current_119=0x000001
serdes_driver_current_120=0x000001
serdes_driver_current_121=0x000001
serdes_preemphasis_122=0x1A5600
serdes_preemphasis_123=0x1A5600
serdes_preemphasis_124=0x1A5600
serdes_preemphasis_125=0x1A5600
serdes_driver_current_122=0x000001
serdes_driver_current_123=0x000001
serdes_driver_current_124=0x000001
serdes_driver_current_125=0x000001
# 30 ~ 31
serdes_preemphasis_126=0x1E5200
serdes_preemphasis_127=0x1E5200
serdes_preemphasis_128=0x1E5200
serdes_preemphasis_129=0x1E5200
serdes_driver_current_126=0x000001
serdes_driver_current_127=0x000001
serdes_driver_current_128=0x000001
serdes_driver_current_129=0x000001
serdes_preemphasis_130=0x1E5200
serdes_preemphasis_131=0x1E5200
serdes_preemphasis_132=0x1E5200
serdes_preemphasis_133=0x1E5200
serdes_driver_current_130=0x000001
serdes_driver_current_131=0x000001
serdes_driver_current_132=0x000001
serdes_driver_current_133=0x000001

View File

@ -0,0 +1,136 @@
m CMIC_LEDUP0_PORT_ORDER_REMAP_0_3 REMAP_PORT_0=31
m CMIC_LEDUP0_PORT_ORDER_REMAP_0_3 REMAP_PORT_1=30
m CMIC_LEDUP0_PORT_ORDER_REMAP_0_3 REMAP_PORT_2=29
m CMIC_LEDUP0_PORT_ORDER_REMAP_0_3 REMAP_PORT_3=28
m CMIC_LEDUP0_PORT_ORDER_REMAP_4_7 REMAP_PORT_4=27
m CMIC_LEDUP0_PORT_ORDER_REMAP_4_7 REMAP_PORT_5=26
m CMIC_LEDUP0_PORT_ORDER_REMAP_4_7 REMAP_PORT_6=25
m CMIC_LEDUP0_PORT_ORDER_REMAP_4_7 REMAP_PORT_7=24
m CMIC_LEDUP0_PORT_ORDER_REMAP_8_11 REMAP_PORT_8=23
m CMIC_LEDUP0_PORT_ORDER_REMAP_8_11 REMAP_PORT_9=22
m CMIC_LEDUP0_PORT_ORDER_REMAP_8_11 REMAP_PORT_10=21
m CMIC_LEDUP0_PORT_ORDER_REMAP_8_11 REMAP_PORT_11=20
m CMIC_LEDUP0_PORT_ORDER_REMAP_12_15 REMAP_PORT_12=19
m CMIC_LEDUP0_PORT_ORDER_REMAP_12_15 REMAP_PORT_13=18
m CMIC_LEDUP0_PORT_ORDER_REMAP_12_15 REMAP_PORT_14=17
m CMIC_LEDUP0_PORT_ORDER_REMAP_12_15 REMAP_PORT_15=16
m CMIC_LEDUP0_PORT_ORDER_REMAP_16_19 REMAP_PORT_16=15
m CMIC_LEDUP0_PORT_ORDER_REMAP_16_19 REMAP_PORT_17=14
m CMIC_LEDUP0_PORT_ORDER_REMAP_16_19 REMAP_PORT_18=13
m CMIC_LEDUP0_PORT_ORDER_REMAP_16_19 REMAP_PORT_19=12
m CMIC_LEDUP0_PORT_ORDER_REMAP_20_23 REMAP_PORT_20=11
m CMIC_LEDUP0_PORT_ORDER_REMAP_20_23 REMAP_PORT_21=10
m CMIC_LEDUP0_PORT_ORDER_REMAP_20_23 REMAP_PORT_22=9
m CMIC_LEDUP0_PORT_ORDER_REMAP_20_23 REMAP_PORT_23=8
m CMIC_LEDUP0_PORT_ORDER_REMAP_24_27 REMAP_PORT_24=7
m CMIC_LEDUP0_PORT_ORDER_REMAP_24_27 REMAP_PORT_25=6
m CMIC_LEDUP0_PORT_ORDER_REMAP_24_27 REMAP_PORT_26=5
m CMIC_LEDUP0_PORT_ORDER_REMAP_24_27 REMAP_PORT_27=4
m CMIC_LEDUP0_PORT_ORDER_REMAP_28_31 REMAP_PORT_28=3
m CMIC_LEDUP0_PORT_ORDER_REMAP_28_31 REMAP_PORT_29=2
m CMIC_LEDUP0_PORT_ORDER_REMAP_28_31 REMAP_PORT_30=1
m CMIC_LEDUP0_PORT_ORDER_REMAP_28_31 REMAP_PORT_31=0
m CMIC_LEDUP0_PORT_ORDER_REMAP_32_35 REMAP_PORT_32=63
m CMIC_LEDUP0_PORT_ORDER_REMAP_32_35 REMAP_PORT_33=62
m CMIC_LEDUP0_PORT_ORDER_REMAP_32_35 REMAP_PORT_34=61
m CMIC_LEDUP0_PORT_ORDER_REMAP_32_35 REMAP_PORT_35=60
m CMIC_LEDUP0_PORT_ORDER_REMAP_36_39 REMAP_PORT_36=59
m CMIC_LEDUP0_PORT_ORDER_REMAP_36_39 REMAP_PORT_37=58
m CMIC_LEDUP0_PORT_ORDER_REMAP_36_39 REMAP_PORT_38=57
m CMIC_LEDUP0_PORT_ORDER_REMAP_36_39 REMAP_PORT_39=56
m CMIC_LEDUP0_PORT_ORDER_REMAP_40_43 REMAP_PORT_40=55
m CMIC_LEDUP0_PORT_ORDER_REMAP_40_43 REMAP_PORT_41=54
m CMIC_LEDUP0_PORT_ORDER_REMAP_40_43 REMAP_PORT_42=53
m CMIC_LEDUP0_PORT_ORDER_REMAP_40_43 REMAP_PORT_43=52
m CMIC_LEDUP0_PORT_ORDER_REMAP_44_47 REMAP_PORT_44=51
m CMIC_LEDUP0_PORT_ORDER_REMAP_44_47 REMAP_PORT_45=50
m CMIC_LEDUP0_PORT_ORDER_REMAP_44_47 REMAP_PORT_46=49
m CMIC_LEDUP0_PORT_ORDER_REMAP_44_47 REMAP_PORT_47=48
m CMIC_LEDUP0_PORT_ORDER_REMAP_48_51 REMAP_PORT_48=47
m CMIC_LEDUP0_PORT_ORDER_REMAP_48_51 REMAP_PORT_49=46
m CMIC_LEDUP0_PORT_ORDER_REMAP_48_51 REMAP_PORT_50=45
m CMIC_LEDUP0_PORT_ORDER_REMAP_48_51 REMAP_PORT_51=44
m CMIC_LEDUP0_PORT_ORDER_REMAP_52_55 REMAP_PORT_52=43
m CMIC_LEDUP0_PORT_ORDER_REMAP_52_55 REMAP_PORT_53=42
m CMIC_LEDUP0_PORT_ORDER_REMAP_52_55 REMAP_PORT_54=41
m CMIC_LEDUP0_PORT_ORDER_REMAP_52_55 REMAP_PORT_55=40
m CMIC_LEDUP0_PORT_ORDER_REMAP_56_59 REMAP_PORT_56=39
m CMIC_LEDUP0_PORT_ORDER_REMAP_56_59 REMAP_PORT_57=38
m CMIC_LEDUP0_PORT_ORDER_REMAP_56_59 REMAP_PORT_58=37
m CMIC_LEDUP0_PORT_ORDER_REMAP_56_59 REMAP_PORT_59=36
m CMIC_LEDUP0_PORT_ORDER_REMAP_60_63 REMAP_PORT_60=35
m CMIC_LEDUP0_PORT_ORDER_REMAP_60_63 REMAP_PORT_61=34
m CMIC_LEDUP0_PORT_ORDER_REMAP_60_63 REMAP_PORT_62=33
m CMIC_LEDUP0_PORT_ORDER_REMAP_60_63 REMAP_PORT_63=32
m CMIC_LEDUP1_PORT_ORDER_REMAP_0_3 REMAP_PORT_0=3
m CMIC_LEDUP1_PORT_ORDER_REMAP_0_3 REMAP_PORT_1=2
m CMIC_LEDUP1_PORT_ORDER_REMAP_0_3 REMAP_PORT_2=1
m CMIC_LEDUP1_PORT_ORDER_REMAP_0_3 REMAP_PORT_3=0
m CMIC_LEDUP1_PORT_ORDER_REMAP_4_7 REMAP_PORT_4=7
m CMIC_LEDUP1_PORT_ORDER_REMAP_4_7 REMAP_PORT_5=6
m CMIC_LEDUP1_PORT_ORDER_REMAP_4_7 REMAP_PORT_6=5
m CMIC_LEDUP1_PORT_ORDER_REMAP_4_7 REMAP_PORT_7=4
m CMIC_LEDUP1_PORT_ORDER_REMAP_8_11 REMAP_PORT_8=11
m CMIC_LEDUP1_PORT_ORDER_REMAP_8_11 REMAP_PORT_9=10
m CMIC_LEDUP1_PORT_ORDER_REMAP_8_11 REMAP_PORT_10=9
m CMIC_LEDUP1_PORT_ORDER_REMAP_8_11 REMAP_PORT_11=8
m CMIC_LEDUP1_PORT_ORDER_REMAP_12_15 REMAP_PORT_12=15
m CMIC_LEDUP1_PORT_ORDER_REMAP_12_15 REMAP_PORT_13=14
m CMIC_LEDUP1_PORT_ORDER_REMAP_12_15 REMAP_PORT_14=13
m CMIC_LEDUP1_PORT_ORDER_REMAP_12_15 REMAP_PORT_15=12
m CMIC_LEDUP1_PORT_ORDER_REMAP_16_19 REMAP_PORT_16=19
m CMIC_LEDUP1_PORT_ORDER_REMAP_16_19 REMAP_PORT_17=18
m CMIC_LEDUP1_PORT_ORDER_REMAP_16_19 REMAP_PORT_18=17
m CMIC_LEDUP1_PORT_ORDER_REMAP_16_19 REMAP_PORT_19=16
m CMIC_LEDUP1_PORT_ORDER_REMAP_20_23 REMAP_PORT_20=23
m CMIC_LEDUP1_PORT_ORDER_REMAP_20_23 REMAP_PORT_21=22
m CMIC_LEDUP1_PORT_ORDER_REMAP_20_23 REMAP_PORT_22=21
m CMIC_LEDUP1_PORT_ORDER_REMAP_20_23 REMAP_PORT_23=20
m CMIC_LEDUP1_PORT_ORDER_REMAP_24_27 REMAP_PORT_24=27
m CMIC_LEDUP1_PORT_ORDER_REMAP_24_27 REMAP_PORT_25=26
m CMIC_LEDUP1_PORT_ORDER_REMAP_24_27 REMAP_PORT_26=25
m CMIC_LEDUP1_PORT_ORDER_REMAP_24_27 REMAP_PORT_27=24
m CMIC_LEDUP1_PORT_ORDER_REMAP_28_31 REMAP_PORT_28=31
m CMIC_LEDUP1_PORT_ORDER_REMAP_28_31 REMAP_PORT_29=30
m CMIC_LEDUP1_PORT_ORDER_REMAP_28_31 REMAP_PORT_30=29
m CMIC_LEDUP1_PORT_ORDER_REMAP_28_31 REMAP_PORT_31=28
m CMIC_LEDUP1_PORT_ORDER_REMAP_32_35 REMAP_PORT_32=35
m CMIC_LEDUP1_PORT_ORDER_REMAP_32_35 REMAP_PORT_33=34
m CMIC_LEDUP1_PORT_ORDER_REMAP_32_35 REMAP_PORT_34=33
m CMIC_LEDUP1_PORT_ORDER_REMAP_32_35 REMAP_PORT_35=32
m CMIC_LEDUP1_PORT_ORDER_REMAP_36_39 REMAP_PORT_36=39
m CMIC_LEDUP1_PORT_ORDER_REMAP_36_39 REMAP_PORT_37=38
m CMIC_LEDUP1_PORT_ORDER_REMAP_36_39 REMAP_PORT_38=37
m CMIC_LEDUP1_PORT_ORDER_REMAP_36_39 REMAP_PORT_39=36
m CMIC_LEDUP1_PORT_ORDER_REMAP_40_43 REMAP_PORT_40=43
m CMIC_LEDUP1_PORT_ORDER_REMAP_40_43 REMAP_PORT_41=42
m CMIC_LEDUP1_PORT_ORDER_REMAP_40_43 REMAP_PORT_42=41
m CMIC_LEDUP1_PORT_ORDER_REMAP_40_43 REMAP_PORT_43=40
m CMIC_LEDUP1_PORT_ORDER_REMAP_44_47 REMAP_PORT_44=47
m CMIC_LEDUP1_PORT_ORDER_REMAP_44_47 REMAP_PORT_45=46
m CMIC_LEDUP1_PORT_ORDER_REMAP_44_47 REMAP_PORT_46=45
m CMIC_LEDUP1_PORT_ORDER_REMAP_44_47 REMAP_PORT_47=44
m CMIC_LEDUP1_PORT_ORDER_REMAP_48_51 REMAP_PORT_48=51
m CMIC_LEDUP1_PORT_ORDER_REMAP_48_51 REMAP_PORT_49=50
m CMIC_LEDUP1_PORT_ORDER_REMAP_48_51 REMAP_PORT_50=49
m CMIC_LEDUP1_PORT_ORDER_REMAP_48_51 REMAP_PORT_51=48
m CMIC_LEDUP1_PORT_ORDER_REMAP_52_55 REMAP_PORT_52=55
m CMIC_LEDUP1_PORT_ORDER_REMAP_52_55 REMAP_PORT_53=54
m CMIC_LEDUP1_PORT_ORDER_REMAP_52_55 REMAP_PORT_54=53
m CMIC_LEDUP1_PORT_ORDER_REMAP_52_55 REMAP_PORT_55=52
m CMIC_LEDUP1_PORT_ORDER_REMAP_56_59 REMAP_PORT_56=59
m CMIC_LEDUP1_PORT_ORDER_REMAP_56_59 REMAP_PORT_57=58
m CMIC_LEDUP1_PORT_ORDER_REMAP_56_59 REMAP_PORT_58=57
m CMIC_LEDUP1_PORT_ORDER_REMAP_56_59 REMAP_PORT_59=56
m CMIC_LEDUP1_PORT_ORDER_REMAP_60_63 REMAP_PORT_60=63
m CMIC_LEDUP1_PORT_ORDER_REMAP_60_63 REMAP_PORT_61=62
m CMIC_LEDUP1_PORT_ORDER_REMAP_60_63 REMAP_PORT_62=61
m CMIC_LEDUP1_PORT_ORDER_REMAP_60_63 REMAP_PORT_63=60
led 0 stop
led 0 prog 02 00 60 F1 12 00 DE F6 70 10 67 47 67 42 77 06 06 F2 60 F0 12 00 06 F0 4A 04 27 67 42 4A 03 27 67 42 4A 07 27 67 42 4A 00 27 67 42 DE F4 70 34 86 F0 77 16 12 00 DE F8 70 40 67 4A 67 42 77 36 3E F1 87 86 F1 81 57 17 27 57 07 27 57 00 00 00
led 0 start
led 1 stop
led 1 prog 02 00 60 F1 12 00 DE F6 70 10 67 47 67 42 77 06 06 F2 60 F0 12 00 06 F0 4A 04 27 67 42 4A 03 27 67 42 4A 07 27 67 42 4A 00 27 67 42 DE F4 70 34 86 F0 77 16 12 00 DE F8 70 40 67 4A 67 42 77 36 3E F1 87 86 F1 81 57 17 27 57 07 27 57 00 00 00
led 1 start

View File

@ -16,6 +16,8 @@ class SfpUtil(SfpUtilBase):
PORT_START = 0
PORT_END = 31
PORTS_IN_BLOCK = 32
QSFP_PORT_START = 0
QSFP_PORT_END = 31
_port_to_eeprom_mapping = {}
port_to_i2c_mapping = {
@ -61,6 +63,14 @@ class SfpUtil(SfpUtilBase):
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(0, self.PORTS_IN_BLOCK + 1)

View File

@ -1,2 +1,2 @@
SAI_INIT_CONFIG_FILE=/etc/bcm/th-d7054q28b-48x25g-6x100g.config.bcm
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th-d7054q28b-48x25g-6x100g.config.bcm
SAI_NUM_ECMP_MEMBERS=32

View File

@ -0,0 +1,465 @@
# Cypress BCM Shell config / 10G * 48 ports; 100G * 6 ports
# Define default OS / SAL
os=unix
l2_mem_entries=40960
l3_mem_entries=40960
fpem_mem_entries=32768
l2xmsg_mode=1
mem_cache_enable=0
parity_correction=0
parity_enable=0
## update the hex string based on case ID: 925941
## 1. type "phy info" then get each hg ports' number
## 2. Set these number as 1 in pbmp_xport_xe and pbmp_oversubscribe
## 130 xe ports, 4 * 32 + 2
## no more pbmp_oversubscribe
oversubscribe_mode=1
pbmp_xport_xe=0x3fffffffdffffffff7fffffffdfffffffe
# EagleCore ports: 36 & 49
portmap_66=129:10
portmap_100=131:10
# Loopback ports
portmap_33=132:10
portmap_67=133:10
portmap_101=134:10
portmap_135=135:10
# First 12*4 48 ports config for 10G
# Second 6 ports config for 100G
# For Tomahawk FalconCore:
# Physical ports in FalconCore[0 - 7] must map to logical port[1 - 32] at any order
# Physical ports in FalconCore[8 - 15] must map to logical port[34 - 65] at any order
# Physical ports in FalconCore[16 - 23] must map to logical port[68 - 99] at any order
# Physical ports in FalconCore[24 - 31] must map to logical port[102 - 133] at any order
## FalconCore[0,1,2,5]
portmap_1=2:10
portmap_2=1:10
portmap_3=4:10
portmap_4=3:10
portmap_5=6:10
portmap_6=5:10
portmap_7=8:10
portmap_8=7:10
portmap_9=10:10
portmap_10=9:10
portmap_11=12:10
portmap_12=11:10
# FC-05
portmap_13=22:10
portmap_14=21:10
portmap_15=24:10
portmap_16=23:10
## FalconCore[8, 9, 10, 12, 13]
portmap_34=34:10
portmap_35=33:10
portmap_36=36:10
portmap_37=35:10
portmap_38=38:10
portmap_39=37:10
portmap_40=40:10
portmap_41=39:10
portmap_42=42:10
portmap_43=41:10
portmap_44=44:10
portmap_45=43:10
# FC-12 & FC-13
portmap_46=50:10
portmap_47=49:10
portmap_48=52:10
portmap_49=51:10
portmap_50=54:10
portmap_51=53:10
portmap_52=56:10
portmap_53=55:10
## FalconCore[16, 17, 20]
portmap_68=66:10
portmap_69=65:10
portmap_70=68:10
portmap_71=67:10
portmap_72=70:10
portmap_73=69:10
portmap_74=72:10
portmap_75=71:10
# FC-20
portmap_76=82:10
portmap_77=81:10
portmap_78=84:10
portmap_79=83:10
# FC-21 (100G)
portmap_80=85:100
## FalconCore[24, 25, 26, 27, 29] (100G)
portmap_102=97:100
portmap_103=105:100
portmap_104=101:100
portmap_105=117:100
portmap_107=109:100
# FalconCore[0,1,2,5] ports TX polarity flip for 25G
# no polarity reversal
# FalconCore[8, 9, 10, 12, 13] ports TX polarity flip for 25G
# For Baidu xe20 & xe22; for GA xe21 & xe23
phy_xaui_tx_polarity_flip_xe20=1
phy_xaui_tx_polarity_flip_xe22=1
# FalconCore[16, 17, 20] ports TX polarity flip for 25G
# no polarity reversal
# FC-21 for 100G
# FalconCore[24, 25, 26, 27, 29] ports TX polarity flip for 100G
phy_xaui_tx_polarity_flip_ce1=0xf
phy_xaui_tx_polarity_flip_ce2=0xf
# FalconCore[0,1,2,5] ports RX polarity flip for 25G
# no polarity reversal
# FalconCore[8, 9, 10, 12, 13] ports RX polarity flip for 25G
# no polarity reversal
# FalconCore[16, 17, 20] ports RX polarity flip for 25G
# no polarity reversal
# FC-21 for 100G
# FalconCore[24, 25, 26, 27, 29] ports RX polarity flip for 100G
phy_xaui_rx_polarity_flip_ce2=0xf
## Lane swapping
## The HEX value is connection of red line within Falconcore in "Fig 3-4 SFP28 port connection"
# TX - Config A. (FC 0/1/2/16)
# 0x3210 - port 0-11, 36-39
xgxs_tx_lane_map_xe0=0x3210
xgxs_tx_lane_map_xe1=0x3210
xgxs_tx_lane_map_xe2=0x3210
xgxs_tx_lane_map_xe3=0x3210
xgxs_tx_lane_map_xe4=0x3210
xgxs_tx_lane_map_xe5=0x3210
xgxs_tx_lane_map_xe6=0x3210
xgxs_tx_lane_map_xe7=0x3210
xgxs_tx_lane_map_xe8=0x3210
xgxs_tx_lane_map_xe9=0x3210
xgxs_tx_lane_map_xe10=0x3210
xgxs_tx_lane_map_xe11=0x3210
xgxs_tx_lane_map_xe37=0x3210
xgxs_tx_lane_map_xe38=0x3210
xgxs_tx_lane_map_xe39=0x3210
xgxs_tx_lane_map_xe40=0x3210
# TX - Config B. (FC 5/9/20)
# 0x0123 - port 12-13, 20-23, 44-47
xgxs_tx_lane_map_xe12=0x0123
xgxs_tx_lane_map_xe13=0x0123
xgxs_tx_lane_map_xe14=0x0123
xgxs_tx_lane_map_xe15=0x0123
xgxs_tx_lane_map_xe20=0x0123
xgxs_tx_lane_map_xe21=0x0123
xgxs_tx_lane_map_xe22=0x0123
xgxs_tx_lane_map_xe23=0x0123
xgxs_tx_lane_map_xe45=0x0123
xgxs_tx_lane_map_xe46=0x0123
xgxs_tx_lane_map_xe47=0x0123
xgxs_tx_lane_map_xe48=0x0123
# TX - Config C. (FC 8/10)
# 0x3210 - port 16-19, 24-27
xgxs_tx_lane_map_xe16=0x3210
xgxs_tx_lane_map_xe17=0x3210
xgxs_tx_lane_map_xe18=0x3210
xgxs_tx_lane_map_xe19=0x3210
xgxs_tx_lane_map_xe24=0x3210
xgxs_tx_lane_map_xe25=0x3210
xgxs_tx_lane_map_xe26=0x3210
xgxs_tx_lane_map_xe27=0x3210
# TX - Config D. (FC 12/13/17)
# 0x0123 - port 28-35, 40-43
xgxs_tx_lane_map_xe28=0x0123
xgxs_tx_lane_map_xe29=0x0123
xgxs_tx_lane_map_xe30=0x0123
xgxs_tx_lane_map_xe31=0x0123
xgxs_tx_lane_map_xe32=0x0123
xgxs_tx_lane_map_xe33=0x0123
xgxs_tx_lane_map_xe34=0x0123
xgxs_tx_lane_map_xe35=0x0123
xgxs_tx_lane_map_xe41=0x0123
xgxs_tx_lane_map_xe42=0x0123
xgxs_tx_lane_map_xe43=0x0123
xgxs_tx_lane_map_xe44=0x0123
# RX - Config A. (FC 0/1/2/16)
# 0x1032 - port 0-11, 36-39
xgxs_rx_lane_map_xe0=0x1032
xgxs_rx_lane_map_xe1=0x1032
xgxs_rx_lane_map_xe2=0x1032
xgxs_rx_lane_map_xe3=0x1032
xgxs_rx_lane_map_xe4=0x1032
xgxs_rx_lane_map_xe5=0x1032
xgxs_rx_lane_map_xe6=0x1032
xgxs_rx_lane_map_xe7=0x1032
xgxs_rx_lane_map_xe8=0x1032
xgxs_rx_lane_map_xe9=0x1032
xgxs_rx_lane_map_xe10=0x1032
xgxs_rx_lane_map_xe11=0x1032
xgxs_rx_lane_map_xe37=0x1032
xgxs_rx_lane_map_xe38=0x1032
xgxs_rx_lane_map_xe39=0x1032
xgxs_rx_lane_map_xe40=0x1032
# RX - Config B. (FC 5/9/20)
# 0x1032 - port 12-13, 20-23, 44-47
xgxs_rx_lane_map_xe12=0x1032
xgxs_rx_lane_map_xe13=0x1032
xgxs_rx_lane_map_xe14=0x1032
xgxs_rx_lane_map_xe15=0x1032
xgxs_rx_lane_map_xe20=0x1032
xgxs_rx_lane_map_xe21=0x1032
xgxs_rx_lane_map_xe22=0x1032
xgxs_rx_lane_map_xe23=0x1032
xgxs_rx_lane_map_xe45=0x1032
xgxs_rx_lane_map_xe46=0x1032
xgxs_rx_lane_map_xe47=0x1032
xgxs_rx_lane_map_xe48=0x1032
# RX - Config C. (FC 8/10)
# 0x3210 - port 16-19, 24-27
xgxs_rx_lane_map_xe16=0x3210
xgxs_rx_lane_map_xe17=0x3210
xgxs_rx_lane_map_xe18=0x3210
xgxs_rx_lane_map_xe19=0x3210
xgxs_rx_lane_map_xe24=0x3210
xgxs_rx_lane_map_xe25=0x3210
xgxs_rx_lane_map_xe26=0x3210
xgxs_rx_lane_map_xe27=0x3210
# RX - Config D. (FC 12/13/17)
# 0x3210 - port 28-35, 40-43
xgxs_rx_lane_map_xe28=0x3210
xgxs_rx_lane_map_xe29=0x3210
xgxs_rx_lane_map_xe30=0x3210
xgxs_rx_lane_map_xe31=0x3210
xgxs_rx_lane_map_xe32=0x3210
xgxs_rx_lane_map_xe33=0x3210
xgxs_rx_lane_map_xe34=0x3210
xgxs_rx_lane_map_xe35=0x3210
xgxs_rx_lane_map_xe41=0x3210
xgxs_rx_lane_map_xe42=0x3210
xgxs_rx_lane_map_xe43=0x3210
xgxs_rx_lane_map_xe44=0x3210
## Lane swapping for QSFP28 (100G)
## The HEX value is connection of red line within Falconcore in "Fig 3-4 SFP28 port connection"
# TX - Config A. (FC 21/25)
# 0x3210 - port ce0, ce3
xgxs_tx_lane_map_ce0=0x3210
xgxs_tx_lane_map_ce3=0x3210
# TX - Config B. (FC 24)
# 0x3210 - port ce1
xgxs_tx_lane_map_ce1=0x3210
# TX - Config C. (FC 26)
# 0x3210 - port ce2
xgxs_tx_lane_map_ce2=0x3210
# TX - Config D. (FC 27)
# 0x3210 - ce5
xgxs_tx_lane_map_ce5=0x3210
# TX - Config E. (FC 29)
# 0x3210 - ce4
xgxs_tx_lane_map_ce4=0x3210
# RX - Config A. (FC 21/25)
# 0x1032 - port ce0, ce3
xgxs_rx_lane_map_ce0=0x1032
xgxs_rx_lane_map_ce3=0x1032
# RX - Config B. (FC 24)
# 0x1032 - port ce1
xgxs_rx_lane_map_ce1=0x1032
# RX - Config C. (FC 26)
# 0x2301 - port ce2
xgxs_rx_lane_map_ce2=0x2301
# RX - Config D. (FC 27)
# 0x2301 - ce5
xgxs_rx_lane_map_ce5=0x2301
# TX - Config E. (FC 29)
# 0x3210 - ce4
xgxs_rx_lane_map_ce4=0x3210
# EQ/iDriver
# The 1st 16 ports, xe0-xe15
serdes_preemphasis_1=0x1A5600
serdes_preemphasis_2=0x1A5600
serdes_preemphasis_3=0x1A5600
serdes_preemphasis_4=0x1A5600
serdes_preemphasis_5=0x1A5600
serdes_preemphasis_6=0x1A5600
serdes_preemphasis_7=0x185800
serdes_preemphasis_8=0x1A5600
serdes_preemphasis_9=0x185800
serdes_preemphasis_10=0x185800
serdes_preemphasis_11=0x165A00
serdes_preemphasis_12=0x185800
serdes_preemphasis_13=0x105F01
serdes_preemphasis_14=0x165A00
serdes_preemphasis_15=0x105F01
serdes_preemphasis_16=0x105F01
serdes_driver_current_1=0x000001
serdes_driver_current_2=0x000001
serdes_driver_current_3=0x000001
serdes_driver_current_4=0x000001
serdes_driver_current_5=0x000001
serdes_driver_current_6=0x000001
serdes_driver_current_7=0x000001
serdes_driver_current_8=0x000001
serdes_driver_current_9=0x000000
serdes_driver_current_10=0x000001
serdes_driver_current_11=0x000000
serdes_driver_current_12=0x000000
serdes_driver_current_13=0x000000
serdes_driver_current_14=0x000000
serdes_driver_current_15=0x000000
serdes_driver_current_16=0x000000
# The 2nd 20 ports, xe16-xe35
serdes_preemphasis_34=0x105F01
serdes_preemphasis_35=0x105F01
serdes_preemphasis_36=0x0E6002
serdes_preemphasis_37=0x0E6002
serdes_preemphasis_38=0x0E6002
serdes_preemphasis_39=0x0E6002
serdes_preemphasis_40=0x125B03
serdes_preemphasis_41=0x0E6002
serdes_preemphasis_42=0x125B03
serdes_preemphasis_43=0x125B03
serdes_preemphasis_44=0x125B03
serdes_preemphasis_45=0x125B03
serdes_preemphasis_46=0x125B03
serdes_preemphasis_47=0x125B03
serdes_preemphasis_48=0x125B03
serdes_preemphasis_49=0x125B03
serdes_preemphasis_50=0x125B03
serdes_preemphasis_51=0x125B03
serdes_preemphasis_52=0x125B03
serdes_preemphasis_53=0x125B03
serdes_driver_current_34=0x000000
serdes_driver_current_35=0x000000
serdes_driver_current_36=0x000000
serdes_driver_current_37=0x000000
serdes_driver_current_38=0x000000
serdes_driver_current_39=0x000000
serdes_driver_current_40=0x000000
serdes_driver_current_41=0x000000
serdes_driver_current_42=0x000000
serdes_driver_current_43=0x000000
serdes_driver_current_44=0x000000
serdes_driver_current_45=0x000000
serdes_driver_current_46=0x000000
serdes_driver_current_47=0x000000
serdes_driver_current_48=0x000000
serdes_driver_current_49=0x000000
serdes_driver_current_50=0x000000
serdes_driver_current_51=0x000000
serdes_driver_current_52=0x000000
serdes_driver_current_53=0x000000
# The 3rd 12 ports, xe36-xe47
serdes_preemphasis_68=0x125B03
serdes_preemphasis_69=0x125B03
serdes_preemphasis_70=0x125B03
serdes_preemphasis_71=0x125B03
serdes_preemphasis_72=0x125B03
serdes_preemphasis_73=0x125B03
serdes_preemphasis_74=0x125B03
serdes_preemphasis_75=0x125B03
serdes_preemphasis_76=0x105F01
serdes_preemphasis_77=0x105F01
serdes_preemphasis_78=0x105F01
serdes_preemphasis_79=0x105F01
serdes_driver_current_68=0x000000
serdes_driver_current_69=0x000000
serdes_driver_current_70=0x000000
serdes_driver_current_71=0x000000
serdes_driver_current_72=0x000000
serdes_driver_current_73=0x000000
serdes_driver_current_74=0x000000
serdes_driver_current_75=0x000000
serdes_driver_current_76=0x000000
serdes_driver_current_77=0x000000
serdes_driver_current_78=0x000000
serdes_driver_current_79=0x000000
# 6 x 100G ports, expandable to 24 x 25G ports
serdes_preemphasis_80=0x2D4300
serdes_preemphasis_81=0x2D4300
serdes_preemphasis_82=0x2D4300
serdes_preemphasis_83=0x2D4300
serdes_preemphasis_102=0x304000
serdes_preemphasis_103=0x304000
serdes_preemphasis_104=0x304000
serdes_preemphasis_105=0x304000
serdes_preemphasis_106=0x304000
serdes_preemphasis_107=0x304000
serdes_preemphasis_108=0x304000
serdes_preemphasis_109=0x304000
serdes_preemphasis_110=0x304000
serdes_preemphasis_111=0x304000
serdes_preemphasis_112=0x304000
serdes_preemphasis_113=0x304000
serdes_preemphasis_114=0x2E360C
serdes_preemphasis_115=0x2E360C
serdes_preemphasis_116=0x2E360C
serdes_preemphasis_117=0x2E360C
serdes_preemphasis_118=0x2E360C
serdes_preemphasis_119=0x2E360C
serdes_preemphasis_120=0x2E360C
serdes_preemphasis_121=0x2E360C

View File

@ -0,0 +1,414 @@
# Cypress BCM Shell config / 25G * 48 ports; 100G * 6 ports
# Define default OS / SAL
os=unix
l2_mem_entries=40960
l3_mem_entries=40960
fpem_mem_entries=32768
l2xmsg_mode=1
mem_cache_enable=0
parity_correction=0
parity_enable=0
## update the hex string based on case ID: 925941
## 1. type "phy info" then get each hg ports' number
## 2. Set these number as 1 in pbmp_xport_xe and pbmp_oversubscribe
## 130 xe ports, 4 * 32 + 2
## no more pbmp_oversubscribe
oversubscribe_mode=1
pbmp_xport_xe=0x3fffffffdffffffff7fffffffdfffffffe
# EagleCore ports: 36 & 49
portmap_66=129:10
portmap_100=131:10
# Loopback ports
portmap_33=132:10
portmap_67=133:10
portmap_101=134:10
portmap_135=135:10
# First 12*4 48 ports config for 25G
# Second 6 ports config for 100G
# For Tomahawk FalconCore:
# Physical ports in FalconCore[0 - 7] must map to logical port[1 - 32] at any order
# Physical ports in FalconCore[8 - 15] must map to logical port[34 - 65] at any order
# Physical ports in FalconCore[16 - 23] must map to logical port[68 - 99] at any order
# Physical ports in FalconCore[24 - 31] must map to logical port[102 - 133] at any order
## FalconCore[0,1,2,5]
portmap_1=2:25
portmap_2=1:25
portmap_3=4:25
portmap_4=3:25
portmap_5=6:25
portmap_6=5:25
portmap_7=8:25
portmap_8=7:25
portmap_9=10:25
portmap_10=9:25
portmap_11=12:25
portmap_12=11:25
# FC-05
portmap_13=22:25
portmap_14=21:25
portmap_15=24:25
portmap_16=23:25
## FalconCore[8, 9, 10, 12, 13]
portmap_34=34:25
portmap_35=33:25
portmap_36=36:25
portmap_37=35:25
portmap_38=38:25
portmap_39=37:25
portmap_40=40:25
portmap_41=39:25
portmap_42=42:25
portmap_43=41:25
portmap_44=44:25
portmap_45=43:25
# FC-12 & FC-13
portmap_46=50:25
portmap_47=49:25
portmap_48=52:25
portmap_49=51:25
portmap_50=54:25
portmap_51=53:25
portmap_52=56:25
portmap_53=55:25
## FalconCore[16, 17, 20]
portmap_68=66:25
portmap_69=65:25
portmap_70=68:25
portmap_71=67:25
portmap_72=70:25
portmap_73=69:25
portmap_74=72:25
portmap_75=71:25
# FC-20
portmap_76=82:25
portmap_77=81:25
portmap_78=84:25
portmap_79=83:25
# FC-21 (100G)
portmap_80=85:100
## FalconCore[24, 25, 26, 27, 29] (100G)
portmap_102=97:100
portmap_103=105:100
portmap_104=101:100
portmap_105=117:100
portmap_107=109:100
# FalconCore[0,1,2,5] ports TX polarity flip for 25G
# no polarity reversal
# FalconCore[8, 9, 10, 12, 13] ports TX polarity flip for 25G
# For Baidu xe20 & xe22; for GA xe21 & xe23
phy_xaui_tx_polarity_flip_xe20=1
phy_xaui_tx_polarity_flip_xe22=1
# FalconCore[16, 17, 20] ports TX polarity flip for 25G
# no polarity reversal
# FC-21 for 100G
# FalconCore[24, 25, 26, 27, 29] ports TX polarity flip for 100G
phy_xaui_tx_polarity_flip_ce1=0xf
phy_xaui_tx_polarity_flip_ce2=0xf
# FalconCore[0,1,2,5] ports RX polarity flip for 25G
# no polarity reversal
# FalconCore[8, 9, 10, 12, 13] ports RX polarity flip for 25G
# no polarity reversal
# FalconCore[16, 17, 20] ports RX polarity flip for 25G
# no polarity reversal
# FC-21 for 100G
# FalconCore[24, 25, 26, 27, 29] ports RX polarity flip for 100G
phy_xaui_rx_polarity_flip_ce2=0xf
## Lane swapping
## The HEX value is connection of red line within Falconcore in "Fig 3-4 SFP28 port connection"
# TX - Config A. (FC 0/1/2/16)
# 0x3210 - port 0-11, 36-39
xgxs_tx_lane_map_xe0=0x3210
xgxs_tx_lane_map_xe1=0x3210
xgxs_tx_lane_map_xe2=0x3210
xgxs_tx_lane_map_xe3=0x3210
xgxs_tx_lane_map_xe4=0x3210
xgxs_tx_lane_map_xe5=0x3210
xgxs_tx_lane_map_xe6=0x3210
xgxs_tx_lane_map_xe7=0x3210
xgxs_tx_lane_map_xe8=0x3210
xgxs_tx_lane_map_xe9=0x3210
xgxs_tx_lane_map_xe10=0x3210
xgxs_tx_lane_map_xe11=0x3210
xgxs_tx_lane_map_xe37=0x3210
xgxs_tx_lane_map_xe38=0x3210
xgxs_tx_lane_map_xe39=0x3210
xgxs_tx_lane_map_xe40=0x3210
# TX - Config B. (FC 5/9/20)
# 0x0123 - port 12-13, 20-23, 44-47
xgxs_tx_lane_map_xe12=0x0123
xgxs_tx_lane_map_xe13=0x0123
xgxs_tx_lane_map_xe14=0x0123
xgxs_tx_lane_map_xe15=0x0123
xgxs_tx_lane_map_xe20=0x0123
xgxs_tx_lane_map_xe21=0x0123
xgxs_tx_lane_map_xe22=0x0123
xgxs_tx_lane_map_xe23=0x0123
xgxs_tx_lane_map_xe45=0x0123
xgxs_tx_lane_map_xe46=0x0123
xgxs_tx_lane_map_xe47=0x0123
xgxs_tx_lane_map_xe48=0x0123
# TX - Config C. (FC 8/10)
# 0x3210 - port 16-19, 24-27
xgxs_tx_lane_map_xe16=0x3210
xgxs_tx_lane_map_xe17=0x3210
xgxs_tx_lane_map_xe18=0x3210
xgxs_tx_lane_map_xe19=0x3210
xgxs_tx_lane_map_xe24=0x3210
xgxs_tx_lane_map_xe25=0x3210
xgxs_tx_lane_map_xe26=0x3210
xgxs_tx_lane_map_xe27=0x3210
# TX - Config D. (FC 12/13/17)
# 0x0123 - port 28-35, 40-43
xgxs_tx_lane_map_xe28=0x0123
xgxs_tx_lane_map_xe29=0x0123
xgxs_tx_lane_map_xe30=0x0123
xgxs_tx_lane_map_xe31=0x0123
xgxs_tx_lane_map_xe32=0x0123
xgxs_tx_lane_map_xe33=0x0123
xgxs_tx_lane_map_xe34=0x0123
xgxs_tx_lane_map_xe35=0x0123
xgxs_tx_lane_map_xe41=0x0123
xgxs_tx_lane_map_xe42=0x0123
xgxs_tx_lane_map_xe43=0x0123
xgxs_tx_lane_map_xe44=0x0123
# RX - Config A. (FC 0/1/2/16)
# 0x1032 - port 0-11, 36-39
xgxs_rx_lane_map_xe0=0x1032
xgxs_rx_lane_map_xe1=0x1032
xgxs_rx_lane_map_xe2=0x1032
xgxs_rx_lane_map_xe3=0x1032
xgxs_rx_lane_map_xe4=0x1032
xgxs_rx_lane_map_xe5=0x1032
xgxs_rx_lane_map_xe6=0x1032
xgxs_rx_lane_map_xe7=0x1032
xgxs_rx_lane_map_xe8=0x1032
xgxs_rx_lane_map_xe9=0x1032
xgxs_rx_lane_map_xe10=0x1032
xgxs_rx_lane_map_xe11=0x1032
xgxs_rx_lane_map_xe37=0x1032
xgxs_rx_lane_map_xe38=0x1032
xgxs_rx_lane_map_xe39=0x1032
xgxs_rx_lane_map_xe40=0x1032
# RX - Config B. (FC 5/9/20)
# 0x1032 - port 12-13, 20-23, 44-47
xgxs_rx_lane_map_xe12=0x1032
xgxs_rx_lane_map_xe13=0x1032
xgxs_rx_lane_map_xe14=0x1032
xgxs_rx_lane_map_xe15=0x1032
xgxs_rx_lane_map_xe20=0x1032
xgxs_rx_lane_map_xe21=0x1032
xgxs_rx_lane_map_xe22=0x1032
xgxs_rx_lane_map_xe23=0x1032
xgxs_rx_lane_map_xe45=0x1032
xgxs_rx_lane_map_xe46=0x1032
xgxs_rx_lane_map_xe47=0x1032
xgxs_rx_lane_map_xe48=0x1032
# RX - Config C. (FC 8/10)
# 0x3210 - port 16-19, 24-27
xgxs_rx_lane_map_xe16=0x3210
xgxs_rx_lane_map_xe17=0x3210
xgxs_rx_lane_map_xe18=0x3210
xgxs_rx_lane_map_xe19=0x3210
xgxs_rx_lane_map_xe24=0x3210
xgxs_rx_lane_map_xe25=0x3210
xgxs_rx_lane_map_xe26=0x3210
xgxs_rx_lane_map_xe27=0x3210
# RX - Config D. (FC 12/13/17)
# 0x3210 - port 28-35, 40-43
xgxs_rx_lane_map_xe28=0x3210
xgxs_rx_lane_map_xe29=0x3210
xgxs_rx_lane_map_xe30=0x3210
xgxs_rx_lane_map_xe31=0x3210
xgxs_rx_lane_map_xe32=0x3210
xgxs_rx_lane_map_xe33=0x3210
xgxs_rx_lane_map_xe34=0x3210
xgxs_rx_lane_map_xe35=0x3210
xgxs_rx_lane_map_xe41=0x3210
xgxs_rx_lane_map_xe42=0x3210
xgxs_rx_lane_map_xe43=0x3210
xgxs_rx_lane_map_xe44=0x3210
## Lane swapping for QSFP28 (100G)
## The HEX value is connection of red line within Falconcore in "Fig 3-4 SFP28 port connection"
# TX - Config A. (FC 21/25)
# 0x3210 - port ce0, ce3
xgxs_tx_lane_map_ce0=0x3210
xgxs_tx_lane_map_ce3=0x3210
# TX - Config B. (FC 24)
# 0x3210 - port ce1
xgxs_tx_lane_map_ce1=0x3210
# TX - Config C. (FC 26)
# 0x3210 - port ce2
xgxs_tx_lane_map_ce2=0x3210
# TX - Config D. (FC 27)
# 0x3210 - ce5
xgxs_tx_lane_map_ce5=0x3210
# TX - Config E. (FC 29)
# 0x3210 - ce4
xgxs_tx_lane_map_ce4=0x3210
# RX - Config A. (FC 21/25)
# 0x1032 - port ce0, ce3
xgxs_rx_lane_map_ce0=0x1032
xgxs_rx_lane_map_ce3=0x1032
# RX - Config B. (FC 24)
# 0x1032 - port ce1
xgxs_rx_lane_map_ce1=0x1032
# RX - Config C. (FC 26)
# 0x2301 - port ce2
xgxs_rx_lane_map_ce2=0x2301
# RX - Config D. (FC 27)
# 0x2301 - ce5
xgxs_rx_lane_map_ce5=0x2301
# TX - Config E. (FC 29)
# 0x3210 - ce4
xgxs_rx_lane_map_ce4=0x3210
# EQ/iDriver
# The first 16 ports, xe0-xe15
serdes_preemphasis_1=0x2E380A
serdes_preemphasis_2=0x2E380A
serdes_preemphasis_3=0x2E380A
serdes_preemphasis_4=0x2E380A
serdes_preemphasis_5=0x2C3A0A
serdes_preemphasis_6=0x2C3A0A
serdes_preemphasis_7=0x2C3A0A
serdes_preemphasis_8=0x2C3A0A
serdes_preemphasis_9=0x323E00
serdes_preemphasis_10=0x323E00
serdes_preemphasis_11=0x304000
serdes_preemphasis_12=0x304000
serdes_preemphasis_13=0x2D4300
serdes_preemphasis_14=0x304000
serdes_preemphasis_15=0x2D4300
serdes_preemphasis_16=0x2D4300
# The 2nd 20 ports, xe16-xe35
serdes_preemphasis_34=0x2D4300
serdes_preemphasis_35=0x2D4300
serdes_preemphasis_36=0x2B4500
serdes_preemphasis_37=0x2B4500
serdes_preemphasis_38=0x2B4500
serdes_preemphasis_39=0x2B4500
serdes_preemphasis_40=0x2B4500
serdes_preemphasis_41=0x2B4500
serdes_preemphasis_42=0x2B4500
serdes_preemphasis_43=0x2B4500
serdes_preemphasis_44=0x284800
serdes_preemphasis_45=0x284800
serdes_preemphasis_46=0x284800
serdes_preemphasis_47=0x284800
serdes_preemphasis_48=0x284800
serdes_preemphasis_49=0x284800
serdes_preemphasis_50=0x2B4500
serdes_preemphasis_51=0x2B4500
serdes_preemphasis_52=0x284800
serdes_preemphasis_53=0x284800
# The 3rd 12 ports, xe36-xe47
serdes_preemphasis_68=0x284800
serdes_preemphasis_69=0x2A4600
serdes_preemphasis_70=0x2B4500
serdes_preemphasis_71=0x2A4600
serdes_preemphasis_72=0x2A4600
serdes_preemphasis_73=0x2B4500
serdes_preemphasis_74=0x2B4500
serdes_preemphasis_75=0x2A4600
serdes_preemphasis_76=0x2B4500
serdes_preemphasis_77=0x2B4500
serdes_preemphasis_78=0x2B4500
serdes_preemphasis_79=0x2B4500
# 6 x 100G ports, expandable to 24 x 25G ports
serdes_preemphasis_80=0x2D4300
serdes_preemphasis_81=0x2D4300
serdes_preemphasis_82=0x2D4300
serdes_preemphasis_83=0x2D4300
serdes_preemphasis_102=0x304000
serdes_preemphasis_103=0x304000
serdes_preemphasis_104=0x304000
serdes_preemphasis_105=0x304000
serdes_preemphasis_106=0x304000
serdes_preemphasis_107=0x304000
serdes_preemphasis_108=0x304000
serdes_preemphasis_109=0x304000
serdes_preemphasis_110=0x304000
serdes_preemphasis_111=0x304000
serdes_preemphasis_112=0x304000
serdes_preemphasis_113=0x304000
serdes_preemphasis_114=0x2E360C
serdes_preemphasis_115=0x2E360C
serdes_preemphasis_116=0x2E360C
serdes_preemphasis_117=0x2E360C
serdes_preemphasis_118=0x2E360C
serdes_preemphasis_119=0x2E360C
serdes_preemphasis_120=0x2E360C
serdes_preemphasis_121=0x2E360C

View File

@ -0,0 +1,314 @@
#!/usr/bin/env python
#
import os
import time
import syslog
import re
from sonic_sfp.bcmshell import bcmshell
# =====================================================================
# global variable init
# =====================================================================
# define data ram address
PORT_DATA_OFFSET_ADDR = 0xA0
PORT_DATA_START_ADDR = 0xF2
TOTAL_SCAN_BITS_ADDR = 0xF4
SYNC_START_LEN_ADDR = 0xF6
SYNC_STOP_LEN_ADDR = 0xF8
# bit streaming rule for CPLD decode
TOTAL_SCAN_BITS = None
SYNC_S = None
SYNC_P = None
# define port data for bit streaming
BIT_LINK = None
BIT_FAULT = None
BIT_TX = None
BIT_RX = None
BIT_SPEED0 = None
BIT_SPEED1 = None
# define port speed
SPEED_100G = 100
SPEED_40G = 40
SPEED_25G = 25
SPEED_10G = 10
# the amount of LED processor
AMOUNT_LED_UP = None
# define board type
INV_REDWOOD = "SONiC-Inventec-d7032-100"
INV_CYPRESS = "SONiC-Inventec-d7054"
INV_SEQUOIA = ""
BOARD_TPYE = ""
EAGLE_CORE = []
PORT_LIST = []
# port status that is auto update by chip in data ram
# there are two byte to indicate each port status
'''
RX equ 0x0 ; received packet
TX equ 0x1 ; transmitted packet
COLL equ 0x2 ; collision indicator
SPEED_C equ 0x3 ; 100 Mbps
SPEED_M equ 0x4 ; 1000 Mbps
DUPLEX equ 0x5 ; half/full duplex
FLOW equ 0x6 ; flow control capable
LINKUP equ 0x7 ; link down/up status
LINKEN equ 0x8 ; link disabled/enabled status
ZERO equ 0xE ; always 0
ONE equ 0xF ; always 1
'''
STATUS_ENABLE = 1<<0
STATUS_RX = 1<<0
STATUS_TX = 1<<1
# object is to execute bcm shell command
BCM_SHELL = None
# =====================================================================
# class object
# =====================================================================
class Led():
up = None
pfw = None
def __init__(self, led_number, program_fw):
self.up = led_number
self.pfw = program_fw
def led_start(self):
BCM_SHELL.cmd("led {0} start".format(self.up))
syslog.syslog(syslog.LOG_INFO, "Start Led({0})".format(self.up))
def led_stop(self):
BCM_SHELL.cmd("led {0} stop".format(self.up))
syslog.syslog(syslog.LOG_INFO, "Stop Led({0})".format(self.up))
def load_prog(self):
BCM_SHELL.cmd("led {0} prog {1}".format(self.up, self.pfw))
syslog.syslog(syslog.LOG_INFO, "Load Led({0}) program firmware".format(self.up))
def write_port_data(self, addr, data):
BCM_SHELL.cmd("setreg CMIC_LEDUP{0}_DATA_RAM({1}) {2}".format(self.up, addr, data))
#syslog.syslog(syslog.LOG_DEBUG, "Write Led({0}) data_ram({1}): {2}".format(self.up, addr, data))
def read_data_ram(self, offset):
return_string = BCM_SHELL.run("getreg CMIC_LEDUP{0}_DATA_RAM({1})".format(self.up, offset))
for line in return_string.split("\n"):
re_obj = re.search(r"\<DATA\=(?P<data>.+)\>",line)
if re_obj is not None:
#syslog.syslog(syslog.LOG_DEBUG, "Read Led({0}) data_ram({1}): {2}".format(self.up, offset, re_obj.group("data")))
return int(re_obj.group("data"), 16)
return None
# =====================================================================
# Function
# =====================================================================
def _remap_registers():
fp = open('/usr/share/sonic/device/x86_64-inventec_d7032q28b-r0/led_proc_init.soc', "r")
content = fp.readlines()
fp.close()
err = False
for line in content:
try:
BCM_SHELL.cmd(line.rstrip())
except Exception, e:
err = True
syslog.syslog(syslog.LOG_ERR, "remap register abnormal: {0}".format(str(e)))
if not err:
pass
#syslog.syslog(syslog.LOG_DEBUG, "remap Led registers successfully")
def _update_port_list():
global PORT_LIST
PORT_LIST = []
number = 0
count = 0
content = BCM_SHELL.run("ps")
for line in content.split("\n"):
re_obj = re.search(r"(?P<port_name>(xe|ce)\d+)\(\s*(?P<bcm_id>\d+)\)\s+(?P<link>(up|down|!ena)).+\s+(?P<speed>\d+)G",line)
if re_obj is not None:
if int(re_obj.group("bcm_id")) not in EAGLE_CORE:
PORT_LIST.append({"port_id":number, "name":re_obj.group("port_name"), "bcm_id":int(re_obj.group("bcm_id")), "link":re_obj.group("link"), "speed":int(re_obj.group("speed"))})
number += 1
content = BCM_SHELL.run("led status")
for line in content.split("\n"):
re_obj = re.search(r"(?P<bcm_id>\d+).+(?P<led_up>\d)\:(?P<offset>\d+)",line)
if re_obj is not None:
if int(re_obj.group("bcm_id")) not in EAGLE_CORE:
PORT_LIST[count]["led_up"] = int(re_obj.group("led_up"))
PORT_LIST[count]["offset"] = int(re_obj.group("offset"))
count += 1
if number is not count:
PORT_LIST = []
syslog.syslog(syslog.LOG_ERR, "The amount of port is not match")
else:
pass
#syslog.syslog(syslog.LOG_DEBUG, "update port list successfully")
def _lookup_led_index(p):
index = 0
for port in PORT_LIST:
if p["bcm_id"] == port["bcm_id"]:
break
if p["led_up"] == port["led_up"]:
index += 1
return index + PORT_DATA_OFFSET_ADDR
def _led_init():
global BOARD_TPYE
global AMOUNT_LED_UP
global BIT_LINK
global BIT_FAULT
global BIT_TX
global BIT_RX
global BIT_SPEED0
global BIT_SPEED1
global EAGLE_CORE
global TOTAL_SCAN_BITS
global SYNC_S
global SYNC_P
cmd = "uname -n"
platform = os.popen(cmd).read()
if platform.rstrip() == INV_REDWOOD:
BOARD_TPYE = "inventec_d7032q28b"
AMOUNT_LED_UP = 2
BIT_RX = 1<<0 #0x01
BIT_TX = 1<<1 #0x02
BIT_SPEED0 = 1<<3 #0x08
BIT_SPEED1 = 1<<4 #0x10
BIT_FAULT = 1<<6 #0x40
BIT_LINK = 1<<7 #0x80
TOTAL_SCAN_BITS = 32*1*4
SYNC_S = 15
SYNC_P = 3
EAGLE_CORE = [66, 100]
_remap_registers()
elif platform.rstrip() == INV_CYPRESS:
BOARD_TPYE = "inventec_d7054q28b"
AMOUNT_LED_UP = 2
BIT_LINK = 1<<0 #0x01
BIT_FAULT = 1<<1 #0x02
BIT_SPEED0 = 1<<2 #0x04
EAGLE_CORE = [66, 100]
elif platform.rstrip() == INV_SEQUOIA:
BOARD_TPYE = "inventec_d7264q28b"
AMOUNT_LED_UP = 4
else:
BOARD_TPYE = "not found"
syslog.syslog(syslog.LOG_INFO, "Device: {0}".format(BOARD_TPYE))
#syslog.syslog(syslog.LOG_DEBUG, "led_amount: {0}".format(AMOUNT_LED_UP))
if __name__ == "__main__":
waitSyncd = True
retryCount = 0
syslog.openlog("led_proc", syslog.LOG_PID, facility=syslog.LOG_DAEMON)
while waitSyncd:
try:
BCM_SHELL = bcmshell()
waitSyncd = False
except Exception, e:
syslog.syslog(syslog.LOG_WARNING, "{0}, Retry times({1})".format(str(e),retryCount))
retryCount += 1
time.sleep(5)
_led_init()
led_obj = []
for idx in range(AMOUNT_LED_UP):
led_obj.append(Led(idx, ""))
#syslog.syslog(syslog.LOG_DEBUG, "create object led({0}) successfully".format(idx))
if BOARD_TPYE == "inventec_d7032q28b":
led_obj[idx].write_port_data(PORT_DATA_START_ADDR, PORT_DATA_OFFSET_ADDR)
led_obj[idx].write_port_data(TOTAL_SCAN_BITS_ADDR, TOTAL_SCAN_BITS)
led_obj[idx].write_port_data(SYNC_START_LEN_ADDR, SYNC_S)
led_obj[idx].write_port_data(SYNC_STOP_LEN_ADDR, SYNC_P)
reset_sec = 2
count_down = 0
queue_active = []
port_data = None
while True:
if count_down == 0:
queue_active = []
_update_port_list()
for port in PORT_LIST:
if port["link"] == "up":
queue_active.append(port)
else:
port_data = 0
# redwood bit streaming for CPLD decode is only use led up0
led_obj[0].write_port_data(PORT_DATA_OFFSET_ADDR + port["port_id"], port_data)
count_down = reset_sec
else:
for port in queue_active:
port_data = 0
if BOARD_TPYE == "inventec_d7032q28b":
port_data |= BIT_LINK
addr = 2*(port["offset"]-1)
byte1 = led_obj[port["led_up"]].read_data_ram(addr)
byte2 = led_obj[port["led_up"]].read_data_ram(addr+1)
if byte1&STATUS_RX:
port_data |= BIT_RX
if byte1&STATUS_TX:
port_data |= BIT_TX
if port["speed"] == SPEED_100G:
port_data |= BIT_SPEED0
port_data |= BIT_SPEED1
elif port["speed"] == SPEED_40G:
port_data |= BIT_SPEED1
elif port["speed"] == SPEED_25G:
port_data |= BIT_SPEED0
else:
pass
# redwood bit streaming for CPLD decode is only use led up0
led_obj[0].write_port_data(PORT_DATA_OFFSET_ADDR + port["port_id"], port_data)
continue
elif BOARD_TPYE == "inventec_d7054q28b":
if port["speed"] != SPEED_100G and port["speed"] != SPEED_25G:
port_data |= BIT_SPEED0
led_index = _lookup_led_index(port)
led_obj[port["led_up"]].write_port_data(led_index, port_data)
time.sleep(0.5)
count_down -= 1
syslog.closelog()

View File

@ -0,0 +1,305 @@
#!/usr/bin/env python
#
"""
Usage: %(scriptName)s [options] command object
Auto detecting the transceiver and set the correct if_type value
options:
-h | --help : this help message
-d | --debug : run with debug mode
"""
try:
import os
import commands
import sys, getopt
import logging
import re
import time
import datetime
import syslog
from sfputil import SfpUtil
from sonic_sfp.bcmshell import bcmshell
except ImportError as e:
raise ImportError("%s - required module not found" % str(e))
DEBUG = False
args = []
INV_REDWOOD_PLATFORM = "SONiC-Inventec-d7032-100"
INV_CYPRESS_PLATFORM = "SONiC-Inventec-d7054"
INV_SEQUOIA_PLATFORM = "SONiC-Inventec-d7264"
transceiver_type_dict = {
"FCBG110SD1C03": "SR",
"FCBG110SD1C05": "SR",
"FTLX8571D3BCL": "SR",
"FTLX8574D3BCL": "SR",
"AFBR-709DMZ": "SR",
"AFBR-709SMZ": "SR",
"FTLX8571D3BCV": "SR",
"FTLX1471D3BCL": "SR",
"FTLX1871M3BCL": "SR",
"FTLF8536P4BCL": "SR",
"FCBG125SD1C05": "SR",
"FCBG125SD1C30": "SR",
"FCBG125SD1C03": "SR",
"FCBG410QB1C03-1E": "SR4",
"FCBG4100QB1C030-1E": "SR4",
"885350163": "SR4",
"88535017": "SR4",
"FTL410QE2C": "SR4",
"FTL410QD3C": "SR4",
"FTL410QD2C": "SR4",
"AFBR-79E3PZ": "SR4",
"AFBR-79Q4Z": "SR4",
"FTL4C1QE1C": "SR4",
"FTLC9551REPM": "SR4",
"FTLC1151RDPL": "SR4",
"DAC-010SS-X50" : "KR",
"DAC-010QQ-X50": "KR4",
"DAC-040QS-007": "KR4",
"DAC-040QQ-007": "KR4",
"DAC-040QQ-005": "KR4",
"DAC-040QS-005": "KR4",
"NDAAFF-0001": "KR4",
"L0HQF001-SD-R": "KR4",
"DAC-Q28/Q28-28-01": "KR4",
"NDAAFF-0003": "KR4",
"NDAQGF0001": "KR4",
"L0HQF003-SD-R": "KR4",
"NDAQGJ-0003": "KR4",
"L0HQF004-SD-R": "KR4",
"L0HSF006-SD-R": "KR",
"L0HSF007-SD-R": "KR",
"L0HSF008-SD-R": "KR",
"L0HQF009-SD-R": "KR4"
}
initial_command = []
def show_help():
print __doc__ % {'scriptName' : sys.argv[0].split("/")[-1]}
sys.exit(0)
def log_message( string ):
syslog.openlog("transceiver_monitor", syslog.LOG_PID, facility=syslog.LOG_DAEMON)
syslog.syslog(syslog.LOG_NOTICE, string)
class BCMUtil(bcmshell):
port_to_bcm_mapping = dict()
sal_config_list = dict()
eagle_list = []
platform = None
def get_platform(self):
if self.platform is None:
self.platform = os.popen("uname -n").read().strip()
return self.platform
def get_port_to_bcm_mapping(self):
if self.port_to_bcm_mapping is None:
return dict()
else:
return self.port_to_bcm_mapping
def show_port_to_bcm_mapping(self):
print self.port_to_bcm_mapping
def get_eagle_port(self):
return self.eagle_list
def parsing_eagle_port(self):
name = self.get_platform()
if name is not None:
if name == INV_REDWOOD_PLATFORM:
self.eagle_list = [66,100]
elif name == INV_CYPRESS_PLATFORM:
self.eagle_list = [66,100]
elif name == INV_SEQUOIA_PLATFORM:
self.eagle_list = [66,100]
else:
self.eagle_list = []
def get_sal_config_list(self):
return self.sal_config_list
def show_sal_config_list(self):
print self.sal_config_list
def initial_sal_config_list( self ):
content = self.run("config")
for line in content.split("\n"):
ConfigObject = re.search(r"portmap\_(?P<bcm_id>\d+)\=(?P<lane_id>\d+)\:\d+",line)
if ConfigObject is not None:
if int(ConfigObject.group("bcm_id")) not in self.get_eagle_port():
self.get_sal_config_list()[int(ConfigObject.group("bcm_id"))]={"lane": int(ConfigObject.group("lane_id")), "speed": None, "portname": None}
def parsing_port_list(self):
content = self.run("ps")
count = 0
for line in content.split("\n"):
PSObject = re.search(r"(?P<port_name>(xe|ce)\d+)\(\s*(?P<bcm_id>\d+)\).+\s+(?P<speed>\d+)G",line)
if PSObject is not None:
if int(PSObject.group("bcm_id")) not in self.get_eagle_port():
if self.get_sal_config_list().has_key(int(PSObject.group("bcm_id"))):
self.get_sal_config_list()[int(PSObject.group("bcm_id"))]["portname"] = PSObject.group("port_name")
self.get_sal_config_list()[int(PSObject.group("bcm_id"))]["speed"] = int(PSObject.group("speed"))*1000
self.port_to_bcm_mapping[count] = int(PSObject.group("bcm_id"))
count = count +1
def execute_command(self, cmd):
self.cmd(cmd)
class TransceiverUtil(SfpUtil):
transceiver_port_mapping = dict()
def get_transceiver_port_mapping(self):
return self.transceiver_port_mapping
def show_transceiver_port_mapping(self):
print self.transceiver_port_mapping
def get_bcm_port_name(self, index):
if self.transceiver_port_mapping.has_key(index) and bcm_obj.get_sal_config_list().has_key(self.transceiver_port_mapping[index]["bcm"]):
return bcm_obj.get_sal_config_list()[self.transceiver_port_mapping[index]["bcm"]]["portname"]
else:
return ""
def get_port_to_i2c_mapping(self):
if self.port_to_i2c_mapping is None:
return dict()
else:
return self.port_to_i2c_mapping
def show_port_to_i2c_mapping(self):
print self.port_to_i2c_mapping
def get_eeprom_partNum(self, portNum):
tempdict = dict()
tempdict = self.get_eeprom_dict(portNum)
self.get_eeprom_partNum_from_parser_eeprom_dict(tempdict)
def get_eeprom_dict_info(self, portNum):
return self.get_eeprom_dict(portNum)
def get_eeprom_partNum_from_parser_eeprom_dict(self, tempdict ):
if tempdict is not None:
if tempdict["interface"]["data"].has_key("VendorPN"):
return tempdict["interface"]["data"]["VendorPN"]
elif tempdict["interface"]["data"].has_key("Vendor PN"):
return tempdict["interface"]["data"]["Vendor PN"]
else:
return None
else:
return None
def get_transceiver_type(self, pn ):
if pn is not None:
if transceiver_type_dict.has_key(pn.upper()):
return transceiver_type_dict[pn.upper()]
else:
return None
def set_transceiver_type( self, portNum, pn ):
type = self.get_transceiver_type( pn )
if type is not None:
if bcm_obj.get_platform() == INV_SEQUOIA_PLATFORM:
speed = bcm_obj.get_sal_config_list()[self.transceiver_port_mapping[portNum]["bcm"]]["speed"]
bcm_obj.execute_command( "port %s if=%s speed=%d" % ( self.get_bcm_port_name(portNum), type, speed ) )
else:
bcm_obj.execute_command( "port %s if=%s" % ( self.get_bcm_port_name(portNum), type ) )
#print "Detecting port {0} need to change interface type {1} ({2})".format(self.get_bcm_port_name(portNum), type, self.get_transceiver_port_mapping()[portNum]["pn"])
log_message("Detecting port {0} need to change interface type {1} ({2})".format(self.get_bcm_port_name(portNum), type, self.get_transceiver_port_mapping()[portNum]["pn"]) )
def initial_transceiver_port_mapping(self):
for index in self.get_port_to_i2c_mapping().keys():
if self.transceiver_port_mapping.has_key(index) is False :
i2cValue = self.get_port_to_i2c_mapping()[index]
bcmValue = bcm_obj.get_port_to_bcm_mapping()[index]
self.transceiver_port_mapping[index]={"i2c": i2cValue, "bcm": bcmValue , "pn": None}
def set_power_mode_for_QSFP(self):
for index in self.get_port_to_i2c_mapping().keys():
if index >= self.qsfp_port_start and index <= self.qsfp_port_end :
self.set_low_power_mode(index, False)
def main():
try:
global DEBUG
global transceiver_obj
global bcm_obj
initalNotOK = True
retestCount = 0
while initalNotOK :
try:
transceiver_obj = TransceiverUtil()
bcm_obj = BCMUtil()
initalNotOK = False
except Exception, e:
log_message("Exception. The warning is {0}, Retry again ({1})".format(str(e),retestCount) )
retestCount = retestCount + 1
time.sleep(5)
log_message( "Object initialed successfully" )
options, args = getopt.getopt(sys.argv[1:], 'hd', ['help',
'debug'
])
for opt, arg in options:
if opt in ('-h', '--help'):
show_help()
elif opt in ('-d', '--debug'):
DEBUG = True
logging.basicConfig(level=logging.INFO)
else:
logging.info("no option")
# Before loop, You could execute specific command to initial chip
for cmd_index in initial_command :
bcm_obj.execute_command(cmd_index)
# Initial the sal config list
bcm_obj.parsing_eagle_port()
bcm_obj.initial_sal_config_list()
bcm_obj.parsing_port_list()
# bcm_obj.show_port_to_bcm_mapping()
# bcm_obj.show_sal_config_list()
# Initial the transceiver_obj
transceiver_obj.initial_transceiver_port_mapping()
# transceiver_obj.show_transceiver_port_mapping()
transceiver_obj.set_power_mode_for_QSFP()
while 1 :
if bcm_obj.get_platform() == INV_SEQUOIA_PLATFORM:
bcm_obj.parsing_port_list()
for index in transceiver_obj.get_port_to_i2c_mapping().keys():
info = transceiver_obj.get_eeprom_dict_info(index)
value = transceiver_obj.get_eeprom_partNum_from_parser_eeprom_dict(info)
if transceiver_obj.get_transceiver_port_mapping().has_key(index) is not False and transceiver_obj.get_transceiver_port_mapping()[index]["pn"] <> value:
transceiver_obj.get_transceiver_port_mapping()[index]["pn"] = value
transceiver_obj.set_transceiver_type(index,value)
#transceiver_obj.show_transceiver_port_mapping()
time.sleep(1)
except (Exception, KeyboardInterrupt) as e:
log_message("Terminating this python daemon ({0})".format(e))
syslog.closelog()
del transceiver_obj
del bcm_obj
if __name__ == "__main__":
main()

View File

@ -11,18 +11,40 @@
# Short-Description: Setup Inventec d7032q28b board.
### END INIT INFO
DIR=/usr/share/sonic/device/x86_64-inventec_d7032q28b-r0/plugins
MONITOR_DAEMON=$DIR/transceiver_monitor.py
MONITOR_DAEMON_NAME=transceiver_monitor
LED_DAEMON=$DIR/led_proc.py
LED_DAEMON_NAME=led_proc
# The process ID of the script when it runs is stored here:
MONITOR_PIDFILE=/var/run/$MONITOR_DAEMON_NAME.pid
LED_PIDFILE=/var/run/$LED_DAEMON_NAME.pid
do_monitor_start() {
/sbin/start-stop-daemon --quiet --oknodo --pidfile $LED_PIDFILE --make-pidfile --startas $LED_DAEMON --start --background -- $DAEMON_OPTS
/sbin/start-stop-daemon --quiet --oknodo --pidfile $MONITOR_PIDFILE --make-pidfile --startas $MONITOR_DAEMON --start --background -- $DAEMON_OPTS
}
do_monitor_stop() {
/sbin/start-stop-daemon --quiet --oknodo --stop --pidfile $MONITOR_PIDFILE --retry 10
/sbin/start-stop-daemon --quiet --oknodo --stop --pidfile $LED_PIDFILE --retry 10
}
case "$1" in
start)
echo -n "Setting up board... "
depmod -a
/usr/local/bin/inventec_d7032_util.py -f install
do_monitor_${1}
echo "done."
;;
stop)
/usr/local/bin/inventec_d7032_util.py -f clean
do_monitor_${1}
echo "done."
;;

View File

@ -1 +1,3 @@
d7032q28b/utils/inventec_d7032_util.py usr/local/bin
common/utils/transceiver_monitor.py usr/share/sonic/device/x86_64-inventec_d7032q28b-r0/plugins
common/utils/led_proc.py usr/share/sonic/device/x86_64-inventec_d7032q28b-r0/plugins

View File

@ -1,5 +0,0 @@
description "SONiC platform service"
respawn
exec /usr/local/bin/inventec_d7032_util.py -f install

View File

@ -11,18 +11,40 @@
# Short-Description: Setup Inventec d7054q28b board.
### END INIT INFO
DIR=/usr/share/sonic/device/x86_64-inventec_d7054q28b-r0/plugins
MONITOR_DAEMON=$DIR/transceiver_monitor.py
MONITOR_DAEMON_NAME=transceiver_monitor
LED_DAEMON=$DIR/led_proc.py
LED_DAEMON_NAME=led_proc
# The process ID of the script when it runs is stored here:
MONITOR_PIDFILE=/var/run/$MONITOR_DAEMON_NAME.pid
LED_PIDFILE=/var/run/$LED_DAEMON_NAME.pid
do_monitor_start() {
/sbin/start-stop-daemon --quiet --oknodo --pidfile $LED_PIDFILE --make-pidfile --startas $LED_DAEMON --start --background -- $DAEMON_OPTS
/sbin/start-stop-daemon --quiet --oknodo --pidfile $MONITOR_PIDFILE --make-pidfile --startas $MONITOR_DAEMON --start --background -- $DAEMON_OPTS
}
do_monitor_stop() {
/sbin/start-stop-daemon --quiet --oknodo --stop --pidfile $MONITOR_PIDFILE --retry 10
/sbin/start-stop-daemon --quiet --oknodo --stop --pidfile $LED_PIDFILE --retry 10
}
case "$1" in
start)
echo -n "Setting up board... "
depmod -a
/usr/local/bin/inventec_d7054_util.py -f install
do_monitor_${1}
echo "done."
;;
stop)
/usr/local/bin/inventec_d7054_util.py -f clean
do_monitor_${1}
echo "done."
;;

View File

@ -1 +1,4 @@
d7054q28b/utils/inventec_d7054_util.py usr/local/bin
common/utils/transceiver_monitor.py usr/share/sonic/device/x86_64-inventec_d7054q28b-r0/plugins
common/utils/led_proc.py usr/share/sonic/device/x86_64-inventec_d7054q28b-r0/plugins

View File

@ -1,5 +0,0 @@
description "SONiC platform service"
respawn
exec /usr/local/bin/inventec_d7054_util.py -f install