Commit bf7d420b4a3ea06d9638ec7f1b9d7971fa7f4f66
Committed by
John W. Linville
1 parent
a255955622
ssb/bcma: fill attribute alpha2 from sprom
The attribute country_code and alpha2 are two different attributes in the sprom. country_code contains some code in an 8 bit coding and alpha2 contains two chars with the country code. The attributes where read out wrongly in the past and country_code is only available on sprom version 1. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Tested-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Showing 3 changed files with 14 additions and 6 deletions Side-by-side Diff
drivers/bcma/sprom.c
... | ... | @@ -243,7 +243,8 @@ |
243 | 243 | SPEX(boardflags2_lo, SSB_SPROM8_BFL2LO, ~0, 0); |
244 | 244 | SPEX(boardflags2_hi, SSB_SPROM8_BFL2HI, ~0, 0); |
245 | 245 | |
246 | - SPEX(country_code, SSB_SPROM8_CCODE, ~0, 0); | |
246 | + SPEX(alpha2[0], SSB_SPROM8_CCODE, 0xff00, 8); | |
247 | + SPEX(alpha2[1], SSB_SPROM8_CCODE, 0x00ff, 0); | |
247 | 248 | |
248 | 249 | /* Extract cores power info info */ |
249 | 250 | for (i = 0; i < ARRAY_SIZE(pwr_info_offset); i++) { |
drivers/ssb/pci.c
... | ... | @@ -360,8 +360,9 @@ |
360 | 360 | SPEX(et0mdcport, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET0M, 14); |
361 | 361 | SPEX(et1mdcport, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET1M, 15); |
362 | 362 | SPEX(board_rev, SSB_SPROM1_BINF, SSB_SPROM1_BINF_BREV, 0); |
363 | - SPEX(country_code, SSB_SPROM1_BINF, SSB_SPROM1_BINF_CCODE, | |
364 | - SSB_SPROM1_BINF_CCODE_SHIFT); | |
363 | + if (out->revision == 1) | |
364 | + SPEX(country_code, SSB_SPROM1_BINF, SSB_SPROM1_BINF_CCODE, | |
365 | + SSB_SPROM1_BINF_CCODE_SHIFT); | |
365 | 366 | SPEX(ant_available_a, SSB_SPROM1_BINF, SSB_SPROM1_BINF_ANTA, |
366 | 367 | SSB_SPROM1_BINF_ANTA_SHIFT); |
367 | 368 | SPEX(ant_available_bg, SSB_SPROM1_BINF, SSB_SPROM1_BINF_ANTBG, |
... | ... | @@ -387,6 +388,8 @@ |
387 | 388 | SPEX(boardflags_lo, SSB_SPROM1_BFLLO, 0xFFFF, 0); |
388 | 389 | if (out->revision >= 2) |
389 | 390 | SPEX(boardflags_hi, SSB_SPROM2_BFLHI, 0xFFFF, 0); |
391 | + SPEX(alpha2[0], SSB_SPROM1_CCODE, 0xff00, 8); | |
392 | + SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0); | |
390 | 393 | |
391 | 394 | /* Extract the antenna gain values. */ |
392 | 395 | out->antenna_gain.a0 = r123_extract_antgain(out->revision, in, |
393 | 396 | |
... | ... | @@ -456,13 +459,15 @@ |
456 | 459 | SPEX(et1phyaddr, SSB_SPROM4_ETHPHY, SSB_SPROM4_ETHPHY_ET1A, |
457 | 460 | SSB_SPROM4_ETHPHY_ET1A_SHIFT); |
458 | 461 | if (out->revision == 4) { |
459 | - SPEX(country_code, SSB_SPROM4_CCODE, 0xFFFF, 0); | |
462 | + SPEX(alpha2[0], SSB_SPROM4_CCODE, 0xff00, 8); | |
463 | + SPEX(alpha2[1], SSB_SPROM4_CCODE, 0x00ff, 0); | |
460 | 464 | SPEX(boardflags_lo, SSB_SPROM4_BFLLO, 0xFFFF, 0); |
461 | 465 | SPEX(boardflags_hi, SSB_SPROM4_BFLHI, 0xFFFF, 0); |
462 | 466 | SPEX(boardflags2_lo, SSB_SPROM4_BFL2LO, 0xFFFF, 0); |
463 | 467 | SPEX(boardflags2_hi, SSB_SPROM4_BFL2HI, 0xFFFF, 0); |
464 | 468 | } else { |
465 | - SPEX(country_code, SSB_SPROM5_CCODE, 0xFFFF, 0); | |
469 | + SPEX(alpha2[0], SSB_SPROM5_CCODE, 0xff00, 8); | |
470 | + SPEX(alpha2[1], SSB_SPROM5_CCODE, 0x00ff, 0); | |
466 | 471 | SPEX(boardflags_lo, SSB_SPROM5_BFLLO, 0xFFFF, 0); |
467 | 472 | SPEX(boardflags_hi, SSB_SPROM5_BFLHI, 0xFFFF, 0); |
468 | 473 | SPEX(boardflags2_lo, SSB_SPROM5_BFL2LO, 0xFFFF, 0); |
... | ... | @@ -525,7 +530,8 @@ |
525 | 530 | v = in[SPOFF(SSB_SPROM8_IL0MAC) + i]; |
526 | 531 | *(((__be16 *)out->il0mac) + i) = cpu_to_be16(v); |
527 | 532 | } |
528 | - SPEX(country_code, SSB_SPROM8_CCODE, 0xFFFF, 0); | |
533 | + SPEX(alpha2[0], SSB_SPROM8_CCODE, 0xff00, 8); | |
534 | + SPEX(alpha2[1], SSB_SPROM8_CCODE, 0x00ff, 0); | |
529 | 535 | SPEX(boardflags_lo, SSB_SPROM8_BFLLO, 0xFFFF, 0); |
530 | 536 | SPEX(boardflags_hi, SSB_SPROM8_BFLHI, 0xFFFF, 0); |
531 | 537 | SPEX(boardflags2_lo, SSB_SPROM8_BFL2LO, 0xFFFF, 0); |
include/linux/ssb/ssb_regs.h
... | ... | @@ -228,6 +228,7 @@ |
228 | 228 | #define SSB_SPROM1_AGAIN_BG_SHIFT 0 |
229 | 229 | #define SSB_SPROM1_AGAIN_A 0xFF00 /* A-PHY */ |
230 | 230 | #define SSB_SPROM1_AGAIN_A_SHIFT 8 |
231 | +#define SSB_SPROM1_CCODE 0x0076 | |
231 | 232 | |
232 | 233 | /* SPROM Revision 2 (inherits from rev 1) */ |
233 | 234 | #define SSB_SPROM2_BFLHI 0x0038 /* Boardflags (high 16 bits) */ |