aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/wa.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/b43/wa.c')
-rw-r--r--drivers/net/wireless/b43/wa.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/drivers/net/wireless/b43/wa.c b/drivers/net/wireless/b43/wa.c
index 8f4db448ec33..5d00d0eaf2e7 100644
--- a/drivers/net/wireless/b43/wa.c
+++ b/drivers/net/wireless/b43/wa.c
@@ -458,17 +458,15 @@ static void b43_wa_rssi_adc(struct b43_wldev *dev)
458 458
459static void b43_wa_boards_a(struct b43_wldev *dev) 459static void b43_wa_boards_a(struct b43_wldev *dev)
460{ 460{
461 struct ssb_bus *bus = dev->sdev->bus; 461 if (dev->dev->board_vendor == SSB_BOARDVENDOR_BCM &&
462 462 dev->dev->board_type == SSB_BOARD_BU4306 &&
463 if (bus->boardinfo.vendor == SSB_BOARDVENDOR_BCM && 463 dev->dev->board_rev < 0x30) {
464 bus->boardinfo.type == SSB_BOARD_BU4306 &&
465 bus->boardinfo.rev < 0x30) {
466 b43_phy_write(dev, 0x0010, 0xE000); 464 b43_phy_write(dev, 0x0010, 0xE000);
467 b43_phy_write(dev, 0x0013, 0x0140); 465 b43_phy_write(dev, 0x0013, 0x0140);
468 b43_phy_write(dev, 0x0014, 0x0280); 466 b43_phy_write(dev, 0x0014, 0x0280);
469 } else { 467 } else {
470 if (bus->boardinfo.type == SSB_BOARD_MP4318 && 468 if (dev->dev->board_type == SSB_BOARD_MP4318 &&
471 bus->boardinfo.rev < 0x20) { 469 dev->dev->board_rev < 0x20) {
472 b43_phy_write(dev, 0x0013, 0x0210); 470 b43_phy_write(dev, 0x0013, 0x0210);
473 b43_phy_write(dev, 0x0014, 0x0840); 471 b43_phy_write(dev, 0x0014, 0x0840);
474 } else { 472 } else {
@@ -486,19 +484,19 @@ static void b43_wa_boards_a(struct b43_wldev *dev)
486 484
487static void b43_wa_boards_g(struct b43_wldev *dev) 485static void b43_wa_boards_g(struct b43_wldev *dev)
488{ 486{
489 struct ssb_bus *bus = dev->sdev->bus; 487 struct ssb_sprom *sprom = dev->dev->bus_sprom;
490 struct b43_phy *phy = &dev->phy; 488 struct b43_phy *phy = &dev->phy;
491 489
492 if (bus->boardinfo.vendor != SSB_BOARDVENDOR_BCM || 490 if (dev->dev->board_vendor != SSB_BOARDVENDOR_BCM ||
493 bus->boardinfo.type != SSB_BOARD_BU4306 || 491 dev->dev->board_type != SSB_BOARD_BU4306 ||
494 bus->boardinfo.rev != 0x17) { 492 dev->dev->board_rev != 0x17) {
495 if (phy->rev < 2) { 493 if (phy->rev < 2) {
496 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX_R1, 1, 0x0002); 494 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX_R1, 1, 0x0002);
497 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX_R1, 2, 0x0001); 495 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX_R1, 2, 0x0001);
498 } else { 496 } else {
499 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 1, 0x0002); 497 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 1, 0x0002);
500 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 2, 0x0001); 498 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 2, 0x0001);
501 if ((bus->sprom.boardflags_lo & B43_BFL_EXTLNA) && 499 if ((sprom->boardflags_lo & B43_BFL_EXTLNA) &&
502 (phy->rev >= 7)) { 500 (phy->rev >= 7)) {
503 b43_phy_mask(dev, B43_PHY_EXTG(0x11), 0xF7FF); 501 b43_phy_mask(dev, B43_PHY_EXTG(0x11), 0xF7FF);
504 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0020, 0x0001); 502 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0020, 0x0001);
@@ -510,7 +508,7 @@ static void b43_wa_boards_g(struct b43_wldev *dev)
510 } 508 }
511 } 509 }
512 } 510 }
513 if (bus->sprom.boardflags_lo & B43_BFL_FEM) { 511 if (sprom->boardflags_lo & B43_BFL_FEM) {
514 b43_phy_write(dev, B43_PHY_GTABCTL, 0x3120); 512 b43_phy_write(dev, B43_PHY_GTABCTL, 0x3120);
515 b43_phy_write(dev, B43_PHY_GTABDATA, 0xC480); 513 b43_phy_write(dev, B43_PHY_GTABDATA, 0xC480);
516 } 514 }