?? pm5337_eos.tcl
字號:
#------------------------------------------------------------------------------# FILE NAME: PM5337_EOS.tcl## DESCRIPTION: This file includes the following procedures:# 1) EOS_Init# 2) EOS_FE_Line_Config# 3) EOS_GE_Line_Config# 4) EOS_RMAC_Config# 5) EOS_TMAC_Config# 6) EOS_DSDC_Init # 7) EOS_IBUF_Config# 8) EOS_EBUF_Config# 9) EOS_Encap_Config# 10) EOS_Payload_Config# 11) EOS_FE_VCG_Config# 12) EOS_FE_LCAS_Config# # NOTES:## REVISION History:# Preliminary 1 - Script created# Released 2 - Updated EOS_Init, EOS_DSDC_Init, EOS_Payload_Config#------------------------------------------------------------------------------#------------------------------------------------------------------------------# SCRIPT NAME: EOS_Init## DESCRIPTION: This script enable the EOS subsystem and de-assert the reset# bit in each mega block.# # PARAMETERS: devID - This parameter is used to specify the device # under configuration## NOTES: ## REVISION History:# Preliminary 1 - Script created# Released 2 - Added setting for RESERVED_CFG[4:0] = 01000, and TTOP 336 # Initialization#------------------------------------------------------------------------------proc EOS_Init {devID} { source /usr/lib/cgi-bin/apps/tclscripts/PM5337_util.tcl ################################## ##### Enabling EOS Subsystem ##### ################################## # Assert EOS subsystem reset in top level admwrb $devID 0x0009 6 1 # Enable EOS subsystem in top level admwrb $devID 0x000A 6 0 # De-assert EOS subsystem reset in top level admwrb $devID 0x0009 6 0 ############################################## ##### Enabling EOS Subsystem Mega Blocks ##### ############################################## # De-assert LOHO_SONET mega block reset admwrb $devID 0xE000 0 0 # De-assert VCAT_LCAS mega block reset admwrb $devID 0xE000 1 0 # De-assert GFP_HDLC mega block reset admwrb $devID 0xE000 2 0 # De-assert MAC mega block reset admwrb $devID 0xE000 3 0 # De-assert DSDC mega block reset admwrb $devID 0xE000 4 0 # De-assert Reserved bit 5 admwrb $devID 0xE000 5 0 ###################################################### ##### Recommended EOS Subsystem Default Settings ##### ###################################################### # Disable all TMAC ports admwr $devID 0xE020 0x0001FE00 # Writing all RESERVED_1 bit to 1 admwrb $devID 0xEE09 13 1 ;# MSTST8 Counter Configuation admwrb $devID 0xEFC5 14 1 ;# SCMB MDIO Device and Port Address ####################################### ##### Settings after device reset ##### ####################################### wr adm 0xEFC0 0x0 ;#Enable MDIO wr adm 0xEFC0 0x1000 # Setting Multi-frame alignment wr adm 0x080b 0x02457 # [AL] Added Jan 13, 2006 for revision B # RESERVED_CFG[4:0] = 01000 admwr $devID 0xEA3E 0x4400 # Initialize TTOP 336 block admwr $devID 0xE380 0x6 after 1 ;# wait for at least 250 us admwr $devID 0xE380 0xE }#------------------------------------------------------------------------------# SCRIPT NAME: EOS_FE_Line_Config## DESCRIPTION: This procedure configures the Ethernet interface to FE mode.# # PARAMETERS: devID - This parameter is used to specify the device # under configuration# port - 0 (port 1), 1 (port 2), ... 7 (port 8)# line_mode - 0 (SMII), 1 (SSSMII), 2 (MAC to MAC)# data_rate - 0 (10M), 1 (100M), 2 (auto detect)## NOTES: 1) In MAC to MAC mode, the data rate must be set to 100M.# 2) All 8 ports must be connected to another MAC or to another PHY. It# is not allowed to have some ports connected to a PHY and some ports# connected to a MAC.##------------------------------------------------------------------------------proc EOS_FE_Line_Config {devID port line_mode data_rate} { source /usr/lib/cgi-bin/apps/tclscripts/PM5337_util.tcl ######################################### ##### Enabling TMAC Port in FE mode ##### ######################################### # Setting line interface to FE mode admwrb $devID 0xE020 0 0 # Enabling TMAC $port admwrb $devID 0xE020 [expr $port + 1] 1 ########################################### ##### Configuring Line Interface Mode ##### ########################################### if {$line_mode == 0} { # Configuring line interface to SMII mode admwrb $devID 0xEF00 1 0 admwrb $devID 0xEF00 0 0 } elseif {$line_mode == 1} { # Configuring line interface to SS-SMII mode admwrb $devID 0xEF00 1 0 admwrb $devID 0xEF00 0 1 } elseif {$line_mode == 2} { # Configuring line interface to MAC to MAC mode admwrb $devID 0xEF00 1 1 admwrb $devID 0xEF00 0 1 } ################################################ ##### Configuring Line Interface Data Rate ##### ################################################ # Declaring register address value for 0xF09 + 0x1*N set addr_0xEF09 [expr 0xEF09 + ($port*0x1)] if {$data_rate == 0} { # Set data rate to 10M admwrb $devID $addr_0xEF09 1 0 admwrb $devID $addr_0xEF09 0 0 } elseif {$data_rate == 1} { # Set data rate to 100M admwrb $devID $addr_0xEF09 1 0 admwrb $devID $addr_0xEF09 0 1 } elseif {$data_rate == 2} { # Set data rate to auto detect admwrb $devID $addr_0xEF09 1 1 } ########################################### ##### DLL settings after device reset ##### ########################################### admwr $devID 0xE010 0x7 ;#DLL_EREFCLK_FB_DELAY 0x00000007 for SMII & SS-SMII, 0x0 for GMII admwr $devID 0xE011 0xFFFFFFFF ;#DLL_EREFCLK_FB_DELAY 0xFFFFFFFF for SMII & SS-SMII, 0x0 for GMII admwr $devID 0xE012 0x0 ;#DLL_EREFCLK_FB_DELAY 0x0 for SMII & SS-SMII, 0x00000000 for GMII admwr $devID 0xE013 0x0 ;#DLL_EREFCLK_FB_DELAY 0x0 for SMII & SS-SMII, 0x0000001F for GMII admwrb $devID 0xEFA0 1 1 ;#DLL_GSMII_REFCLK VERN_EN = 1 admwr $devID 0xEFA1 0x6 ;#DLL_GSMII_REFCLK VERINIER = 0x6 for SMII & SS-SMII, default vernier not used for GMII } #------------------------------------------------------------------------------# SCRIPT NAME: EOS_GE_Line_Config## DESCRIPTION: This procedure configures the Ethernet interface to GE mode.# # PARAMETERS: devID - This parameter is used to specify the device # under configuration## NOTES: #------------------------------------------------------------------------------proc EOS_GE_Line_Config {devID} { source /usr/lib/cgi-bin/apps/tclscripts/PM5337_util.tcl ########################################################## ##### Configure Ethernet Client Interface to GE mode ##### ########################################################## # Setting client interface to GE mode admwr $devID 0xE020 0x0001FFFF ########################################### ##### DLL settings after device reset ##### ########################################### admwr $devID 0xE010 0x0 ;#DLL_EREFCLK_FB_DELAY 0x00000007 for SMII & SS-SMII, 0x0 for GMII admwr $devID 0xE011 0x0 ;#DLL_EREFCLK_FB_DELAY 0xFFFFFFFF for SMII & SS-SMII, 0x0 for GMII admwr $devID 0xE012 0x0 ;#DLL_EREFCLK_FB_DELAY 0x0 for SMII & SS-SMII, 0x00000000 for GMII admwr $devID 0xE013 0x1F ;#DLL_EREFCLK_FB_DELAY 0x0 for SMII & SS-SMII, 0x0000001F for GMII admwrb $devID 0xEFA0 1 0 ;#DLL_GSMII_REFCLK VERN_EN = 1 }#------------------------------------------------------------------------------# SCRIPT NAME: EOS_RMAC_Config## DESCRIPTION: This procedure configures and enables the RMAC block# # PARAMETERS: devID - This parameter is used to specify the device # under configuration# channel - 0 (port 1), 1 (port 2), ... 7 (port 8) # pamb_ck - Preamble check enable: 0-off, 1-on# tag_aware - Tag extention aware enable: 0-off, 1-on# inrange_dis - Inrange length error discard: 0-off, 1-on# inrange_ck - Inrange length error checking: 00-off, 11-on# max_frm_trn - Max frame length truncate enable: 0-off, 1-on# crc_dis - CRC error discard enable: 0-off, 1-on# crc_ck - CRC check enable: 0-off, 1-on # interpkt_l1_en - Interpacket Reception Layer 1 Error reporting# enable: 0-off, 1-on# crc_strip_en - CRC removal enable: 0-off, 1-on# pausefrm_drop - Pause frame drop enable: 0-off, 1-on# ctrlfrm_drop - Control frame drop enable: 0-off, 1-on# da_drop - MAC destination address drop enable: 0-off, 1-on # max_frm_len - Max frame size = 1518 bytes# sta1 - Station Address High Word value (STA[47:32])# sta2 - Station Address Middle Word value (STA[31:16])# sta3 - Station Address Low Word value (STA[15:0])## NOTES: The following settings are recommended to ensure the RMAC # correctly identifies Ethernet frames as stipulated by the 802.3 # specification:# # pamb_ck = 1, tag_aware =1, inrange_dis = 1, inrange_ck 0x3, # max_frm_trn 1, crc_dis = 1, crc_ck = 1, interpkt_l1_en = 0, # crc_strip_en = 0, pausefrm_drop = 0, ctrlfrm_drop = 0, da_drop = 0, # max_frm_len = 0x05EE##------------------------------------------------------------------------------proc EOS_RMAC_Config {devID channel pamb_ck tag_aware inrange_dis inrange_ck max_frm_trn crc_dis crc_ck interpkt_l1_en crc_strip_en pausefrm_drop ctrlfrm_drop da_drop max_frm_len sta1 sta2 sta3} { source /usr/lib/cgi-bin/apps/tclscripts/PM5337_util.tcl ####################################################### ##### Configuring RMAC block for channel $channel ##### ####################################################### ### Declaring register address ### set addr_0xED00 [expr 0xED00 + ($channel*0x20)] ;# 0xD00 +0x20*N set addr_0xED01 [expr 0xED01 + ($channel*0x20)] ;# 0xD01 +0x20*N set addr_0xED02 [expr 0xED02 + ($channel*0x20)] ;# 0xD02 +0x20*N set addr_0xED03 [expr 0xED03 + ($channel*0x20)] ;# 0xD03 +0x20*N set addr_0xED04 [expr 0xED04 + ($channel*0x20)] ;# 0xD04 +0x20*N set addr_0xED05 [expr 0xED05 + ($channel*0x20)] ;# 0xD05 +0x20*N ### 1. Setting RMAC Configuration Register #1 ### # Ensure RMAC is disabled during configuration set rmac_enbl 0 # Mapping bit to proper position set value1 [expr 0x01E2|[expr $pamb_ck << 14]|[expr $tag_aware << 13]| \ [expr $inrange_dis << 12]|[expr $inrange_ck << 11]| \ [expr $max_frm_trn << 9]|[expr $crc_dis << 4]| \ [expr $crc_ck << 3]|$rmac_enbl] # Write value1 to RMAC Configuration Register #1 admwr $devID $addr_0xED00 $value1 ### 2. Setting RMAC Configuraiton Register #2 ### # Mapping bit to proper position set value2 [expr 0x0000|[expr $interpkt_l1_en << 15]|[expr $crc_strip_en << 5]| \ [expr $pausefrm_drop << 2]|[expr $ctrlfrm_drop << 1]| $da_drop] # Write value2 to RMAC Configuration Register #2 admwr $devID $addr_0xED01 $value2 ### 3. Setting RMAC Max Frame Length Configuration register ### admwr $devID $addr_0xED02 $max_frm_len ### 4. Setting RMAC Station Address ### admwr $devID $addr_0xED03 $sta1 admwr $devID $addr_0xED04 $sta2 admwr $devID $addr_0xED05 $sta3 ### 5. Enable RMAC Block ### admwrb $devID $addr_0xED00 0 1 } #------------------------------------------------------------------------------# SCRIPT NAME: EOS_TMAC_Config## DESCRIPTION: This procedure configures and enables the TMAC block.# # PARAMETERS: devID - This parameter is used to specify the device # under configuration# channel - 0 (port 1), 1 (port 2), ... 7 (port 8) # crc_ck - FCS checking: 0-off, 1-on# pad_add_en - 0x0 (no pad), 0x1 (insert pad with at least 14-byte)# 0x2 (insert pad with no length requirement) # crc_add_en - CRC insertion enable: 0-off, 1-on# min_frm_ck - Minimum frame length check: 0-off, 1-on# trunc_en - Maximum frame length truncate: 0-off, 1-on# ibuf_hthr_en - Flow control enable: 0-off, 1-on# xon_en - XON/OFF protocol enable: 0-off, 1-on# pamb_len - Preamble field length (0x0 to 0xF)# max_frm_len - Maximum frame length (0x0000 to 0xFFFF)# min_frm_tag - Minimum frame length (0x00 to 0x3F)# min_frm_len - Minimum tag frame lenght: 0 (MIN_FRM_LEN),# 1 (MIN_FRM_LEN + 4)# sta1 - Station Address High Word value (STA[47:32])# sta2 - Station Address Middle Word value (STA[31:16])# sta3 - Station Address Low Word value (STA[15:0])## NOTES:The following values are set to ensure the TMAC correctly identifies # Ethernet frames as stipulated by the 802.3 specification:# # crc_ck = 1, pad_add_en = 0x1, crc_add_en = 1, min_frm_ck = 1,# trunc_en = 1, ibuf_hthr_en = 1, xon_en = 1, pamb_len = 0x7, # max_frm_len = 0x05EE, min_frm_tag = 1, min_frm_len = 0x40 (64)##------------------------------------------------------------------------------proc EOS_TMAC_Config {devID channel crc_ck pad_add_en crc_add_en min_frm_ck trunc_en ibuf_hthr_en xon_en pamb_len max_frm_len min_frm_tag min_frm_len sta1 sta2 sta3} { source /usr/lib/cgi-bin/apps/tclscripts/PM5337_util.tcl ####################################################### ##### Configuring TMAC block for channel $channel ##### ####################################################### ### Declaring register address ### set addr_0xEC00 [expr 0xEC00 + ($channel*0x20)] ;# 0xC00 +0x20*N set addr_0xEC01 [expr 0xEC01 + ($channel*0x20)] ;# 0xC01 +0x20*N
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -