temod16_enum_defines.h (55092B)
1 /*---------------------------------------------------------------------- 2 * : temod16_enum_defines.h, 3 * : n * 4 * Broadcom Corporation 5 * Proprietary and Confidential information 6 * All rights reserved 7 * This source file is the property of Broadcom Corporation, and 8 * may not be copied or distributed in any isomorphic form without the 9 * prior written consent of Broadcom Corporation. 10 *--------------------------------------------------------------------- 11 *--------------------------------------------------------------------- 12 ############### THIS FILE IS AUTOMATICALLY GENERATED. ############### 13 ############### DO !! NOT !! MANUALLY EDIT THIS FILE. ############### 14 *--------------------------------------------------------------------- 15 * Description: This file contains enums, elems, and doxygen comments 16 * needed for SerDes Configuration programs. 17 *--------------------------------------------------------------------- 18 * CVS INFORMATION: 19 * Please see inc/enum_desc.txt for CVS information. 20 *---------------------------------------------------------------------- 21 */ 22 /* 23 * 24 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 25 * 26 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 27 */ 28 /* This file is automatically generated. Do not modify it. Modify the 29 * inc/enum_desc.txt to change enums, elems, or comments. For issues about 30 * the process that creates this file contact the temod16 development team. 31 */ 32 33 #ifndef _TSCMOD16_ENUM_DEFINES_H 34 #define _TSCMOD16_ENUM_DEFINES_H 35 36 /*! \enum temod16_core_select 37 38 temod16_core_select selects for programming, any combination of 3 core of the PHY. 39 This is only applicable to the 12x10 version of the TSCE core. 40 A '1' in the latter part of the enum selects the core. 41 42 43 */ 44 45 typedef enum { 46 TEMOD16_CORE_0_0_1 = 0 , /*!< Core number 0 selected */ 47 TEMOD16_CORE_0_1_0 , /*!< Core number 1 selected */ 48 TEMOD16_CORE_1_0_0 , /*!< Core number 2 selected */ 49 TEMOD16_CORE_0_1_1 , /*!< Core number 0 & 1 selected */ 50 TEMOD16_CORE_1_0_1 , /*!< Core number 0 & 2 selected */ 51 TEMOD16_CORE_1_1_1 , /*!< Core number 0,1,& 2 selected */ 52 TEMOD16_CORE_ILLEGAL /*!< Illegal (programmatic boundary) */ 53 } temod16_core_select; 54 55 /*! \def CNT_temod16_core_select Types of enum temod16_core_select */ 56 #define CNT_temod16_core_select 7 57 58 /*! 59 \brief 60 This array returns the string version of the enum #temod16_core_select when 61 indexed by the enum var. 62 63 */ 64 extern char* e2s_temod16_core_select [CNT_temod16_core_select]; 65 /*! 66 \brief 67 This array associates the enum #temod16_core_select enum with a bit mask. 68 The index is the #temod16_core_select enum value. The value for each entry is 69 interpreted as follows. If bit [n] is 1, then core [n] is addressed; if bit [n] 70 is 0, then core [n] is addressed. 71 72 */ 73 extern int e2n_temod16_core_select [CNT_temod16_core_select]; 74 /*! \enum temod16_lane_select 75 76 temod16_lane_select selects for programming, any combination of 4 lanes of PHY. 77 A '1' in the latter part of the enum name selects the lane. Other parameters in 78 the #temod16_st will decide what to do with the selected lane(s). In most cases 79 we enable/disable a feature on the selected lanes. 80 81 If lane_select is set to TEMOD16_LANE_BCST for writes we broadcast to all lanes. 82 You cannot read in broadcast mode. 83 84 85 */ 86 87 typedef enum { 88 TEMOD16_LANE_0_0_0_1 = 0 , /*!< lane number 0 selected */ 89 TEMOD16_LANE_0_0_1_0 , /*!< lane number 1 selected */ 90 TEMOD16_LANE_0_0_1_1 , /*!< lane numbers 0,1 selected */ 91 TEMOD16_LANE_0_1_0_0 , /*!< lane number 2 selected */ 92 TEMOD16_LANE_0_1_0_1 , /*!< lane numbers 2,0 selected */ 93 TEMOD16_LANE_0_1_1_0 , /*!< lane numbers 2,1 selected */ 94 TEMOD16_LANE_0_1_1_1 , /*!< lane numbers 2,1,0 selected */ 95 TEMOD16_LANE_1_0_0_0 , /*!< lane number 3 selected */ 96 TEMOD16_LANE_1_0_0_1 , /*!< lane numbers 3,0 selected */ 97 TEMOD16_LANE_1_0_1_0 , /*!< lane numbers 3,1 selected */ 98 TEMOD16_LANE_1_0_1_1 , /*!< lane numbers 3,1,0 selected */ 99 TEMOD16_LANE_1_1_0_0 , /*!< lane numbers 3,2 selected */ 100 TEMOD16_LANE_1_1_0_1 , /*!< lane numbers 3,2,0 selected */ 101 TEMOD16_LANE_1_1_1_0 , /*!< lane numbers 3,2,1 selected */ 102 TEMOD16_LANE_1_1_1_1 , /*!< lane numbers 3,2,1,0 selected */ 103 TEMOD16_LANE_BCST , /*!< lane numbers 3,2,1,0 BCST */ 104 TEMOD16_LANE_ILLEGAL /*!< Illegal (programmatic boundary) */ 105 } temod16_lane_select; 106 107 /*! \def CNT_temod16_lane_select Types of enum temod16_lane_select */ 108 #define CNT_temod16_lane_select 17 109 110 /*! 111 \brief 112 This array returns the string version of the enum #temod16_lane_select when 113 indexed by the enum var. 114 115 */ 116 extern char* e2s_temod16_lane_select [CNT_temod16_lane_select]; 117 /*! 118 \brief 119 This array associates the enum #temod16_lane_select enum with a bit mask. 120 The index is the #temod16_lane_select enum value. The value for each entry is 121 interpreted as follows. If bit [n] is 1, then lane [n] is enabled; if bit [n] 122 is 0, then lane [n] is disabled. By enabled, we mean that such-and-such 123 function is to be called for a lane; by disabled, we mean that such-and-such 124 function is not to be called for a lane. So a value of 0xF indicates that all 125 lanes or enabled, while 0x5 indicates that only lanes 0 and 2 are enabled. 126 127 */ 128 extern int e2n_temod16_lane_select [CNT_temod16_lane_select]; 129 /*! \enum temod16_spd_intfc_type 130 131 All legal speed-interface combination are encapsulated in this enum 132 133 There are several speed and interface combinations allowed for a logical PHY 134 port. Names and speeds are self explanatory. 135 136 Speed and interface selection is combined because we don't want the speeds 137 to be incompatible with interface. 138 139 */ 140 141 typedef enum { 142 TEMOD16_SPD_ZERO = 0 , /*!< Illegal value (enum boundary) */ 143 TEMOD16_SPD_10_X1_SGMII , /*!< 10Mb SGMII (serial) */ 144 TEMOD16_SPD_100_X1_SGMII , /*!< 100Mb SGMII (serial) */ 145 TEMOD16_SPD_1000_X1_SGMII , /*!< 1Gb SGMII (serial) */ 146 TEMOD16_SPD_2500_X1 , /*!< 2.5Gb based on 1000BASE-X */ 147 TEMOD16_SPD_10_SGMII , /*!< 10Mb SGMII (serial) */ 148 TEMOD16_SPD_100_SGMII , /*!< 100Mb SGMII (serial) */ 149 TEMOD16_SPD_1000_SGMII , /*!< 1Gb SGMII (serial) */ 150 TEMOD16_SPD_2500 , /*!< 2.5Gb based on 1000BASE-X */ 151 TEMOD16_SPD_5000 , /*!< 5Gb CL36 */ 152 TEMOD16_SPD_1000_XFI , /*!< 1Gb */ 153 TEMOD16_SPD_5000_XFI , /*!< 5Gb CL49 */ 154 TEMOD16_SPD_10000_XFI , /*!< 10Gb serial XFI */ 155 TEMOD16_SPD_10600_XFI_HG , /*!< 10.5Gb serial XFI (HgSOLO) */ 156 TEMOD16_SPD_10000_HI , /*!< 10Gb XAUI HiG */ 157 TEMOD16_SPD_10000 , /*!< 10Gb XAUI */ 158 TEMOD16_SPD_12000_HI , /*!< 12Gb XAUI HiG */ 159 TEMOD16_SPD_13000 , /*!< 13Gb XAUI */ 160 TEMOD16_SPD_15000 , /*!< 15Gb XAUI */ 161 TEMOD16_SPD_16000 , /*!< 16Gb XAUI */ 162 TEMOD16_SPD_20000 , /*!< 20Gb XAUI */ 163 TEMOD16_SPD_20000_SCR , /*!< 20Gb XAUI scrambled */ 164 TEMOD16_SPD_21000 , /*!< 21Gb XAUI */ 165 TEMOD16_SPD_25455 , /*!< 25Gb XAUI 64/66 codec */ 166 TEMOD16_SPD_31500 , /*!< 31.5Gb quad lane XAUI */ 167 TEMOD16_SPD_31500_MLD , /*!< 31.5Gb quad lane MLD */ 168 TEMOD16_SPD_40G_X4 , /*!< 40Gb quad lane XAUI */ 169 TEMOD16_SPD_42G_X4 , /*!< 40Gb quad lane XAUI HiG */ 170 TEMOD16_SPD_40G_XLAUI , /*!< 40Gb quad lane MLD */ 171 TEMOD16_SPD_42G_XLAUI , /*!< 42Gb quad lane MLD */ 172 TEMOD16_SPD_10000_X2 , /*!< 10Gb dual lane */ 173 TEMOD16_SPD_10000_HI_DXGXS , /*!< 10Gb dual lane XGXS HiG */ 174 TEMOD16_SPD_10000_DXGXS , /*!< 10Gb dual lane XGXS */ 175 TEMOD16_SPD_10000_HI_DXGXS_SCR , /*!< 10Gb dual lane,scrambled,HiG */ 176 TEMOD16_SPD_10000_DXGXS_SCR , /*!< 10Gb dual lane scrambled */ 177 TEMOD16_SPD_10500_HI , /*!< 10.5Gb XAUI lane XGXS HiG */ 178 TEMOD16_SPD_10500_HI_DXGXS , /*!< 10.5Gb dual lane XGXS HiG */ 179 TEMOD16_SPD_12773_HI_DXGXS , /*!< 12.73Gb dual lane XGXS HiG */ 180 TEMOD16_SPD_12773_DXGXS , /*!< 12.73Gb dual lane XGXS */ 181 TEMOD16_SPD_15750_HI_DXGXS , /*!< 15.75Gb scrambled dual lane HiG */ 182 TEMOD16_SPD_20G_MLD_DXGXS , /*!< 20Gb dual lane MLD */ 183 TEMOD16_SPD_21G_HI_MLD_DXGXS , /*!< 20Gb dual lane HiG MLD */ 184 TEMOD16_SPD_20G_DXGXS , /*!< 20Gb dual lane BRCM */ 185 TEMOD16_SPD_21G_HI_DXGXS , /*!< 21.2Gb dual HiG(20+plldiv=70) */ 186 TEMOD16_SPD_100G_CR10 , /*!< 100G */ 187 TEMOD16_SPD_107G_HG_CR10 , /*!< 107G */ 188 TEMOD16_SPD_120G_CR12 , /*!< 120G */ 189 TEMOD16_SPD_127G_HG_CR12 , /*!< 127G */ 190 TEMOD16_SPD_4000 , /*!< 4G QSGMII */ 191 TEMOD16_SPD_10000_X4_10P3 , /*!< 10G X4 with 10.3125VCO */ 192 TEMOD16_SPD_10000_CX4_10P3 , /*!< 10G X4 with 10.3125VCO */ 193 TEMOD16_SPD_10000_KX4_10P3 , /*!< 10G X4 with 10.3125VCO */ 194 TEMOD16_SPD_12P12_XFI , /*!< 12.12XFI */ 195 TEMOD16_SPD_24P24_MLD_DXGXS , /*!< 24.24MLD */ 196 TEMOD16_SPD_48P48_MLD , /*!< 48.48MLD */ 197 TEMOD16_SPD_ILLEGAL /*!< Illegal value (enum boundary) */ 198 } temod16_spd_intfc_type; 199 200 /*! \def CNT_temod16_spd_intfc_type Types of enum temod16_spd_intfc_type */ 201 #define CNT_temod16_spd_intfc_type 56 202 203 /*! 204 \brief 205 This array returns the string version of the enum #temod16_lane_select when 206 indexed by the enum var. 207 208 */ 209 extern char* e2s_temod16_spd_intfc_type [CNT_temod16_spd_intfc_type]; 210 /*! 211 \brief 212 This array associates the enum #temod16_lane_select enum with a bit mask. 213 The index is the #temod16_lane_select enum value. The value for each entry is 214 interpreted as follows. If bit [n] is 1, then lane [n] is enabled; if bit [n] 215 is 0, then lane [n] is disabled. By enabled, we mean that such-and-such 216 function is to be called for a lane; by disabled, we mean that such-and-such 217 function is not to be called for a lane. So a value of 0xF indicates that all 218 lanes or enabled, while 0x5 indicates that only lanes 0 and 2 are enabled. 219 220 */ 221 extern int e2n_temod16_spd_intfc_type [CNT_temod16_spd_intfc_type]; 222 /*! \enum temod16_regacc_type 223 224 Types of MDIO to access PHY registers. IEEE clause 22 and clause 45 are 225 supported. The 8 bit parallel TOTSC bus can be used. We may use 226 227 */ 228 229 typedef enum { 230 TEMOD16_REGACC_CL22 = 0 , /*!< IEEE clause 22 based MDIO (for PMD only) */ 231 TEMOD16_REGACC_CL45 , /*!< IEEE clause 45 based MDIO (for PMD only) */ 232 TEMOD16_REGACC_TOTSC , /*!< Mission Mode. */ 233 TEMOD16_REGACC_SBUS_FD , /*!< Probably used in PM testbenches. */ 234 TEMOD16_REGACC_SBUS_BD , /*!< Probably used in PM testbenches. */ 235 TEMOD16_REGACC_ILLEGAL /*!< Illegal value (enum boundary) */ 236 } temod16_regacc_type; 237 238 /*! \def CNT_temod16_regacc_type Types of enum temod16_regacc_type */ 239 #define CNT_temod16_regacc_type 6 240 241 /*! 242 \brief 243 This array returns the string version of the enum #temod16_regacc_type when indexed 244 by the enum var. 245 246 */ 247 extern char* e2s_temod16_regacc_type [CNT_temod16_regacc_type]; 248 /*! \enum temod16_port_type 249 250 This is the port mode type enumeration. 251 252 WC can be configured in combo mode (i.e. entire WC is a single port) or 253 independent mode (i.e. WC has more than one port (2, 3, or 4) that are 254 controlled individually. 255 256 */ 257 258 typedef enum { 259 TEMOD16_SINGLE_PORT = 0 , /*!< single port mode: 4 channels as one logical port */ 260 TEMOD16_MULTI_PORT , /*!< Each channel is one logical port */ 261 TEMOD16_DXGXS , /*!< Each paired channel(0-1, 2-3) is one logical port */ 262 TEMOD16_TRI1_PORT , /*!< 3 ports, one of them paird as follows (0,1,2-3) */ 263 TEMOD16_TRI2_PORT , /*!< 3 ports, one of them paird as follows (0-1,2,3) */ 264 TEMOD16_PORT_MODE_ILLEGAL /*!< Illegal value (enum boundary) */ 265 } temod16_port_type; 266 267 /*! \def CNT_temod16_port_type Types of enum temod16_port_type */ 268 #define CNT_temod16_port_type 6 269 270 /*! 271 \brief 272 This array returns the string version of the enum #temod16_port_type when indexed 273 by the enum var. 274 275 */ 276 extern char* e2s_temod16_port_type [CNT_temod16_port_type]; 277 /*! \enum temod16_diag_type 278 279 temod16_diag_type enumerates categories of diagnostic data. 280 has many intermediate stages between down and up. This enum is work in progress 281 282 283 <table cellspacing=0> 284 <tr><td colspan=3><B>'per_lane_control' bit-mappings</B></td></tr> 285 286 <tr><td><B>Type</B></td><td><B>Description</B></td><td><B>Scope</B></td></tr> 287 288 <tr><td>General</td> 289 <td> Combo/independent, Device and Revision Id, VCO settings, Firmware state 290 and version, active/passive lanes, MDIO type. PLL info, Oversampling Info</td> 291 <td>Device</td></tr> 292 293 <tr><td>Link</td> 294 <td> Speeds, oversampling, interface, forced/Autoneg, link status, sync 295 status, RX sequencer on/off </td> 296 <td>Lane</td></tr> 297 298 <tr><td>Autoneg</td> 299 <td> Local and remote advertisement, link status, cl73/37/BAM info </td> 300 <td>Lane</td></tr> 301 302 <tr><td>Internal Traffic</td> 303 <td> PRBS type, CJPat Type, Prog_data value, Any associated recorded errors, 304 and misc. info (IPG etc.)</td> 305 <td>Lane </td></tr> 306 307 <tr> 308 <td>DFE</td> 309 <td>Equalization info, Tap settings. (pre/post/overrides), peaking filter values </td> 310 <td>Lane</td></tr> 311 312 <tr><td>IEEE info</td> 313 <td>Clause 72, FEC</td> 314 <td>Lane</td></tr> 315 316 <tr><td>Topology</td> 317 <td>Looping info (Gloop/rloop), lane swapping, polarity swap info</td> 318 <td>Device</td></tr> 319 320 <tr><td>EEE</td> 321 <td>EEE full, passthru modes, some window values?</td> 322 <td>Lane</td></tr> 323 324 <tr><td>Eye Margin</td> 325 <td>Eye margin measurement (readout only)</td> 326 <td>Lane</td></tr> 327 328 <tr><td>All</td> 329 <td>All of the above. Except eye margin.</td> 330 <td>Device</td></tr> 331 332 </table> 333 334 335 */ 336 337 typedef enum { 338 TEMOD16_DIAG_GENERAL = 0x00000001 , /*!< General device wide information. */ 339 TEMOD16_DIAG_TOPOLOGY = 0x00000002 , /*!< Loopbacks etc. */ 340 TEMOD16_DIAG_LINK = 0x00000004 , /*!< Link specific info. */ 341 TEMOD16_DIAG_SPEED = 0x00000008 , /*!< sub-category of TEMOD_DIAG_LINK(for SDK) */ 342 TEMOD16_DIAG_ANEG = 0x00000010 , /*!< Autoneg specific info. */ 343 TEMOD16_DIAG_TFC = 0x00000020 , /*!< State of tx/rx internal tfc */ 344 TEMOD16_DIAG_AN_TIMERS = 0x00000040 , /*!< AN timers */ 345 TEMOD16_DIAG_STATE = 0x00000080 , /*!< Debug state registers */ 346 TEMOD16_DIAG_DEBUG = 0x00000100 , /*!< Debug */ 347 TEMOD16_DIAG_IEEE = 0x00000200 , /*!< IEEE related info */ 348 TEMOD16_DIAG_EEE = 0x00000400 , /*!< EEE */ 349 TEMOD16_DIAG_BER = 0x00000800 , /*!< BER - PMD bit error rate */ 350 TEMOD16_DIAG_CFG = 0x00001000 , /*!< CFG - PMD Lane/Core Config */ 351 TEMOD16_DIAG_CL72 = 0x00002000 , /*!< CL72 - Status */ 352 TEMOD16_DIAG_DSC = 0x00004000 , /*!< DSC dump */ 353 TEMOD16_DIAG_DSC_STD = 0x00010000 , /*!< DSC dump */ 354 TEMOD16_SERDES_DIAG = 0x00008000 , /*!< PMD Triage */ 355 TEMOD16_DIAG_ALL = 0x0000ffff , /*!< Everything but eye margin */ 356 TEMOD16_DIAG_ILLEGAL = 0x00000000 /*!< Illegal value. programmatic boundary. */ 357 } temod16_diag_type; 358 359 /*! \def CNT_temod16_diag_type Types of enum temod16_diag_type */ 360 #define CNT_temod16_diag_type 17 361 362 /*! 363 \brief 364 This array returns the string version of the enum #temod16_port_type when indexed 365 by the enum var. 366 367 */ 368 extern char* e2s_temod16_diag_type [CNT_temod16_diag_type]; 369 /*! \enum temod16_pmd_diag_type 370 371 temod16_pmd_diag_type enumerates categories of pmd diagnostic data. 372 has many intermediate stages between down and up. This enum is work in progress 373 374 */ 375 376 typedef enum { 377 TEMOD16_SERDES_DIAG_CORE_CONFIG = 0x00000001 , /*!< SERDES DIAG */ 378 TEMOD16_SERDES_DIAG_CORE_STATE = 0x00000002 , /*!< SERDES DIAG */ 379 TEMOD16_SERDES_DIAG_LANE_CONFIG = 0x00000004 , /*!< SERDES DIAG */ 380 TEMOD16_SERDES_DIAG_LANE_DEBUG_STATUS = 0x00000008 , /*!< SERDES DIAG */ 381 TEMOD16_SERDES_DIAG_LANE_STATE = 0x00000010 , /*!< SERDES DIAG */ 382 TEMOD16_SERDES_DIAG_LANE_STATE_HDR = 0x00000020 , /*!< SERDES DIAG */ 383 TEMOD16_SERDES_DIAG_LANE_STATE_LEGEND = 0x00000040 , /*!< SERDES DIAG */ 384 TEMOD16_SERDES_DIAG_CL72_STATUS = 0x00000080 , /*!< SERDES DIAG */ 385 TEMOD16_SERDES_DIAG_EYE_DENSITY = 0x00000100 , /*!< SERDES DIAG */ 386 TEMOD16_SERDES_DIAG_EYE_SCAN = 0x00000200 , /*!< SERDES DIAG */ 387 TEMOD16_SERDES_DIAG_MEAS_EYE_DENSITY_DATA = 0x00000400 , /*!< SERDES DIAG */ 388 TEMOD16_SERDES_DIAG_MEAS_EYE_SCAN_DONE = 0x00000800 , /*!< SERDES DIAG */ 389 TEMOD16_SERDES_DIAG_MEAS_LOWBER_EYE = 0x00001000 , /*!< SERDES DIAG */ 390 TEMOD16_SERDES_DIAG_READ_EYE_SCAN_STRIPE = 0x00002000 , /*!< SERDES DIAG */ 391 TEMOD16_SERDES_DIAG_EYE_DENSITY_DATA = 0x00004000 , /*!< SERDES DIAG */ 392 TEMOD16_SERDES_DIAG_LOWBER_EYE = 0x00008000 , /*!< SERDES DIAG */ 393 TEMOD16_SERDES_DIAG_EYE_SCAN_VERTICAL = 0x00010000 , /*!< SERDES DIAG */ 394 TEMOD16_SERDES_DIAG_EYE_SCAN_STRIPE = 0x00020000 , /*!< SERDES DIAG */ 395 TEMOD16_SERDES_DIAG_EYE_SCAN_HEADER = 0x00040000 , /*!< SERDES DIAG */ 396 TEMOD16_SERDES_DIAG_EYE_SCAN_FOOTER = 0x00080000 , /*!< SERDES DIAG */ 397 TEMOD16_SERDES_DIAG_BER_SCAN_TEST = 0x00100000 , /*!< SERDES DIAG */ 398 TEMOD16_SERDES_DIAG_READ_BER_SCAN_DATA = 0x00200000 , /*!< SERDES DIAG */ 399 TEMOD16_SERDES_DIAG_EYE_MARGIN_PROJ = 0x00400000 , /*!< SERDES DIAG */ 400 TEMOD16_SERDES_DIAG_DIG_LPBK = 0x00800000 , /*!< SERDES DIAG */ 401 TEMOD16_SERDES_DIAG_MEAS_EYE_SCAN_START = 0x01000000 , /*!< SERDES DIAG */ 402 TEMOD16_SERDES_DIAG_ILLEGAL = 0x00000000 /*!< Illegal value (enum boundary) */ 403 } temod16_pmd_diag_type; 404 405 /*! \def CNT_temod16_pmd_diag_type Types of enum temod16_pmd_diag_type */ 406 #define CNT_temod16_pmd_diag_type 26 407 408 /*! 409 \brief 410 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 411 by the enum var. 412 413 */ 414 extern char* e2s_temod16_pmd_diag_type [CNT_temod16_pmd_diag_type]; 415 /*! \enum temod16_an_type 416 417 temod16_an_type enumerates different types of autoneg modes in the PHY. 418 419 */ 420 421 typedef enum { 422 TEMOD16_CL73 = 0 , /*!< PHY autoneg CL73 enable */ 423 TEMOD16_CL37 , /*!< PHY autoneg CL37 enable */ 424 TEMOD16_CL73_BAM , /*!< PHY autoneg CL73 enable with Brcm Aneg Mode */ 425 TEMOD16_CL37_BAM , /*!< PHY autoneg CL37 enable with Brcm Aneg Mode */ 426 TEMOD16_CL37_SGMII , /*!< PHY autoneg for SGMII */ 427 TEMOD16_HPAM , /*!< PHY autoneg for HP aneg */ 428 TEMOD16_AN_TYPE_ILLEGAL /*!< Illegal value. programmatic boundary. */ 429 } temod16_an_type; 430 431 /*! \def CNT_temod16_an_type Types of enum temod16_an_type */ 432 #define CNT_temod16_an_type 7 433 434 /*! 435 \brief 436 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 437 by the enum var. 438 439 */ 440 extern char* e2s_temod16_an_type [CNT_temod16_an_type]; 441 /*! \enum temod16_eye_direction 442 443 The direction of slicer changing always moves from the middle of the eye. 444 Currently all speeds have the following bit positions in temod16_st 445 446 \li TEMOD16_EYE_VU: Vertical, Upward direction 447 \li TEMOD16_EYE_VD: Vertical, Downward direction 448 \li TEMOD16_EYE_HL: Horizontal, Left direction 449 \li TEMOD16_EYE_HR: Horizontal, Right direction 450 451 452 */ 453 454 typedef enum { 455 TEMOD16_EYE_VU = 0 , /*!< Vertical, Upward direction */ 456 TEMOD16_EYE_VD , /*!< Vertical, Downward direction */ 457 TEMOD16_EYE_HL , /*!< Horizontal, Left direction */ 458 TEMOD16_EYE_HR , /*!< Horizontal, Right direction */ 459 TEMOD16_EYE_ILLEGAL /*!< Programmatic illegal boundary. */ 460 } temod16_eye_direction; 461 462 /*! \def CNT_temod16_eye_direction Types of enum temod16_eye_direction */ 463 #define CNT_temod16_eye_direction 5 464 465 /*! 466 \brief 467 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 468 by the enum var. 469 470 */ 471 extern char* e2s_temod16_eye_direction [CNT_temod16_eye_direction]; 472 473 474 typedef enum { 475 TEMOD16_ABILITY_1G_KX = 0 , /*!< CL73 speed 1G_KX ease */ 476 TEMOD16_ABILITY_10G_KX4 , /*!< please write comments */ 477 TEMOD16_ABILITY_10G_KR , /*!< please write comments */ 478 TEMOD16_ABILITY_40G_KR4 , /*!< please write comments */ 479 TEMOD16_ABILITY_40G_CR4 , /*!< please write comments */ 480 TEMOD16_ABILITY_100G_CR10 , /*!< please write comments */ 481 TEMOD16_ABILITY_20G_KR2 , /*!< please write comments */ 482 TEMOD16_ABILITY_20G_CR2 , /*!< please write comments */ 483 TEMOD16_ABILITY_ILLEGAL /*!< please write comments */ 484 } temod16_tech_ability; 485 486 /*! \def CNT_temod16_tech_ability Types of enum temod16_tech_ability */ 487 #define CNT_temod16_tech_ability 9 488 489 /*! 490 \brief 491 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 492 by the enum var. 493 494 */ 495 extern char* e2s_temod16_tech_ability [CNT_temod16_tech_ability]; 496 /*! 497 \brief 498 This array associates the enum #temod16_lane_select enum with a bit mask. 499 The index is the #temod16_lane_select enum value. The value for each entry is 500 interpreted as follows. If bit [n] is 1, then lane [n] is enabled; if bit [n] 501 is 0, then lane [n] is disabled. By enabled, we mean that such-and-such 502 function is to be called for a lane; by disabled, we mean that such-and-such 503 function is not to be called for a lane. So a value of 0xF indicates that all 504 lanes or enabled, while 0x5 indicates that only lanes 0 and 2 are enabled. 505 506 */ 507 extern int e2n_temod16_tech_ability [CNT_temod16_tech_ability]; 508 /*! \enum temod16_cl37bam_ability 509 510 This array associates the enum #temod16_lane_select enum with a bit mask. 511 The index is the #temod16_lane_select enum value. The value for each entry is 512 interpreted as follows. If bit [n] is 1, then lane [n] is enabled; if bit [n] 513 is 0, then lane [n] is disabled. Enabled implies the function under 514 consideration be enebled for the lane. Disabled means the opposite. So a value 515 of 0xF indicates that all lanes or enabled, while 0x5 indicates that only lanes 516 0 and 2 are enabled. 517 518 temod16_cl37bam_ability enumerates different types of speed advertisements in the 519 basic autoneg page for CL37BAM only. 520 521 Currently all speeds have the following bit positions in temod16_st 522 523 \li TEMOD16_BAM37ABL_2P5G Bit Pos: 0 524 \li TEMOD16_BAM37ABL_5G_X4 Bit Pos: 1 525 \li TEMOD16_BAM37ABL_6G_X4 Bit Pos: 2 526 \li TEMOD16_BAM37ABL_10G_HIGIG Bit Pos: 3 527 \li TEMOD16_BAM37ABL_10G_CX4 Bit Pos: 4 528 \li TEMOD16_BAM37ABL_12G_X4 Bit Pos: 5 529 \li TEMOD16_BAM37ABL_12P5_X4 Bit Pos: 6 530 \li TEMOD16_BAM37ABL_13G_X4 Bit Pos: 7 531 \li TEMOD16_BAM37ABL_15G_X4 Bit Pos: 8 532 \li TEMOD16_BAM37ABL_16G_X4 Bit Pos: 9 533 \li TEMOD16_BAM37ABL_20G_X4_CX4 Bit Pos: 10 534 \li TEMOD16_BAM37ABL_20G_X4 Bit Pos: 11 535 \li TEMOD16_BAM37ABL_21G_X4 Bit Pos: 12 536 \li TEMOD16_BAM37ABL_25P455G Bit Pos: 13 537 \li TEMOD16_BAM37ABL_31P5G Bit Pos: 14 538 \li TEMOD16_BAM37ABL_32P7G Bit Pos: 15 539 \li TEMOD16_BAM37ABL_40G Bit Pos: 16 540 \li TEMOD16_BAM37ABL_10G_X2_CX4 Bit Pos: 17 541 \li TEMOD16_BAM37ABL_10G_DXGXS Bit Pos: 18 542 \li TEMOD16_BAM37ABL_10P5G_DXGXS Bit Pos: 19 543 \li TEMOD16_BAM37ABL_12P7_DXGXS Bit Pos: 20 544 \li TEMOD16_BAM37ABL_15P75G_R2 Bit Pos: 21 545 \li TEMOD16_BAM37ABL_20G_X2_CX4 Bit Pos: 22 546 \li TEMOD16_BAM37ABL_20G_X2 Bit Pos: 23 547 548 549 */ 550 551 typedef enum { 552 TEMOD16_BAM37ABL_2P5G = 0 , /*!< X1 BRCM */ 553 TEMOD16_BAM37ABL_5G_X4 , /*!< BRCM */ 554 TEMOD16_BAM37ABL_6G_X4 , /*!< BRCM */ 555 TEMOD16_BAM37ABL_10G_HIGIG , /*!< HG (10G_X4) */ 556 TEMOD16_BAM37ABL_10G_CX4 , /*!< (10G_X4_CX4) */ 557 TEMOD16_BAM37ABL_12G_X4 , /*!< HG */ 558 TEMOD16_BAM37ABL_12P5_X4 , /*!< HG */ 559 TEMOD16_BAM37ABL_13G_X4 , /*!< HG */ 560 TEMOD16_BAM37ABL_15G_X4 , /*!< HG */ 561 TEMOD16_BAM37ABL_16G_X4 , /*!< HG */ 562 TEMOD16_BAM37ABL_20G_X4_CX4 , /*!< XAUI 8b10b scram(20G_X4S) */ 563 TEMOD16_BAM37ABL_20G_X4 , /*!< HG */ 564 TEMOD16_BAM37ABL_21G_X4 , /*!< HG */ 565 TEMOD16_BAM37ABL_25P455G , /*!< X4 HG */ 566 TEMOD16_BAM37ABL_31P5G , /*!< X4 HG */ 567 TEMOD16_BAM37ABL_32P7G , /*!< X4 HG */ 568 TEMOD16_BAM37ABL_40G , /*!< X4 BRCM HG (40G_X4) */ 569 TEMOD16_BAM37ABL_10G_X2_CX4 , /*!< 10G_X2_CX4 */ 570 TEMOD16_BAM37ABL_10G_DXGXS , /*!< 10G_X2 */ 571 TEMOD16_BAM37ABL_10P5G_DXGXS , /*!< 10P5_X2 */ 572 TEMOD16_BAM37ABL_12P7_DXGXS , /*!< 12P7_X2 */ 573 TEMOD16_BAM37ABL_15P75G_R2 , /*!< 15P75_X2 */ 574 TEMOD16_BAM37ABL_20G_X2_CX4 , /*!< 20G_X2_CX4 */ 575 TEMOD16_BAM37ABL_20G_X2 , /*!< 20G_X2 */ 576 TEMOD16_BAM37ABL_ILLEGAL /*!< Illegal. Programmatic boundary */ 577 } temod16_cl37bam_ability; 578 579 /*! \def CNT_temod16_cl37bam_ability Types of enum temod16_cl37bam_ability */ 580 #define CNT_temod16_cl37bam_ability 25 581 582 /*! 583 \brief 584 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 585 by the enum var. 586 587 */ 588 extern char* e2s_temod16_cl37bam_ability [CNT_temod16_cl37bam_ability]; 589 /*! \enum temod16_diag_an_type 590 591 This array associates the enum #temod16_lane_select enum with a bit mask. 592 The index is the #temod16_lane_select enum value. The value for each entry is 593 interpreted as follows. If bit [n] is 1, then lane [n] is enabled; if bit [n] 594 is 0, then lane [n] is disabled. By enabled, we mean that such-and-such 595 function is to be called for a lane; by disabled, we mean that such-and-such 596 function is not to be called for a lane. So a value of 0xF indicates that all 597 lanes or enabled, while 0x5 indicates that only lanes 0 and 2 are enabled. 598 599 */ 600 601 typedef enum { 602 TEMOD16_DIAG_AN_DONE = 0 , /*!< AN completion check */ 603 TEMOD16_DIAG_AN_HCD , /*!< AN HCD speed check */ 604 TEMOD16_DIAG_AN_TYPE_ILLEGAL /*!< Illegal value. programmatic boundary */ 605 } temod16_diag_an_type; 606 607 /*! \def CNT_temod16_diag_an_type Types of enum temod16_diag_an_type */ 608 #define CNT_temod16_diag_an_type 3 609 610 /*! 611 \brief 612 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 613 by the enum var. 614 615 */ 616 extern char* e2s_temod16_diag_an_type [CNT_temod16_diag_an_type]; 617 /*! \enum temod16_tier1_function_type 618 619 This array associates the enum #temod16_lane_select enum with a bit mask. 620 The index is the #temod16_lane_select enum value. The value for each entry is 621 interpreted as follows. If bit [n] is 1, then lane [n] is enabled; if bit [n] 622 is 0, then lane [n] is disabled. By enabled, we mean that such-and-such 623 function is to be called for a lane; by disabled, we mean that such-and-such 624 function is not to be called for a lane. So a value of 0xF indicates that all 625 lanes or enabled, while 0x5 indicates that only lanes 0 and 2 are enabled. 626 627 */ 628 629 typedef enum { 630 PCS_BYPASS_CTL = 0 , /*!< temod16_pcs_bypass_ctl */ 631 INIT_PCS , /*!< temod16_init_pcs */ 632 INIT_PMD_SW , /*!< temod16_init_pmd_sw */ 633 INIT_PMD , /*!< temod16_init_pmd */ 634 PMD_RESET_SEQ , /*!< temod16_pmd_reset_seq */ 635 PMD_X4_RESET , /*!< temod16_pmd_x4_reset */ 636 WAIT_SC_DONE , /*!< temod16_wait_sc_done */ 637 ENABLE_SET , /*!< temod16_enable_set */ 638 FECMODE_SET , /*!< temod16_fecmode_set */ 639 GET_PCS_LINK_STATUS , /*!< temod16_get_pcs_link_status */ 640 OVERRIDE_SET , /*!< temod16_override_set */ 641 CREDIT_OVERRIDE_SET , /*!< temod16_credit_override_set */ 642 ENCODE_SET , /*!< temod16_encode_set */ 643 DECODE_SET , /*!< temod16_decode_set */ 644 CREDIT_CONTROL , /*!< temod16_credit_control */ 645 TX_LANE_CONTROL , /*!< temod16_tx_lane_control */ 646 RX_LANE_CONTROL , /*!< temod16_rx_lane_control */ 647 TX_LANE_DISABLE , /*!< temod16_tx_lane_disable */ 648 POWER_CONTROL , /*!< temod16_power_control */ 649 AUTONEG_SET , /*!< temod16_autoneg_set */ 650 AUTONEG_GET , /*!< temod16_autoneg_get */ 651 AUTONEG_CONTROL , /*!< temod16_autoneg_control */ 652 TSC12_CONTROL , /*!< temod16_tsc12_control */ 653 CHECK_SC_STATS , /*!< temod16_check_sc_stats */ 654 REG_READ , /*!< temod16_reg_read */ 655 REG_WRITE , /*!< temod16_reg_write */ 656 PRBS_CHECK , /*!< temod16_prbs_check */ 657 CJPAT_CRPAT_MODE_SET , /*!< temod16_cjpat_crpat_mode_set */ 658 CJPAT_CRPAT_CHECK , /*!< temod16_cjpat_crpat_check */ 659 TEMOD16_DIAG , /*!< temod16_diag */ 660 PCS_LANE_SWAP , /*!< temod16_pcs_lane_swap */ 661 PMD_LANE_SWAP , /*!< temod16_pmd_lane_swap */ 662 PMD_LANE_SWAP_TX , /*!< temod16_pmd_lane_swap_tx */ 663 PARALLEL_DETECT_CONTROL , /*!< temod16_parallel_detect_control */ 664 REVID_READ , /*!< temod16_revid_read */ 665 SOFT_RESET , /*!< temod16_soft_reset */ 666 SET_SPD_INTF , /*!< temod16_set_spd_intf */ 667 SET_PORT_MODE , /*!< temod16_set_port_mode */ 668 EEE_PASSTHRU_SET , /*!< temod16_EEE_pass_thru_set */ 669 EEE_PASSTHRU_GET , /*!< temod16_EEE_pass_thru_get */ 670 FEC_CONTROL , /*!< temod16_FEC_control */ 671 HIGIG2_CONTROL , /*!< temod16_HIGIG2_control */ 672 LF_RF_CONTROL , /*!< temod16_LF_RF_control */ 673 RX_FAST_LOCK_CONTROL , /*!< temod16_rx_fast_lock_control */ 674 PMD_CORE_RESET , /*!< temod16_pmd_core_reset */ 675 PMD_LANE_RESET , /*!< temod16_pmd_lane_reset */ 676 AFE_SPEED_UP_DSC_VGA , /*!< temod16_afe_speed_up_dsc_vga */ 677 CLAUSE_72_CONTROL , /*!< temod16_clause72_control */ 678 PLL_SEQUENCER_CONTROL , /*!< temod16_pll_sequencer_control */ 679 PLL_LOCK_WAIT , /*!< temod16_pll_lock_wait */ 680 PROG_DATA , /*!< temod16_prog_data */ 681 RX_SEQ_CONTROL , /*!< temod16_rx_seq_control */ 682 SET_POLARITY , /*!< temod16_tx_rx_polarity */ 683 PRBS_CONTROL , /*!< temod16_prbs_control */ 684 PRBS_MODE , /*!< temod16_prbs_mode */ 685 RX_PF_CONTROL , /*!< temod16_rx_PF_control */ 686 RX_VGA_CONTROL , /*!< temod16_rx_VGA_control */ 687 CJPAT_CRPAT_CONTROL , /*!< temod16_cjpat_crpat_control */ 688 TX_LOOPBACK_CONTROL , /*!< temod16_tx_loopback_control */ 689 TX_PMD_LOOPBACK_CONTROL , /*!< temod16_tx_pmd_loopback_control */ 690 RX_LOOPBACK_CONTROL , /*!< temod16_rx_loopback_control */ 691 RX_P1_SLICER_CONTROL , /*!< temod16_rx_p1_slicer_control */ 692 RX_M1_SLICER_CONTROL , /*!< temod16_rx_m1_slicer_control */ 693 RX_D_SLICER_CONTROL , /*!< temod16_rx_d_slicer_control */ 694 WAIT_PMD_LOCK , /*!< temod16_wait_pmd_lock */ 695 FIRMWARE_SET , /*!< temod16_firmware_set */ 696 INIT_PMD_QSGMII , /*!< temod16_init_pmd_qsgmii */ 697 INIT_PCS_ILKN , /*!< temod16_init_pcs_ilkn */ 698 PMD_RESET_BYPASS , /*!< temod16_pmd_reset_bypass */ 699 PMD_OVERRIDE_CONTROL , /*!< temod16_pmd_override_control */ 700 TIER1_FUNCTION_ILLEGAL /*!< always last */ 701 } temod16_tier1_function_type; 702 703 /*! \def CNT_temod16_tier1_function_type Types of enum temod16_tier1_function_type */ 704 #define CNT_temod16_tier1_function_type 71 705 706 /*! 707 \brief 708 This array returns the string version of the enum #temod16_pmd_diag_type when indexed 709 by the enum var. 710 711 */ 712 extern char* e2s_temod16_tier1_function_type [CNT_temod16_tier1_function_type]; 713 /*! \enum sc_mode_type 714 715 temod16_core_select selects for programming, any combination of 3 716 core of the PHY. 717 This is only applicable to the 12x10 version of the TSCE core. 718 A '1' in the latter part of the enum selects the core. 719 720 721 */ 722 723 typedef enum { 724 TEMOD16_SC_MODE_HT_WITH_BASIC_OVERRIDE = 0 , /*!< TEMOD16_SC_MODE_HT_WITH_BASIC_OVERRIDE */ 725 TEMOD16_SC_MODE_HT_OVERRIDE , /*!< TEMOD16_SC_MODE_HT_OVERRIDE */ 726 TEMOD16_SC_MODE_ST , /*!< TEMOD16_SC_MODE_ST */ 727 TEMOD16_SC_MODE_ST_OVERRIDE , /*!< TEMOD16_SC_MODE_ST_OVERRIDE */ 728 TEMOD16_SC_MODE_AN_CL37 , /*!< TEMOD16_SC_MODE_AN_CL37 */ 729 TEMOD16_SC_MODE_AN_CL73 , /*!< TEMOD16_SC_MODE_AN_CL73 */ 730 TEMOD16_SC_MODE_BYPASS , /*!< TEMOD16_SC_MODE_BYPASS */ 731 TEMOD16_SC_MODE_ILLEGAL /*!< TEMOD16_SC_MODE_ILLEGAL */ 732 } sc_mode_type; 733 734 /*! \def CNT_sc_mode_type Types of enum sc_mode_type */ 735 #define CNT_sc_mode_type 8 736 737 /*! 738 \brief 739 This array returns the string version of the enum 740 #temod16_core_select when 741 indexed by the enum var. 742 743 */ 744 extern char* e2s_temod16_sc_mode_type [CNT_sc_mode_type]; 745 /*! 746 \brief 747 This array associates the enum #temod16_core_select enum with a 748 bit mask. 749 The index is the #temod16_core_select enum value. The value for 750 each entry is 751 interpreted as follows. If bit [n] is 1, then core [n] is 752 addressed; if bit [n] 753 is 0, then core [n] is addressed. 754 755 */ 756 extern int e2n_temod16_sc_mode_type [CNT_sc_mode_type]; 757 /*! \enum temod16_pll_mode_type 758 759 temod16_pll_mode_type divides the PLL to get a clock which is a multiple of the 760 refernce clock. This clock runs all the digital logic in the MAC and PHY layers 761 and is referred to as TSC_CLK. To get the TSC_CLK, you simply multiply the 762 reference clock by the pll divider value (not the reg. bit location) 763 764 */ 765 766 typedef enum { 767 TEMOD16_PLL_MODE_DIV_ZERO = 0 , /*!< Illegal PLL Divider Number */ 768 TEMOD16_PLL_MODE_DIV_40 = 2 , /*!< Multiply ref. clk by 40 */ 769 TEMOD16_PLL_MODE_DIV_42 = 3 , /*!< Multiply ref. clk by 42 */ 770 TEMOD16_PLL_MODE_DIV_48 = 4 , /*!< Multiply ref. clk by 48 */ 771 TEMOD16_PLL_MODE_DIV_52 = 6 , /*!< Multiply ref. clk by 52 */ 772 TEMOD16_PLL_MODE_DIV_54 = 7 , /*!< Multiply ref. clk by 54 */ 773 TEMOD16_PLL_MODE_DIV_60 = 8 , /*!< Multiply ref. clk by 60 */ 774 TEMOD16_PLL_MODE_DIV_64 = 9 , /*!< Multiply ref. clk by 64 */ 775 TEMOD16_PLL_MODE_DIV_66 = 10 , /*!< Multiply ref. clk by 66 */ 776 TEMOD16_PLL_MODE_DIV_70 = 12 , /*!< Multiply ref. clk by 70 */ 777 TEMOD16_PLL_MODE_DIV_80 = 13 , /*!< Multiply ref. clk by 80 */ 778 TEMOD16_PLL_MODE_DIV_92 = 14 , /*!< Multiply ref. clk by 92 */ 779 TEMOD16_PLL_MODE_DIV_ILLEGAL /*!< Illegal (programmatic boundary) */ 780 } temod16_pll_mode_type; 781 782 /*! \def CNT_temod16_pll_mode_type Types of enum temod16_pll_mode_type */ 783 #define CNT_temod16_pll_mode_type 13 784 785 /*! 786 \brief 787 This array returns the string of #temod16_pll_mode_type when indexed by the enum. 788 789 */ 790 extern char* e2s_temod16_pll_mode_type [CNT_temod16_pll_mode_type]; 791 /*! 792 \brief 793 This array returns the clock multiplier of #temod16_pll_mode_type when indexed by the enum. 794 795 */ 796 extern int e2n_temod16_pll_mode_type [CNT_temod16_pll_mode_type]; 797 /*! \enum temod16_os_mode_type 798 799 800 The oversampling mode means that bits are sent out more than once to reduce 801 the effective frequency of data transfer. For example you can send 5G bits 802 over a 10G bit lane by sending every bit twice, or OS=2. When the OS is 3.3 803 it's a bit tricky, we send bits 3 or 4 times in a pattern like so 804 3,3,3,4,3,3,3,4,... Similarly for OS = 8, we send 8,8,8,9,8,8,8,9,... 805 806 807 */ 808 809 typedef enum { 810 TEMOD16_PMA_OS_MODE_1 = 0 , /*!< Over sampling Mode 1 */ 811 TEMOD16_PMA_OS_MODE_2 = 1 , /*!< Over sampling Mode 2 */ 812 TEMOD16_PMA_OS_MODE_3 = 2 , /*!< Over sampling Mode 3 */ 813 TEMOD16_PMA_OS_MODE_3_3 = 3 , /*!< Over sampling Mode 3.3 */ 814 TEMOD16_PMA_OS_MODE_4 = 4 , /*!< Over sampling Mode 4 */ 815 TEMOD16_PMA_OS_MODE_5 = 5 , /*!< Over sampling Mode 5 */ 816 TEMOD16_PMA_OS_MODE_7_25 = 6 , /*!< Over sampling Mode 7.25 */ 817 TEMOD16_PMA_OS_MODE_8 = 7 , /*!< Over sampling Mode 8 */ 818 TEMOD16_PMA_OS_MODE_8_25 = 8 , /*!< Over sampling Mode 8.25 */ 819 TEMOD16_PMA_OS_MODE_10 = 9 , /*!< Over sampling Mode 10 */ 820 TEMOD16_PMA_OS_MODE_ILLEGAL = 15 /*!< Over sampling Mode Illegal */ 821 } temod16_os_mode_type; 822 823 /*! \def CNT_temod16_os_mode_type Types of enum temod16_os_mode_type */ 824 #define CNT_temod16_os_mode_type 11 825 826 /*! 827 \brief 828 This array returns the string of #temod16_os_mode when indexed by the enum. 829 830 */ 831 extern char* e2s_temod16_os_mode_type [CNT_temod16_os_mode_type]; 832 /*! 833 \brief 834 This array returns the over sampling value of #temod16_os_mode when indexed by 835 the enum. For floating values 3.3 and 8.25 it returns 33 and 825. 836 837 */ 838 extern int e2n_temod16_os_mode_type [CNT_temod16_os_mode_type]; 839 /*! \enum temod16_scr_mode 840 841 This mode indicates how many bits of a 'frame' will be scrambled. We have either 842 66 or 80 bits per frame (depending on 8b10b or 64b66b encoding). Normally 843 scrambling is 844 845 \li bypassed for baud rates under 6.25G (0). 846 \li we scramble all 66 bits (1) 847 \li all 80 bits(2) 848 \li only 64 of the 66b (3). i.e we don't scramble the 'sync' bits. 849 850 */ 851 852 typedef enum { 853 TEMOD16_SCR_MODE_BYPASS = 0 , /*!< Scrambling Mode bypassed */ 854 TEMOD16_SCR_MODE_66B = 1 , /*!< Scrambling Mode 66B */ 855 TEMOD16_SCR_MODE_80B = 2 , /*!< Scrambling Mode 80B */ 856 TEMOD16_SCR_MODE_64B = 3 /*!< Scrambling Mode 64B */ 857 } temod16_scr_mode; 858 859 /*! \def CNT_temod16_scr_mode Types of enum temod16_scr_mode */ 860 #define CNT_temod16_scr_mode 4 861 862 /*! 863 \brief 864 This array returns the string of #temod16_scr_mode when indexed by the enum. 865 866 */ 867 extern char* e2s_temod16_scr_mode [CNT_temod16_scr_mode]; 868 /*! 869 \brief 870 This array returns the scrambling mode of #temod16_scr_mode when indexed by 871 the enum. 872 873 */ 874 extern int e2n_temod16_scr_mode [CNT_temod16_scr_mode]; 875 /*! \enum temod16_encode_mode 876 877 Serial bits are encoded when transmitted. The encoding depends on the baud rate 878 and the link type 879 \li 000 All encoding functions disabled for lane 880 \li 001 8b10b (cl48 ) 881 \li 010 8b10b (cl48 rxaui) 882 \li 011 8b10b (cl36 ) 883 \li 100 64b66b (cl82 ) 884 \li 101 64b66b (cl49 ) 885 \li 110 64b66b (brcm ) 886 887 */ 888 889 typedef enum { 890 TEMOD16_ENCODE_MODE_NONE = 0 , /*!< Encoding Mode NONE */ 891 TEMOD16_ENCODE_MODE_CL48 = 1 , /*!< Encoding Mode CL48 */ 892 TEMOD16_ENCODE_MODE_CL48_2_LANE = 2 , /*!< Encoding Mode CL48 */ 893 TEMOD16_ENCODE_MODE_CL36 = 3 , /*!< Encoding Mode CL36 */ 894 TEMOD16_ENCODE_MODE_CL82 = 4 , /*!< Encoding Mode CL82 */ 895 TEMOD16_ENCODE_MODE_CL49 = 5 , /*!< Encoding Mode CL49 */ 896 TEMOD16_ENCODE_MODE_BRCM = 6 , /*!< Encoding Mode BRCM */ 897 TEMOD16_ENCODE_MODE_ILLEGAL = 7 /*!< Encoding Mode Illegal */ 898 } temod16_encode_mode; 899 900 /*! \def CNT_temod16_encode_mode Types of enum temod16_encode_mode */ 901 #define CNT_temod16_encode_mode 8 902 903 /*! 904 \brief 905 This array returns the string of #temod16_encode_mode when indexed by the enum. 906 907 */ 908 extern char* e2s_temod16_encode_mode [CNT_temod16_encode_mode]; 909 /*! 910 \brief 911 This array returns the encoding mode of #temod16_encode_mode when indexed by 912 the enum. 913 914 */ 915 extern int e2n_temod16_encode_mode [CNT_temod16_encode_mode]; 916 /*! \enum temod16_check_end_mode 917 918 Check end is a disparity based error bit set by the PCS for CL48. The generation 919 of this error bit depends on the speed. 920 921 */ 922 923 typedef enum { 924 TEMOD16_CL48_CHECK_END_OFF = 0 , /*!< Don't generate checkend error bit */ 925 TEMOD16_CL48_CHECK_END_ON = 1 /*!< generate checkend error bit */ 926 } temod16_check_end_mode; 927 928 /*! \def CNT_temod16_check_end_mode Types of enum temod16_check_end_mode */ 929 #define CNT_temod16_check_end_mode 2 930 931 /*! 932 \brief 933 This array returns the string of #temod16_check_end_mode when indexed by the enum. 934 935 */ 936 extern char* e2s_temod16_check_end_mode [CNT_temod16_check_end_mode]; 937 /*! \enum temod16_sigdet_filter 938 939 No documentation available 940 941 */ 942 943 typedef enum { 944 TEMOD16_SIGDET_FILTER_NONCX4 = 0 , /*!< No description available */ 945 TEMOD16_SIGDET_FILTER_CX4 = 1 /*!< No description available */ 946 } temod16_sigdet_filter; 947 948 /*! \def CNT_temod16_sigdet_filter Types of enum temod16_sigdet_filter */ 949 #define CNT_temod16_sigdet_filter 2 950 951 /*! 952 \brief 953 This array returns the string of #temod16_sigdet_filter when indexed by the enum. 954 955 */ 956 extern char* e2s_temod16_sigdet_filter [CNT_temod16_sigdet_filter]; 957 /*! \enum temod16_blocksync_mode 958 959 A block is detected in ports with multiple lanes. PCS has to recognize blocks 960 since the bits may come in skewed in time over lanes. This feature identifies 961 the block type, which is a feature of the speed. 962 963 000 none 964 001 cl49 mode - enables func_cl49cl82_sync block 965 010 cl82 mode - enables func_cl49cl82_sync block 966 011 8b10b mode - enables the func_8b10b_sync block 967 100 fec mode - enables the func_fec_sync block 968 101 brcm 64b66b mode 969 970 */ 971 972 typedef enum { 973 TEMOD16_BLOCKSYNC_MODE_NONE = 0 , /*!< Block sync mode none */ 974 TEMOD16_BLOCKSYNC_MODE_CL49 = 1 , /*!< Block sync mode CL49 type */ 975 TEMOD16_BLOCKSYNC_MODE_CL82 = 2 , /*!< Block sync mode CL82 type */ 976 TEMOD16_BLOCKSYNC_MODE_8B10B = 3 , /*!< Block sync mode 8B10B type */ 977 TEMOD16_BLOCKSYNC_MODE_FEC = 4 , /*!< Block sync mode FEC type */ 978 TEMOD16_BLOCKSYNC_MODE_BRCM = 5 , /*!< Block sync mode BRCM type */ 979 TEMOD16_BLOCKSYNC_MODE_ILLEGAL = 7 /*!< Block sync mode illegal */ 980 } temod16_blocksync_mode; 981 982 /*! \def CNT_temod16_blocksync_mode Types of enum temod16_blocksync_mode */ 983 #define CNT_temod16_blocksync_mode 7 984 985 /*! 986 \brief 987 This array returns the string of #temod16_blocksync_mode when indexed by the enum. 988 989 */ 990 extern char* e2s_temod16_blocksync_mode [CNT_temod16_blocksync_mode]; 991 /*! \enum temod16_reorder_mode 992 993 Depending on aggregation mode we have various types of reordering of serial 994 bits. 995 996 */ 997 998 typedef enum { 999 TEMOD16_R_REORDER_MODE_NONE = 0 , /*!< Reorder mode NONE type */ 1000 TEMOD16_R_REORDER_MODE_CL48 = 1 , /*!< Reorder mode CL48 type */ 1001 TEMOD16_R_REORDER_MODE_CL36 = 2 , /*!< Reorder mode CL36 type */ 1002 TEMOD16_R_REORDER_MODE_CL36_CL48 = 3 /*!< Reorder mode CL36_CL48 type */ 1003 } temod16_reorder_mode; 1004 1005 /*! \def CNT_temod16_reorder_mode Types of enum temod16_reorder_mode */ 1006 #define CNT_temod16_reorder_mode 4 1007 1008 /*! 1009 \brief 1010 This array returns the string of #temod16_reorder_mode when indexed by the enum. 1011 1012 */ 1013 extern char* e2s_temod16_reorder_mode [CNT_temod16_reorder_mode]; 1014 /*! \enum temod16_cl36_mode 1015 1016 Cl36 mode control 1017 1018 */ 1019 1020 typedef enum { 1021 TEMOD16_CL36_DISABLE = 0 , /*!< */ 1022 TEMOD16_CL36_ENABLE = 1 /*!< */ 1023 } temod16_cl36_mode; 1024 1025 /*! \def CNT_temod16_cl36_mode Types of enum temod16_cl36_mode */ 1026 #define CNT_temod16_cl36_mode 2 1027 1028 /*! 1029 \brief 1030 This array returns the string of #temod16_cl36_mode when indexed by the enum. 1031 1032 */ 1033 extern char* e2s_temod16_cl36_mode [CNT_temod16_cl36_mode]; 1034 /*! \enum temod16_descrambler_mode 1035 1036 The descrambling must match the scrambling done at the transmitting port. 1037 1038 */ 1039 1040 typedef enum { 1041 TEMOD16_R_DESCR1_MODE_BYPASS = 0 , /*!< No descrambling */ 1042 TEMOD16_R_DESCR1_MODE_66B = 1 , /*!< 66b descrambling */ 1043 TEMOD16_R_DESCR1_MODE_10B = 2 , /*!< 10b descrambling */ 1044 TEMOD16_R_DESCR1_MODE_ILLEGAL = 3 /*!< */ 1045 } temod16_descrambler_mode; 1046 1047 /*! \def CNT_temod16_descrambler_mode Types of enum temod16_descrambler_mode */ 1048 #define CNT_temod16_descrambler_mode 4 1049 1050 /*! 1051 \brief 1052 This array returns the string of #temod16_descrambler_mode when indexed by the enum. 1053 1054 */ 1055 extern char* e2s_temod16_descrambler_mode [CNT_temod16_descrambler_mode]; 1056 /*! \enum temod16_decoder_mode 1057 1058 The descrambling must match the scrambling done at the transmitting port. 1059 1060 */ 1061 1062 typedef enum { 1063 TEMOD16_DECODER_MODE_NONE = 0 , /*!< decoder mode NONE */ 1064 TEMOD16_DECODER_MODE_CL49 = 1 , /*!< decoder mode CL49 */ 1065 TEMOD16_DECODER_MODE_BRCM = 2 , /*!< decoder mode BRCM */ 1066 TEMOD16_DECODER_MODE_ALU = 3 , /*!< decoder mode ALU */ 1067 TEMOD16_DECODER_MODE_CL48 = 4 , /*!< decoder mode CL48 */ 1068 TEMOD16_DECODER_MODE_CL36 = 5 , /*!< decoder mode CL36 */ 1069 TEMOD16_DECODER_MODE_CL82 = 6 , /*!< decoder mode CL82 */ 1070 TEMOD16_DECODER_MODE_ILLEGAL = 7 /*!< decoder mode ILLEGAL */ 1071 } temod16_decoder_mode; 1072 1073 /*! \def CNT_temod16_decoder_mode Types of enum temod16_decoder_mode */ 1074 #define CNT_temod16_decoder_mode 8 1075 1076 /*! 1077 \brief 1078 This array returns the string of #temod16_decoder_mode when indexed by the enum. 1079 1080 */ 1081 extern char* e2s_temod16_decoder_mode [CNT_temod16_decoder_mode]; 1082 /*! \enum temod16_deskew_mode 1083 1084 Deskew Mode is a function of speed. 1085 1086 */ 1087 1088 typedef enum { 1089 TEMOD16_R_DESKEW_MODE_BYPASS = 0 , /*!< deskew mode BYPASS */ 1090 TEMOD16_R_DESKEW_MODE_8B_10B = 1 , /*!< deskew mode 8B_10B */ 1091 TEMOD16_R_DESKEW_MODE_BRCM_66B = 2 , /*!< deskew mode BRCM_66B */ 1092 TEMOD16_R_DESKEW_MODE_CL82_66B = 3 , /*!< deskew mode CL82_66B */ 1093 TEMOD16_R_DESKEW_MODE_CL36_10B = 4 , /*!< deskew mode CL36_10B */ 1094 TEMOD16_R_DESKEW_MODE_ILLEGAL = 7 /*!< deskew mode ILLEGAL */ 1095 } temod16_deskew_mode; 1096 1097 /*! \def CNT_temod16_deskew_mode Types of enum temod16_deskew_mode */ 1098 #define CNT_temod16_deskew_mode 6 1099 1100 /*! 1101 \brief 1102 This array returns the string of #temod16_deskew_mode when indexed by the enum. 1103 1104 */ 1105 extern char* e2s_temod16_deskew_mode [CNT_temod16_deskew_mode]; 1106 /*! \enum temod16_descrambler2_mode 1107 1108 No description 1109 1110 */ 1111 1112 typedef enum { 1113 TEMOD16_DESC2_MODE_NONE = 0 , /*!< Descrambler2 mode NONE */ 1114 TEMOD16_DESC2_MODE_CL49 = 1 , /*!< Descrambler2 mode CL49 */ 1115 TEMOD16_DESC2_MODE_BRCM = 2 , /*!< Descrambler2 mode BRCM */ 1116 TEMOD16_DESC2_MODE_ALU = 3 , /*!< Descrambler2 mode ALU */ 1117 TEMOD16_DESC2_MODE_CL48 = 4 , /*!< Descrambler2 mode CL48 */ 1118 TEMOD16_DESC2_MODE_CL36 = 5 , /*!< Descrambler2 mode CL36 */ 1119 TEMOD16_DESC2_MODE_CL82 = 6 , /*!< Descrambler2 mode CL82 */ 1120 TEMOD16_DESC2_MODE_ILLEGAL = 7 /*!< Descrambler2 mode ILLEGAL */ 1121 } temod16_descrambler2_mode; 1122 1123 /*! \def CNT_temod16_descrambler2_mode Types of enum temod16_descrambler2_mode */ 1124 #define CNT_temod16_descrambler2_mode 8 1125 1126 /*! 1127 \brief 1128 This array returns the string of #temod16_descrambler2_mode when indexed by the enum. 1129 1130 */ 1131 extern char* e2s_temod16_descrambler2_mode [CNT_temod16_descrambler2_mode]; 1132 /*! \enum temod16_byte_del_mode 1133 1134 For low speeds, data is duplicted 10 or 100 times to run at higher bauds. For 1135 example in a 10G lane, we duplicate 100M data 100 times. On the receive side 1136 these duplicate bits must be deleted. 1137 \li 0 - 100M mode (Delete 9 out of every 10 bytes) 1138 \li 1 - 10M mode (Delete 99 out of every 100 bytes) 1139 \li 2 - Passthrough (No deletion) 1140 1141 1142 */ 1143 1144 typedef enum { 1145 TEMOD16_R_DESC2_BYTE_DELETION_100M = 0 , /*!< 100M type Byte deletion */ 1146 TEMOD16_R_DESC2_BYTE_DELETION_10M = 1 , /*!< 10M type Byte deletion */ 1147 TEMOD16_R_DESC2_BYTE_DELETION_NONE = 2 /*!< No Byte deletion */ 1148 } temod16_byte_del_mode; 1149 1150 /*! \def CNT_temod16_byte_del_mode Types of enum temod16_byte_del_mode */ 1151 #define CNT_temod16_byte_del_mode 3 1152 1153 /*! 1154 \brief 1155 This array returns the string of #temod16_blocksync_mode when indexed by the enum. 1156 1157 */ 1158 extern char* e2s_temod16_byte_del_mode [CNT_temod16_byte_del_mode]; 1159 /*! \enum temod16_decode_descr_mode 1160 1161 No description 1162 1163 */ 1164 1165 typedef enum { 1166 TEMOD16_R_DEC1_DESCR_MODE_NONE = 0 , /*!< */ 1167 TEMOD16_R_DEC1_DESCR_MODE_BRCM64B66B = 1 /*!< */ 1168 } temod16_decode_descr_mode; 1169 1170 /*! \def CNT_temod16_decode_descr_mode Types of enum temod16_decode_descr_mode */ 1171 #define CNT_temod16_decode_descr_mode 2 1172 1173 /*! 1174 \brief 1175 This array returns the string of #temod16_decode_descr_mode when indexed by the enum. 1176 1177 */ 1178 extern char* e2s_temod16_decode_descr_mode [CNT_temod16_decode_descr_mode]; 1179 /*! \enum an_property_enable 1180 1181 No description 1182 1183 */ 1184 1185 typedef enum { 1186 TEMOD16_AN_PROPERTY_ENABLE_NONE = 0x00000000 , /*!< */ 1187 TEMOD16_AN_PROPERTY_ENABLE_SGMII_MASTER_MODE = 0x00000001 , /*!< */ 1188 TEMOD16_AN_PROPERTY_ENABLE_AN_PD_TO_CL37 = 0x00000002 , /*!< */ 1189 TEMOD16_AN_PROPERTY_ENABLE_SGMII_TO_CL37_AUTO = 0x00000004 , /*!< */ 1190 TEMOD16_AN_PROPERTY_ENABLE_CL37_BAM_to_SGMII_AUTO = 0x00000008 , /*!< */ 1191 TEMOD16_AN_PROPERTY_ENABLE_HPAM_TO_CL73_AUTO = 0x00000010 , /*!< */ 1192 TEMOD16_AN_PROPERTY_ENABLE_CL73_BAM_TO_HPAM_AUTO = 0x00000020 , /*!< */ 1193 TEMOD16_AN_PROPERTY_ENABLE_ILLEGAL = 0x00000040 /*!< */ 1194 } an_property_enable; 1195 1196 /*! \def CNT_an_property_enable Types of enum an_property_enable */ 1197 #define CNT_an_property_enable 8 1198 1199 /*! 1200 \brief 1201 This array returns the string of #an_property_enable when indexed by the enum. 1202 1203 */ 1204 extern char* e2s_temod16_an_property_enable [CNT_an_property_enable]; 1205 /*! \enum credit_type_t 1206 1207 No description 1208 1209 */ 1210 1211 typedef enum { 1212 TEMOD16_CREDIT_RESET = 0x00000000 , /*!< */ 1213 TEMOD16_CREDIT_TABLE = 0x00000001 , /*!< */ 1214 TEMOD16_CREDIT_CLOCK_COUNT_0 = 0x00000002 , /*!< */ 1215 TEMOD16_CREDIT_CLOCK_COUNT_1 = 0x00000004 , /*!< */ 1216 TEMOD16_CREDIT_LOOP_COUNT_0 = 0x00000008 , /*!< */ 1217 TEMOD16_CREDIT_LOOP_COUNT_1 = 0x00000010 , /*!< */ 1218 TEMOD16_CREDIT_MAC = 0x00000020 , /*!< */ 1219 TEMOD16_CREDIT_PCS_CLOCK_COUNT_0 = 0x00000040 , /*!< */ 1220 TEMOD16_CREDIT_PCS_GEN_COUNT = 0x00000080 , /*!< */ 1221 TEMOD16_CREDIT_EN = 0x00000100 , /*!< */ 1222 TEMOD16_CREDIT_PCS_REPCNT = 0x00000200 , /*!< */ 1223 TEMOD16_CREDIT_SGMII_SPD = 0x00000400 , /*!< */ 1224 TEMOD16_CREDIT_ILLEGAL = 0x00000800 /*!< */ 1225 } credit_type_t; 1226 1227 /*! \def CNT_credit_type_t Types of enum credit_type_t */ 1228 #define CNT_credit_type_t 13 1229 1230 /*! 1231 \brief 1232 This array returns the string of #an_property_enable when indexed by the enum. 1233 1234 */ 1235 extern char* e2s_temod16_credit_type_t [CNT_credit_type_t]; 1236 /*! \enum override_type_t 1237 1238 No description 1239 1240 */ 1241 1242 typedef enum { 1243 TEMOD16_OVERRIDE_RESET = 0x00000000 , /*!< */ 1244 TEMOD16_OVERRIDE_CL72 = 0x00000003 , /*!< */ 1245 TEMOD16_OVERRIDE_SPDID = 0x00000007 , /*!< */ 1246 TEMOD16_OVERRIDE_NUM_LANES = 0x00000001 , /*!< */ 1247 TEMOD16_OVERRIDE_OS_MODE = 0x00000002 , /*!< */ 1248 TEMOD16_OVERRIDE_FEC_EN = 0x00000004 , /*!< */ 1249 TEMOD16_OVERRIDE_DESKEW_MODE = 0x00000008 , /*!< */ 1250 TEMOD16_OVERRIDE_DESC2_MODE = 0x00000010 , /*!< */ 1251 TEMOD16_OVERRIDE_CL36BYTEDEL_MODE = 0x00000020 , /*!< */ 1252 TEMOD16_OVERRIDE_BRCM64B66_DESCR_MODE = 0x00000040 , /*!< */ 1253 TEMOD16_OVERRIDE_CHKEND_EN = 0x00000080 , /*!< */ 1254 TEMOD16_OVERRIDE_BLKSYNC_MODE = 0x00000100 , /*!< */ 1255 TEMOD16_OVERRIDE_DECODE_MODE = 0x00000200 , /*!< */ 1256 TEMOD16_OVERRIDE_REORDER_EN = 0x00000400 , /*!< */ 1257 TEMOD16_OVERRIDE_CL36_EN = 0x00000800 , /*!< */ 1258 TEMOD16_OVERRIDE_SCR_MODE = 0x00001000 , /*!< */ 1259 TEMOD16_OVERRIDE_DESCR_MODE = 0x00002000 , /*!< */ 1260 TEMOD16_OVERRIDE_ENCODE_MODE = 0x00004000 , /*!< */ 1261 TEMOD16_OVERRIDE_ALL = 0x00008000 /*!< */ 1262 } override_type_t; 1263 1264 /*! \def CNT_override_type_t Types of enum override_type_t */ 1265 #define CNT_override_type_t 19 1266 1267 /*! 1268 \brief 1269 This array returns the string of #an_property_enable when indexed by the enum. 1270 1271 */ 1272 extern char* e2s_temod16_override_type_t [CNT_override_type_t]; 1273 /*! \enum temod16_ref_clk_t 1274 1275 No description 1276 1277 */ 1278 1279 typedef enum { 1280 TEMOD16REFCLK156MHZ = 0x00000000 , /*!< 156p25MHz */ 1281 TEMOD16REFCLK125MHZ = 0x00000001 , /*!< 125MHz */ 1282 TEMOD16REFCLKCOUNT = 0x00000002 /*!< */ 1283 } temod16_ref_clk_t; 1284 1285 /*! \def CNT_temod16_ref_clk_t Types of enum temod16_ref_clk_t */ 1286 #define CNT_temod16_ref_clk_t 3 1287 1288 /*! 1289 \brief 1290 This array returns the string of #an_property_enable when indexed by the enum. 1291 1292 */ 1293 extern char* e2s_temod16_ref_clk_t [CNT_temod16_ref_clk_t]; 1294 #endif /* _TSCMOD16_ENUM_DEFINES_H */