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 */