diff options
Diffstat (limited to 'drivers/net/wireless/b43/wa.c')
-rw-r--r-- | drivers/net/wireless/b43/wa.c | 24 |
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 | ||
459 | static void b43_wa_boards_a(struct b43_wldev *dev) | 459 | static 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 | ||
487 | static void b43_wa_boards_g(struct b43_wldev *dev) | 485 | static 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 | } |