⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pm5337_eos.tcl

📁 用于EOS芯片的驱动程序, 供参考 参考
💻 TCL
📖 第 1 页 / 共 5 页
字号:
#------------------------------------------------------------------------------# 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 + -