openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

phyident.h (29407B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        phyident.h
      8  * Purpose:     Basic defines for PHY Model/OUI/Rev for PHY identification. 
      9  * Note:        This header file is for PHY driver module. Should not include
     10  *              this header file in SOC or BCM layers.
     11  */
     12 
     13 #ifndef _PHY_IDENT_H
     14 #define _PHY_IDENT_H
     15 
     16 /*
     17  * Each PHY is identified by OUI (Organizationally Unique Identifier),
     18  * model number, and revision as found in IEEE registers 2 and 3.
     19  */
     20 
     21 #define PHY_BRCM_OUI1   0x001018        /* Broadcom original */
     22 #define PHY_BRCM_OUI1R  0x000818        /* Broadcom reversed */
     23 #define PHY_BRCM_OUI2   0x000af7        /* Broadcom new */
     24 #define PHY_BRCM_OUI3   0x001be9        /* Broadcom new */
     25 #define PHY_BRCM_OUI4   0x00c086        /* Broadcom OUI */
     26 #define PHY_BRCM_OUI5   0x18c086        /* Broadcom OUI */
     27 #define PHY_BRCM_OUI6   0xd40129        /* Broadcom OUI */
     28 #define PHY_BRCM_OUI7   0x000a0c        /* Broadcom OUI */
     29 
     30 #define PHY_ALTIMA_OUI  0x0010a9        /* Altima */
     31 
     32 /*
     33  * Macros to Encode/Decode PHY_ID0/ID1 registers (MDIO register 0x02/0x03)
     34  */
     35 
     36 #define PHY_ID0(oui, model, rev) \
     37     ((uint16)(_shr_bit_rev_by_byte_word32(oui) >> 6 & 0xffff))
     38 
     39 #define PHY_ID1(oui, model, rev) \
     40     ((uint16)(_shr_bit_rev_by_byte_word32(oui) & 0x3f) << 10 | \
     41              ((model) & 0x3f) << 4 | \
     42              ((rev) & 0x0f) << 0)
     43 
     44 #define PHY_OUI(id0, id1) \
     45     _shr_bit_rev_by_byte_word32((uint32)(id0) << 6 | ((id1) >> 10 & 0x3f))
     46 
     47 #define PHY_MODEL(id0, id1) ((id1) >> 4 & 0x3f)
     48 
     49 #define PHY_OUI_MODEL(oui, model)       (((oui) << 8) | (model))
     50 
     51 #define PHY_REV(id0, id1)   ((id1) & 0xf)
     52 
     53 /*
     54  * Identifiers of known PHYs
     55  */
     56 
     57 #define PHY_BCM5218_OUI         PHY_BRCM_OUI1R
     58 #define PHY_BCM5218_MODEL       0x1f
     59 
     60 #define PHY_BCM5220_OUI         PHY_BRCM_OUI1R          /* & BCM5221 */
     61 #define PHY_BCM5220_MODEL       0x1e
     62 
     63 #define PHY_BCM5226_OUI         PHY_BRCM_OUI1R
     64 #define PHY_BCM5226_MODEL       0x1c
     65 
     66 #define PHY_BCM5228_OUI         PHY_BRCM_OUI1R
     67 #define PHY_BCM5228_MODEL       0x1d
     68 
     69 #define PHY_BCM5238_OUI         PHY_BRCM_OUI1R
     70 #define PHY_BCM5238_MODEL       0x20
     71 
     72 #define PHY_BCM5248_OUI         PHY_BRCM_OUI2
     73 #define PHY_BCM5248_MODEL       0x00
     74 
     75 #define PHY_BCM5400_OUI         PHY_BRCM_OUI1
     76 #define PHY_BCM5400_MODEL       0x04
     77 
     78 #define PHY_BCM5401_OUI         PHY_BRCM_OUI1
     79 #define PHY_BCM5401_MODEL       0x05
     80 
     81 #define PHY_BCM5402_OUI         PHY_BRCM_OUI1
     82 #define PHY_BCM5402_MODEL       0x06
     83 
     84 #define PHY_BCM5404_OUI         PHY_BRCM_OUI1
     85 #define PHY_BCM5404_MODEL       0x08
     86 
     87 #define PHY_BCM5411_OUI         PHY_BRCM_OUI1
     88 #define PHY_BCM5411_MODEL       0x07
     89 
     90 #define PHY_BCM5421_OUI         PHY_BRCM_OUI1           /* & 5421S */
     91 #define PHY_BCM5421_MODEL       0x0e
     92 
     93 #define PHY_BCM5424_OUI         PHY_BRCM_OUI1           /* & 5234 */
     94 #define PHY_BCM5424_MODEL       0x0a
     95 
     96 #define PHY_BCM5461_OUI         PHY_BRCM_OUI1           /* & 5461S */
     97 #define PHY_BCM5461_MODEL       0x0c
     98 
     99 #define PHY_BCM5462_OUI         PHY_BRCM_OUI1           /* & 5461D */
    100 #define PHY_BCM5462_MODEL       0x0d
    101 
    102 #define PHY_BCM5464_OUI         PHY_BRCM_OUI1           /* & 5464S */
    103 #define PHY_BCM5464_MODEL       0x0b
    104 
    105 #define PHY_BCM5466_OUI         PHY_BRCM_OUI1           /* & 5466S */
    106 #define PHY_BCM5466_MODEL       0x3b
    107 
    108 #define PHY_BCM5478_OUI         PHY_BRCM_OUI2
    109 #define PHY_BCM5478_MODEL       0x08
    110 
    111 #define PHY_BCM5488_OUI         PHY_BRCM_OUI2
    112 #define PHY_BCM5488_MODEL       0x09
    113 
    114 #define PHY_BCM5482_OUI         PHY_BRCM_OUI2           /* & 5482S */
    115 #define PHY_BCM5482_MODEL       0x0b
    116 
    117 #define PHY_BCM5481_OUI         PHY_BRCM_OUI2           /* & 5481 */
    118 #define PHY_BCM5481_MODEL       0x0a
    119 
    120 #define PHY_BCM54616_OUI        PHY_BRCM_OUI3
    121 #define PHY_BCM54616_MODEL      0x11
    122 
    123 #define PHY_BCM54618SE_OUI      PHY_BRCM_OUI3
    124 #define PHY_BCM54618SE_MODEL    0x0D
    125 
    126 #define PHY_BCM54618E_OUI       PHY_BRCM_OUI3
    127 #define PHY_BCM54618E_MODEL     0x26
    128 
    129 #define PHY_BCM54680_OUI        PHY_BRCM_OUI3
    130 #define PHY_BCM54680_MODEL      0x1c
    131 
    132 /* Model 0x17 is being used by 54880E now */
    133 #define PHY_BCM54880E_OUI        PHY_BRCM_OUI3
    134 #define PHY_BCM54880E_MODEL      0x17
    135 
    136 /* MSB of rev ID is used to distinguish between BCM54680E and BCM54640E */
    137 #define PHY_BCM54680E_OUI       PHY_BRCM_OUI3
    138 #define PHY_BCM54680E_MODEL     0x27
    139 
    140 /* MSB of rev ID is used to distinguish between BCM54682E and BCM54685E */
    141 #define PHY_BCM54682E_OUI       PHY_BRCM_OUI3
    142 #define PHY_BCM54682E_MODEL     0x12
    143 
    144 #define PHY_BCM54685_OUI        PHY_BRCM_OUI3
    145 #define PHY_BCM54685_MODEL      0x1d
    146 
    147 #define PHY_BCM54880_OUI        PHY_BRCM_OUI3
    148 #define PHY_BCM54880_MODEL      0x1e
    149 
    150 #define PHY_BCM54881_OUI        PHY_BRCM_OUI3
    151 #define PHY_BCM54881_MODEL      0x1f
    152 
    153 #define PHY_BCM54810_OUI        PHY_BRCM_OUI3
    154 #define PHY_BCM54810_MODEL      0x10
    155 
    156 #define PHY_BCM54811_OUI        PHY_BRCM_OUI3
    157 #define PHY_BCM54811_MODEL      0x0c
    158 
    159 #define PHY_BCM54684_OUI        PHY_BRCM_OUI2
    160 #define PHY_BCM54684_MODEL      0x2f
    161 
    162 #define PHY_BCM54684E_OUI       PHY_BRCM_OUI3
    163 #define PHY_BCM54684E_MODEL     0x0e
    164 
    165 #define PHY_BCM52681E_OUI       PHY_BRCM_OUI3
    166 #define PHY_BCM52681E_MODEL     0x0f
    167 
    168 /* MSB of rev ID is used to distinguish between BCM54640 and BCM52681E */
    169 #define PHY_BCM54640_OUI        PHY_BRCM_OUI3
    170 #define PHY_BCM54640_MODEL      0x1b
    171 
    172 /* begin BCM84728 family */
    173 #define PHY_BCM84707_OUI        PHY_BRCM_OUI5 
    174 #define PHY_BCM84707_MODEL      0x30 
    175 #define PHY_BCM84073_OUI        PHY_BRCM_OUI5 
    176 #define PHY_BCM84073_MODEL      0x30 
    177 #define PHY_BCM84074_OUI        PHY_BRCM_OUI5 
    178 #define PHY_BCM84074_MODEL      0x30 
    179 #define PHY_BCM84728_OUI        PHY_BRCM_OUI5 
    180 #define PHY_BCM84728_MODEL      0x31 
    181 #define PHY_BCM84748_OUI        PHY_BRCM_OUI5 
    182 #define PHY_BCM84748_MODEL      0x31 
    183 #define PHY_BCM84727_OUI        PHY_BRCM_OUI5 
    184 #define PHY_BCM84727_MODEL      0x31 
    185 #define PHY_BCM84747_OUI        PHY_BRCM_OUI5 
    186 #define PHY_BCM84747_MODEL      0x31 
    187 #define PHY_BCM84762_OUI        PHY_BRCM_OUI5 
    188 #define PHY_BCM84762_MODEL      0x32 
    189 #define PHY_BCM84764_OUI        PHY_BRCM_OUI5 
    190 #define PHY_BCM84764_MODEL      0x32 
    191 #define PHY_BCM84042_OUI        PHY_BRCM_OUI5 
    192 #define PHY_BCM84042_MODEL      0x32 
    193 #define PHY_BCM84044_OUI        PHY_BRCM_OUI5 
    194 #define PHY_BCM84044_MODEL      0x32 
    195 /* end BCM84728 family */
    196 
    197 #if defined(INCLUDE_MACSEC) || defined(INCLUDE_FCMAP)
    198 #define PHY_BCM54580_OUI        PHY_BRCM_OUI3
    199 #define PHY_BCM54580_MODEL      0x14
    200 
    201 #define PHY_BCM54584_OUI        PHY_BRCM_OUI3
    202 #define PHY_BCM54584_MODEL      0x15
    203 
    204 #define PHY_BCM54540_OUI        PHY_BRCM_OUI3
    205 #define PHY_BCM54540_MODEL      0x16
    206 
    207 #define PHY_BCM54380_OUI        PHY_BRCM_OUI5
    208 #define PHY_BCM54380_MODEL      0x00
    209 
    210 #define PHY_BCM54382_OUI        PHY_BRCM_OUI5
    211 #define PHY_BCM54382_MODEL      0x01  /*Rev = 8*/
    212 
    213 #define PHY_BCM54340_OUI        PHY_BRCM_OUI5
    214 #define PHY_BCM54340_MODEL      0x2   /*Rev = 0*/
    215 
    216 #define PHY_BCM54385_OUI        PHY_BRCM_OUI5
    217 #define PHY_BCM54385_MODEL      0x1   /*Rev = 0*/
    218 
    219 
    220 /* 
    221  * Model 0x17 is being used by 54880E now. BCM54585 
    222  * doesn't exist. So we need to remove support for this
    223  * device.
    224  */
    225 #define PHY_BCM54585_OUI        PHY_BRCM_OUI3
    226 #define PHY_BCM54585_MODEL      0xFF
    227 
    228 #define PHY_BCM5927_OUI         PHY_BRCM_OUI3
    229 #define PHY_BCM5927_MODEL       0x39
    230 
    231 #define PHY_BCM8729_OUI         PHY_BRCM_OUI1
    232 #define PHY_BCM8729_MODEL       0x3
    233 
    234 #define PHY_BCM84756_OUI        PHY_BRCM_OUI5
    235 #define PHY_BCM84756_MODEL      0x27
    236 
    237 #define PHY_BCM84749_OUI        PHY_BRCM_OUI5
    238 #define PHY_BCM84749_MODEL      0x30
    239 
    240 #define PHY_BCM84729_OUI        PHY_BRCM_OUI5
    241 #define PHY_BCM84729_MODEL      PHY_BCM84728_MODEL
    242 
    243 #define PHY_BCM84334_OUI        PHY_BRCM_OUI3
    244 #define PHY_BCM84334_MODEL      0x03
    245 
    246 #define PHY_BCM84336_OUI        PHY_BRCM_OUI3
    247 #define PHY_BCM84336_MODEL      0x0a
    248 
    249 #define PHY_BCM84333_OUI        PHY_BRCM_OUI3
    250 #define PHY_BCM84333_MODEL      0x0b
    251 
    252 
    253 #endif /* INCLUDE_MACSEC  || INCLUDE_FCMAP */
    254 
    255 #define PHY_BCM5418X_OUI        PHY_BRCM_OUI6
    256 #define PHY_BCM5419X_OUI        PHY_BRCM_OUI6
    257 #define PHY_BCM542XX_OUI        PHY_BRCM_OUI5
    258 
    259 #define PHY_BCM54182_OUI        PHY_BRCM_OUI6
    260 #define PHY_BCM54182_MODEL      0x01
    261 
    262 #define PHY_BCM54185_OUI        PHY_BRCM_OUI6
    263 #define PHY_BCM54185_MODEL      0x01 /*Rev = 8*/
    264 
    265 #define PHY_BCM54180_OUI        PHY_BRCM_OUI6
    266 #define PHY_BCM54180_MODEL      0x0
    267 
    268 #define PHY_BCM54140_OUI        PHY_BRCM_OUI6
    269 #define PHY_BCM54140_MODEL      0x0  /*Rev = 8*/
    270 
    271 #define PHY_BCM54192_OUI        PHY_BRCM_OUI6
    272 #define PHY_BCM54192_MODEL      0x11
    273 
    274 #define PHY_BCM54195_OUI        PHY_BRCM_OUI6
    275 #define PHY_BCM54195_MODEL      0x11 /*Rev = 8*/
    276 
    277 #define PHY_BCM54190_OUI        PHY_BRCM_OUI6
    278 #define PHY_BCM54190_MODEL      0x10
    279 
    280 #define PHY_BCM54194_OUI        PHY_BRCM_OUI6
    281 #define PHY_BCM54194_MODEL      0x10  /*Rev = 8*/
    282 
    283 #define PHY_BCM54210_OUI        PHY_BRCM_OUI5
    284 #define PHY_BCM54210_MODEL      0x19
    285 
    286 #define PHY_BCM54220_OUI        PHY_BRCM_OUI5
    287 #define PHY_BCM54220_MODEL      0x18
    288 
    289 #define PHY_BCM54240_OUI        PHY_BRCM_OUI5
    290 #define PHY_BCM54240_MODEL      0x06  /*Rev = 1*/
    291 
    292 #define PHY_BCM54280_OUI        PHY_BRCM_OUI5
    293 #define PHY_BCM54280_MODEL      0x04  /*Rev = 1*/
    294 
    295 #define PHY_BCM54282_OUI        PHY_BRCM_OUI5
    296 #define PHY_BCM54282_MODEL      0x05  /*Rev = 9*/
    297 
    298 #define PHY_BCM54285_OUI        PHY_BRCM_OUI5
    299 #define PHY_BCM54285_MODEL      0x05  /*Rev = 1*/
    300 
    301 #define PHY_BCM5428X_OUI        PHY_BRCM_OUI5
    302 #define PHY_BCM5428X_MODEL      0x1b  /*Rev = 1*/
    303 
    304 #define PHY_BCM54290_OUI        PHY_BRCM_OUI5
    305 #define PHY_BCM54290_MODEL      0x12
    306 
    307 #define PHY_BCM54292_OUI        PHY_BRCM_OUI5
    308 #define PHY_BCM54292_MODEL      0x13
    309 
    310 #define PHY_BCM54294_OUI        PHY_BRCM_OUI5
    311 #define PHY_BCM54294_MODEL      0x12
    312 
    313 #define PHY_BCM54295_OUI        PHY_BRCM_OUI5
    314 #define PHY_BCM54295_MODEL      0x13
    315 
    316 #define PHY_BCM54296_OUI        PHY_BRCM_OUI5
    317 #define PHY_BCM54296_MODEL      0x13
    318 
    319 #define PHY_BCM54980_OUI        PHY_BRCM_OUI2
    320 #define PHY_BCM54980_MODEL      0x28
    321 
    322 #define PHY_BCM54980C_OUI       PHY_BRCM_OUI2
    323 #define PHY_BCM54980C_MODEL     0x29
    324 
    325 #define PHY_BCM54980V_OUI       PHY_BRCM_OUI2
    326 #define PHY_BCM54980V_MODEL     0x2a
    327 
    328 #define PHY_BCM54980VC_OUI      PHY_BRCM_OUI2
    329 #define PHY_BCM54980VC_MODEL    0x2b
    330 
    331 #define PHY_BCM8011_OUI         PHY_BRCM_OUI1R
    332 #define PHY_BCM8011_MODEL       0x09
    333 
    334 #define PHY_BCM8703_OUI         PHY_BRCM_OUI1
    335 #define PHY_BCM8703_MODEL       0x03
    336 
    337 #define PHY_BCM8704_OUI         PHY_BRCM_OUI1
    338 #define PHY_BCM8704_MODEL       0x03
    339 
    340 #define PHY_BCM8705_OUI         PHY_BRCM_OUI1
    341 #define PHY_BCM8705_MODEL       0x03
    342 
    343 #define PHY_BCM8706_OUI         PHY_BRCM_OUI1
    344 #define PHY_BCM8706_MODEL       0x03
    345 
    346 #define PHY_BCM8727_OUI         PHY_BRCM_OUI1
    347 #define PHY_BCM8727_MODEL       0x03
    348 
    349 #define PHY_BCM8747_OUI         PHY_BRCM_OUI1
    350 #define PHY_BCM8747_MODEL       0x03
    351 
    352 #define PHY_BCM8072_OUI         PHY_BRCM_OUI1
    353 #define PHY_BCM8072_MODEL       0x03
    354 
    355 #define PHY_BCM8073_OUI         PHY_BRCM_OUI1
    356 #define PHY_BCM8073_MODEL       0x03
    357 
    358 #define PHY_BCM8074_OUI         PHY_BRCM_OUI1
    359 #define PHY_BCM8074_MODEL       0x03
    360 
    361 #define PHY_BCM8040_OUI         PHY_BRCM_OUI1
    362 #define PHY_BCM8040_MODEL       0x3c
    363 
    364 #define PHY_BCM8481X_OUI        PHY_BRCM_OUI3
    365 #define PHY_BCM8481X_MODEL      0x00
    366 
    367 #define PHY_BCM84812CE_OUI      PHY_BRCM_OUI3
    368 #define PHY_BCM84812CE_MODEL    0x01
    369 
    370 #define PHY_BCM8482X_OUI        PHY_BRCM_OUI3
    371 #define PHY_BCM84821_OUI        PHY_BRCM_OUI3
    372 #define PHY_BCM84821_MODEL      0x04
    373 
    374 #define PHY_BCM84822_OUI        PHY_BRCM_OUI3
    375 #define PHY_BCM84822_MODEL      0x05
    376 
    377 #define PHY_BCM84823_OUI        PHY_BRCM_OUI3
    378 #define PHY_BCM84823_MODEL      0x06
    379 
    380 #define PHY_BCM8483X_OUI        PHY_BRCM_OUI3
    381 #define PHY_BCM84833_OUI        PHY_BRCM_OUI3
    382 #define PHY_BCM84833_MODEL      0x0b
    383 
    384 #define PHY_BCM84834_OUI        PHY_BRCM_OUI3
    385 #define PHY_BCM84834_MODEL      0x03
    386 
    387 #define PHY_BCM84835_OUI        PHY_BRCM_OUI3
    388 #define PHY_BCM84835_MODEL      0x07
    389 
    390 #define PHY_BCM84836_OUI        PHY_BRCM_OUI3
    391 #define PHY_BCM84836_MODEL      0x0a
    392 
    393 #define PHY_BCM8484X_OUI        PHY_BRCM_OUI5
    394 #define PHY_BCM84844_OUI        PHY_BRCM_OUI5
    395 #define PHY_BCM84844_MODEL      0x0D
    396 
    397 #define PHY_BCM84846_OUI        PHY_BRCM_OUI5
    398 #define PHY_BCM84846_MODEL      0x0C
    399 
    400 #define PHY_BCM84848_OUI        PHY_BRCM_OUI5
    401 #define PHY_BCM84848_MODEL      0x0F
    402 
    403 #define PHY_BCM8485X_OUI        PHY_BRCM_OUI5
    404 #define PHY_BCM84858_OUI        PHY_BRCM_OUI5
    405 #define PHY_BCM84858_MODEL      0x16
    406 
    407 #define PHY_BCM84856_OUI        PHY_BRCM_OUI5
    408 #define PHY_BCM84856_MODEL      0x15
    409 
    410 #define PHY_BCM8486X_OUI        PHY_BRCM_OUI6
    411 #define PHY_BCM84860_OUI        PHY_BRCM_OUI6
    412 #define PHY_BCM84860_MODEL      0x4
    413 
    414 #define PHY_BCM84861_OUI        PHY_BRCM_OUI6
    415 #define PHY_BCM84861_MODEL      0x4
    416 
    417 #define PHY_BCM84864_OUI        PHY_BRCM_OUI6
    418 #define PHY_BCM84864_MODEL      0x6
    419 
    420 #define PHY_BCM84868_OUI        PHY_BRCM_OUI6
    421 #define PHY_BCM84868_MODEL      0x6
    422 
    423 #define PHY_BCM8488X_OUI        PHY_BRCM_OUI6
    424 #define PHY_BCM84888_OUI        PHY_BRCM_OUI6
    425 #define PHY_BCM84888_MODEL      0x14
    426 
    427 #define PHY_BCM84884_OUI        PHY_BRCM_OUI6
    428 #define PHY_BCM84884_MODEL      0x14
    429 
    430 #define PHY_BCM84888E_OUI       PHY_BRCM_OUI6
    431 #define PHY_BCM84888E_MODEL     0x16
    432 
    433 #define PHY_BCM84884E_OUI       PHY_BRCM_OUI6
    434 #define PHY_BCM84884E_MODEL     0x16
    435 
    436 #define PHY_BCM84881_OUI        PHY_BRCM_OUI6
    437 #define PHY_BCM84881_MODEL      0x15
    438 
    439 #define PHY_BCM84880_OUI        PHY_BRCM_OUI6
    440 #define PHY_BCM84880_MODEL      0x15
    441 
    442 #define PHY_BCM84888S_OUI       PHY_BRCM_OUI6
    443 #define PHY_BCM84888S_MODEL     0x17
    444 
    445 #define PHY_BCM84885_OUI        PHY_BRCM_OUI6
    446 #define PHY_BCM84885_MODEL      0x17
    447 
    448 #define PHY_BCM84886_OUI        PHY_BRCM_OUI6
    449 #define PHY_BCM84886_MODEL      0x17
    450 
    451 #define PHY_BCM84887_OUI        PHY_BRCM_OUI6
    452 #define PHY_BCM84887_MODEL      0x14
    453 
    454 #define PHY_BCM8750_OUI         PHY_BRCM_OUI3
    455 #define PHY_BCM8750_MODEL       0x39
    456 
    457 #define PHY_BCM8752_OUI         PHY_BRCM_OUI3
    458 #define PHY_BCM8752_MODEL       0x39
    459 
    460 #define PHY_BCM8754_OUI         PHY_BRCM_OUI3
    461 #define PHY_BCM8754_MODEL       0x3A
    462 
    463 #define PHY_BCM84740_OUI        PHY_BRCM_OUI3
    464 #define PHY_BCM84740_MODEL      0x3D
    465 
    466 #define PHY_BCM84793_OUI        PHY_BRCM_OUI5
    467 #define PHY_BCM84793_MODEL      0x39
    468 
    469 #define PHY_BCM84164_OUI        PHY_BRCM_OUI5
    470 #define PHY_BCM84164_MODEL      0x2E
    471 
    472 #define PHY_BCM84758_OUI        PHY_BRCM_OUI5
    473 #define PHY_BCM84758_MODEL      0x2F
    474 
    475 #define PHY_BCM84780_OUI        PHY_BRCM_OUI5
    476 #define PHY_BCM84780_MODEL      0x2F
    477 
    478 #define PHY_BCM84784_OUI        PHY_BRCM_OUI5
    479 #define PHY_BCM84784_MODEL      0x2F
    480 
    481 #define PHY_BCM84328_OUI        PHY_BRCM_OUI5
    482 #define PHY_BCM84328_MODEL      0x10
    483 
    484 #define PHY_BCMXGXS1_OUI        PHY_BRCM_OUI1
    485 #define PHY_BCMXGXS1_MODEL      0x3f
    486 
    487 #define PHY_BCMXGXS2_OUI        PHY_BRCM_OUI1
    488 #define PHY_BCMXGXS2_MODEL      0x3a
    489 
    490 #define PHY_AL101_OUI           PHY_ALTIMA_OUI
    491 #define PHY_AL101_MODEL         0x21
    492 
    493 #define PHY_AL101L_OUI          PHY_ALTIMA_OUI
    494 #define PHY_AL101L_MODEL        0x12
    495 
    496 #define PHY_AL104_OUI           PHY_ALTIMA_OUI
    497 #define PHY_AL104_MODEL         0x14
    498 
    499 #define PHY_BCMXGXS5_OUI        PHY_BRCM_OUI2
    500 #define PHY_BCMXGXS5_MODEL      0x19
    501 
    502 #define PHY_BCMXGXS6_OUI        PHY_BRCM_OUI2
    503 #define PHY_BCMXGXS6_MODEL      0x1c
    504 
    505 #define PHY_XGXS_HL65_OUI       PHY_BRCM_OUI2
    506 #define PHY_XGXS_HL65_MODEL     PHY_BCMXGXS1_MODEL 
    507 
    508 #define PHY_SERDES100FX_OUI     PHY_BRCM_OUI2
    509 #define PHY_SERDES100FX_MODEL   0x18
    510 
    511 #define PHY_SERDES65LP_OUI      PHY_BRCM_OUI2
    512 #define PHY_SERDES65LP_MODEL    0x3f
    513 
    514 #define PHY_SERDESCOMBO_OUI     PHY_BRCM_OUI2
    515 #define PHY_SERDESCOMBO_MODEL   0x15
    516 
    517 #define PHY_BCM53314_OUI         PHY_BRCM_OUI2
    518 #define PHY_BCM53314_MODEL       0x12
    519 
    520 #define PHY_BCM53324_OUI         PHY_BRCM_OUI3
    521 #define PHY_BCM53324_MODEL       0x12
    522 
    523 #define PHY_XGXS_16G_OUI         PHY_BRCM_OUI2
    524 #define PHY_XGXS_16G_MODEL       0x3f
    525 
    526 #define PHY_XGXS_TSC_OUI         PHY_BRCM_OUI5
    527 #define PHY_XGXS_TSC_MODEL       0x37
    528 
    529 #define PHY_BCM82328_OUI         PHY_BRCM_OUI6 
    530 #define PHY_BCM82328_MODEL       0x21
    531 
    532 #define PHY_BCM84318_OUI         PHY_BRCM_OUI5 
    533 #define PHY_BCM84318_MODEL       0x2f
    534 
    535 #define PHY_XGXS_VIPER_OUI       PHY_BRCM_OUI2
    536 #define PHY_XGXS_VIPER_MODEL     0x3f
    537 
    538 #define PHY_BCM82381_OUI         PHY_BRCM_OUI6 
    539 #define PHY_BCM82381_MODEL       0x23
    540 
    541 #define PHY_BCM82764_OUI         PHY_BRCM_OUI6
    542 #define PHY_BCM82764_MODEL       0x29
    543 
    544 #define PHY_BCM82864_OUI         PHY_BRCM_OUI6
    545 #define PHY_BCM82864_MODEL       0x2b
    546 
    547 #define PHY_BCM82780_OUI         PHY_BRCM_OUI6 
    548 #define PHY_BCM82780_MODEL       0x25
    549 
    550 #define PHY_BCM56160GPHY_OUI     PHY_BRCM_OUI6
    551 #define PHY_BCM56160GPHY_MODEL   0x2d
    552 
    553 #define PHY_BCM53540_OUI        PHY_BRCM_OUI6
    554 #define PHY_BCM53540_MODEL      0x1d
    555 
    556 #define PHY_BCM8806X_OUI         PHY_BRCM_OUI6
    557 #define PHY_BCM8806X_MODEL       0x2C
    558 
    559 #define PHY_REVISION_CHECK(_pc, _model, _oui, _rev) \
    560                                 (((_pc)->phy_model == (_model)) && \
    561                                  ((_pc)->phy_oui == (_oui)) && \
    562                                  ((_pc)->phy_rev == (_rev)))
    563 #define PHY_MODEL_CHECK(_pc, _oui, _model) \
    564                                 (((_pc)->phy_oui == (_oui)) && \
    565                                  ((_pc)->phy_model == (_model)))
    566 #define PHY_IS_BCM5218(_pc)     PHY_MODEL_CHECK((_pc), \
    567                                                 PHY_BCM5218_OUI, \
    568                                                 PHY_BCM5218_MODEL)
    569 #define PHY_IS_BCM5220(_pc)     PHY_MODEL_CHECK((_pc), \
    570                                                 PHY_BCM5220_OUI, \
    571                                                 PHY_BCM5220_MODEL)
    572 #define PHY_IS_BCM5226(_pc)     PHY_MODEL_CHECK((_pc), \
    573                                                 PHY_BCM5226_OUI, \
    574                                                 PHY_BCM5226_MODEL)
    575 #define PHY_IS_BCM5228(_pc)     PHY_MODEL_CHECK((_pc), \
    576                                                 PHY_BCM5228_OUI, \
    577                                                 PHY_BCM5228_MODEL)
    578 #define PHY_IS_BCM5238(_pc)     PHY_MODEL_CHECK((_pc), \
    579                                                 PHY_BCM5238_OUI,  \
    580                                                 PHY_BCM5238_MODEL)
    581 #define PHY_IS_BCM5248(_pc)     PHY_MODEL_CHECK((_pc), \
    582                                                 PHY_BCM5248_OUI,  \
    583                                                 PHY_BCM5248_MODEL)
    584 #define PHY_IS_BCM5400(_pc)     PHY_MODEL_CHECK((_pc), \
    585                                                 PHY_BCM5400_OUI,  \
    586                                                 PHY_BCM5400_MODEL)
    587 #define PHY_IS_BCM5401(_pc)     PHY_MODEL_CHECK((_pc), \
    588                                                 PHY_BCM5401_OUI,  \
    589                                                 PHY_BCM5401_MODEL)
    590 #define PHY_IS_BCM5402(_pc)     PHY_MODEL_CHECK((_pc), \
    591                                                 PHY_BCM5402_OUI,  \
    592                                                 PHY_BCM5402_MODEL)
    593 #define PHY_IS_BCM5404(_pc)     PHY_MODEL_CHECK((_pc), \
    594                                                 PHY_BCM5404_OUI,  \
    595                                                 PHY_BCM5404_MODEL)
    596 #define PHY_IS_BCM5411(_pc)     PHY_MODEL_CHECK((_pc), \
    597                                                 PHY_BCM5411_OUI,  \
    598                                                 PHY_BCM5411_MODEL)
    599 #define PHY_IS_BCM5421(_pc)     PHY_MODEL_CHECK((_pc), \
    600                                                 PHY_BCM5421_OUI,  \
    601                                                 PHY_BCM5421_MODEL)
    602 #define PHY_IS_BCM5424(_pc)     PHY_MODEL_CHECK((_pc), \
    603                                                 PHY_BCM5424_OUI,  \
    604                                                 PHY_BCM5424_MODEL)
    605 #define PHY_IS_BCM5464(_pc)     PHY_MODEL_CHECK((_pc), \
    606                                                 PHY_BCM5464_OUI,  \
    607                                                 PHY_BCM5464_MODEL)
    608 #define PHY_IS_BCM5466(_pc)     PHY_MODEL_CHECK((_pc), \
    609                                                 PHY_BCM5466_OUI,  \
    610                                                 PHY_BCM5466_MODEL)
    611 #define PHY_IS_BCM5461(_pc)     PHY_MODEL_CHECK((_pc), \
    612                                                 PHY_BCM5461_OUI,  \
    613                                                 PHY_BCM5461_MODEL)
    614 #define PHY_IS_BCM5462(_pc)     PHY_MODEL_CHECK((_pc), \
    615                                                 PHY_BCM5462_OUI,  \
    616                                                 PHY_BCM5462_MODEL)
    617 #define PHY_IS_BCM5478(_pc)     PHY_MODEL_CHECK((_pc), \
    618                                                 PHY_BCM5478_OUI,  \
    619                                                 PHY_BCM5478_MODEL)
    620 #define PHY_IS_BCM5488(_pc)     PHY_MODEL_CHECK((_pc), \
    621                                                 PHY_BCM5488_OUI,  \
    622                                                 PHY_BCM5488_MODEL)
    623 #define PHY_IS_BCM5482(_pc)     PHY_MODEL_CHECK((_pc), \
    624                                                 PHY_BCM5482_OUI,  \
    625                                                 PHY_BCM5482_MODEL)
    626 #define PHY_IS_BCM5481(_pc)     PHY_MODEL_CHECK((_pc), \
    627                                                 PHY_BCM5481_OUI,  \
    628                                                 PHY_BCM5481_MODEL)  
    629 #define PHY_IS_BCM54980(_pc)    PHY_MODEL_CHECK((_pc), \
    630                                                 PHY_BCM54980_OUI, \
    631                                                 PHY_BCM54980_MODEL)
    632 #define PHY_IS_BCM54980C(_pc)   PHY_MODEL_CHECK((_pc), \
    633                                                 PHY_BCM54980C_OUI, \
    634                                                 PHY_BCM54980C_MODEL)
    635 #define PHY_IS_BCM54980V(_pc)   PHY_MODEL_CHECK((_pc), \
    636                                                 PHY_BCM54980V_OUI, \
    637                                                 PHY_BCM54980V_MODEL)
    638 #define PHY_IS_BCM54980VC(_pc)  PHY_MODEL_CHECK((_pc), \
    639                                                 PHY_BCM54980VC_OUI, \
    640                                                 PHY_BCM54980VC_MODEL)
    641 #define PHY_IS_BCM54684(_pc)    PHY_MODEL_CHECK((_pc), \
    642                                                 PHY_BCM54684_OUI,  \
    643                                                 PHY_BCM54684_MODEL)
    644 #define PHY_IS_BCM54682(_pc)    PHY_MODEL_CHECK((_pc), \
    645                                                 PHY_BCM54682E_OUI,  \
    646                                                 PHY_BCM54682E_MODEL)
    647 #define PHY_IS_BCM54640(_pc)    PHY_MODEL_CHECK((_pc), \
    648                                                 PHY_BCM54640_OUI,  \
    649                                                 PHY_BCM54640_MODEL)
    650 #define PHY_IS_BCM53314(_pc)    PHY_MODEL_CHECK((_pc), \
    651                                                 PHY_BCM53314_OUI,  \
    652                                                 PHY_BCM53314_MODEL)
    653 #define PHY_IS_BCM53324(_pc)    PHY_MODEL_CHECK((_pc), \
    654                                                 PHY_BCM53324_OUI,  \
    655                                                 PHY_BCM53324_MODEL)
    656 #define PHY_IS_BCM8011(_pc)     PHY_MODEL_CHECK((_pc), \
    657                                                 PHY_BCM8011_OUI,  \
    658                                                 PHY_BCM8011_MODEL)
    659 #define PHY_IS_BCM8703(_pc)     PHY_MODEL_CHECK((_pc), \
    660                                                 PHY_BCM8703_OUI,  \
    661                                                 PHY_BCM8703_MODEL)
    662 #define PHY_IS_BCM8704(_pc)     PHY_MODEL_CHECK((_pc), \
    663                                                 PHY_BCM8704_OUI,  \
    664                                                 PHY_BCM8704_MODEL)
    665 #define PHY_IS_BCM8705(_pc)     PHY_MODEL_CHECK((_pc), \
    666                                                 PHY_BCM8705_OUI,  \
    667                                                 PHY_BCM8705_MODEL)
    668 #define PHY_IS_BCMXGXS1(_pc)    PHY_MODEL_CHECK((_pc), \
    669                                                 PHY_BCMXGXS1_OUI, \
    670                                                 PHY_BCMXGXS1_MODEL)
    671 #define PHY_IS_BCMXGXS2(_pc)    PHY_MODEL_CHECK((_pc), \
    672                                                 PHY_BCMXGXS2_OUI, \
    673                                                 PHY_BCMXGXS2_MODEL)
    674 #define PHY_IS_BCMXGXS5(_pc)    PHY_MODEL_CHECK((_pc), \
    675                                                 PHY_BCMXGXS5_OUI, \
    676                                                 PHY_BCMXGXS5_MODEL)
    677 #define PHY_IS_BCMXGXS6(_pc)    PHY_MODEL_CHECK((_pc), \
    678                                                 PHY_BCMXGXS6_OUI, \
    679                                                 PHY_BCMXGXS6_MODEL)
    680 #ifdef INCLUDE_PHY_522X
    681 #define PHY_IS_BCM5324(_pc)     0
    682 #define PHY_IS_BCM5324A1(_pc)   0
    683 #define PHY_IS_BCM5348(_pc)     0
    684 #define PHY_IS_BCM53242(_pc)    0
    685 #define PHY_IS_BCM53262(_pc)    0
    686 #define PHY_IS_BCM53280(_pc)    0
    687 #define PHY_IS_BCM53280_A0(_pc) 0
    688 #endif
    689 #define PHY_IS_BCM56160GPHY(_pc) PHY_MODEL_CHECK((_pc), \
    690                                                 PHY_BCM56160GPHY_OUI, \
    691                                                 PHY_BCM56160GPHY_MODEL)
    692 
    693 #define PHY_IS_BCM8806X(_pc)     PHY_MODEL_CHECK((_pc), \
    694                                                 PHY_BCM8806X_OUI, \
    695                                                 PHY_BCM8806X_MODEL)
    696 
    697 #define PHY_IS_SERDES100FX(_pc) PHY_MODEL_CHECK((_pc), \
    698                                                 PHY_SERDES100FX_OUI, \
    699                                                 PHY_SERDES100FX_MODEL)
    700 #define PHY_IS_SERDES65LP(_pc)  PHY_MODEL_CHECK((_pc), \
    701                                                 PHY_SERDES65LP_OUI, \
    702                                                 PHY_SERDES65LP_MODEL)
    703 #define PHY_IS_SERDESCOMBO(_pc) PHY_MODEL_CHECK((_pc), \
    704                                                 PHY_SERDESCOMBO_OUI, \
    705                                                 PHY_SERDESCOMBO_MODEL)
    706 #define PHY_IS_SERDESCOMBO65(_pc) PHY_MODEL_CHECK((_pc), \
    707                                                 PHY_SERDESCOMBO65_OUI, \
    708                                                 PHY_SERDESCOMBO65_MODEL)
    709 
    710 /* PHY drivers */
    711 extern phy_driver_t phy_522xdrv_fe;
    712 extern phy_driver_t phy_5421Sdrv_ge;
    713 extern phy_driver_t phy_5464drv_ge;
    714 extern phy_driver_t phy_5482drv_ge;
    715 extern phy_driver_t phy_54684drv_ge;
    716 extern phy_driver_t phy_54682drv_ge;
    717 extern phy_driver_t phy_54640drv_ge;
    718 extern phy_driver_t phy_54580drv_ge;
    719 extern phy_driver_t phy_54380drv_ge;
    720 extern phy_driver_t phy_542xxdrv_ge;
    721 extern phy_driver_t phy_5401drv_ge;
    722 extern phy_driver_t phy_5402drv_ge;
    723 extern phy_driver_t phy_5404drv_ge;
    724 extern phy_driver_t phy_5411drv_ge;
    725 extern phy_driver_t phy_5424drv_ge;
    726 extern phy_driver_t phy_5690drv_ge;
    727 extern phy_driver_t phy_56xxxdrv_ge;
    728 extern phy_driver_t phy_56xxx_5601x_drv_ge;
    729 extern phy_driver_t phy_53xxxdrv_ge;
    730 extern phy_driver_t phy_8703drv_xe;
    731 extern phy_driver_t phy_8705drv_xe;
    732 extern phy_driver_t phy_8706drv_xe;
    733 extern phy_driver_t phy_8072drv_xe;
    734 extern phy_driver_t phy_8074drv_xe;
    735 extern phy_driver_t phy_drv_fe;
    736 extern phy_driver_t phy_drv_ge;
    737 extern phy_driver_t phy_null;
    738 extern phy_driver_t phy_nocxn;
    739 extern phy_driver_t phy_simul;
    740 extern phy_driver_t phy_serdes100fx_ge;
    741 extern phy_driver_t phy_serdes65lp_ge;
    742 extern phy_driver_t phy_qsgmii65_ge;
    743 extern phy_driver_t phy_serdescombo_ge;
    744 extern phy_driver_t phy_serdescombo_5601x_ge;
    745 extern phy_driver_t phy_serdescombo65_ge;
    746 extern phy_driver_t phy_serdescombo65_5602x_ge;
    747 extern phy_driver_t phy_xgxs1_hg;  
    748 extern phy_driver_t phy_xgxs5_hg;  
    749 extern phy_driver_t phy_xgxs6_hg;  
    750 extern phy_driver_t phy_hl65_hg;
    751 extern phy_driver_t phy_hl65_l0_hg;
    752 extern phy_driver_t phy_hl65_l1_hg;
    753 extern phy_driver_t phy_hl65_l2_hg;
    754 extern phy_driver_t phy_hl65_l3_hg;
    755 extern phy_driver_t phy_xgxs16g_hg;
    756 extern phy_driver_t phy_xgxs16g1l_ge;
    757 extern phy_driver_t phy_8040drv_xe;
    758 extern phy_driver_t phy_8481drv_xe;
    759 extern phy_driver_t phy_8750drv_xe;
    760 extern phy_driver_t phy_54680drv_ge;
    761 extern phy_driver_t phy_54880drv_ge;
    762 extern phy_driver_t phy_copper_sfp_drv;
    763 extern phy_driver_t phy_8729drv_gexe;
    764 extern phy_driver_t phy_wc40_hg;
    765 extern phy_driver_t phy_wcmod_hg;
    766 extern phy_driver_t phy_tscmod_hg;
    767 extern phy_driver_t phy_tsce_drv;
    768 extern phy_driver_t phy_tscf_drv;
    769 extern phy_driver_t phy_qsgmiie_drv;
    770 extern phy_driver_t phy_qtce_drv;
    771 extern phy_driver_t phy_54616drv_ge;
    772 extern phy_driver_t phy_84740drv_xe;
    773 extern phy_driver_t phy_84793drv_ce;
    774 extern phy_driver_t phy_84756drv_xe;
    775 extern phy_driver_t phy_84756drv_fcmap_xe;
    776 extern phy_driver_t phy_84749drv_xe;
    777 extern phy_driver_t phy_84728drv_xe;
    778 extern phy_driver_t phy_84334drv_xe;
    779 extern phy_driver_t phy_84328drv_xe;
    780 extern phy_driver_t phy_82328drv_xe;
    781 extern phy_driver_t phy_viper_drv;
    782 extern phy_driver_t phy82381_drv;
    783 extern phy_driver_t phy82109_drv;
    784 extern phy_driver_t phy82764_drv;
    785 extern phy_driver_t phy82864_drv;
    786 extern phy_driver_t phy_8806xdrv;
    787 #ifdef PORTMOD_SUPPORT
    788 extern phy_driver_t phy_ext_to_int_drv;
    789 #endif
    790 extern phy_driver_t phy82780_drv;
    791 extern phy_driver_t phy_egphy28drv_ge;
    792 
    793 /* Function:
    794  *    (*soc_phy_ident_f)
    795  *
    796  * Purpose:
    797  *    call back for phy identification
    798  *
    799  * Parameters:
    800  *    int unit, soc_port_t port,         Unit and port being checked.
    801  *    soc_phy_table_t *my_entry,         Pointer to calling structure.
    802  *    uint16 phy_id0, uint16 phy_id1     Values of phy regs read
    803  *
    804  * Side effects:  Sets the phy_info structure for this port.
    805  */
    806 
    807 #endif /* _PHY_IDENT_H */