diff options
Diffstat (limited to 'drivers/net/wireless/b43/phy_lp.c')
-rw-r--r-- | drivers/net/wireless/b43/phy_lp.c | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c index 3e046ec1ff8..b58d6cf2658 100644 --- a/drivers/net/wireless/b43/phy_lp.c +++ b/drivers/net/wireless/b43/phy_lp.c | |||
@@ -80,6 +80,7 @@ static void b43_lpphy_op_free(struct b43_wldev *dev) | |||
80 | dev->phy.lp = NULL; | 80 | dev->phy.lp = NULL; |
81 | } | 81 | } |
82 | 82 | ||
83 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/LP/ReadBandSrom */ | ||
83 | static void lpphy_read_band_sprom(struct b43_wldev *dev) | 84 | static void lpphy_read_band_sprom(struct b43_wldev *dev) |
84 | { | 85 | { |
85 | struct b43_phy_lp *lpphy = dev->phy.lp; | 86 | struct b43_phy_lp *lpphy = dev->phy.lp; |
@@ -101,6 +102,12 @@ static void lpphy_read_band_sprom(struct b43_wldev *dev) | |||
101 | maxpwr = bus->sprom.maxpwr_bg; | 102 | maxpwr = bus->sprom.maxpwr_bg; |
102 | lpphy->max_tx_pwr_med_band = maxpwr; | 103 | lpphy->max_tx_pwr_med_band = maxpwr; |
103 | cckpo = bus->sprom.cck2gpo; | 104 | cckpo = bus->sprom.cck2gpo; |
105 | /* | ||
106 | * We don't read SPROM's opo as specs say. On rev8 SPROMs | ||
107 | * opo == ofdm2gpo and we don't know any SSB with LP-PHY | ||
108 | * and SPROM rev below 8. | ||
109 | */ | ||
110 | B43_WARN_ON(bus->sprom.revision < 8); | ||
104 | ofdmpo = bus->sprom.ofdm2gpo; | 111 | ofdmpo = bus->sprom.ofdm2gpo; |
105 | if (cckpo) { | 112 | if (cckpo) { |
106 | for (i = 0; i < 4; i++) { | 113 | for (i = 0; i < 4; i++) { |
@@ -1703,19 +1710,6 @@ static const struct lpphy_rx_iq_comp lpphy_rev2plus_iq_comp = { | |||
1703 | .c0 = 0, | 1710 | .c0 = 0, |
1704 | }; | 1711 | }; |
1705 | 1712 | ||
1706 | static u8 lpphy_nbits(s32 val) | ||
1707 | { | ||
1708 | u32 tmp = abs(val); | ||
1709 | u8 nbits = 0; | ||
1710 | |||
1711 | while (tmp != 0) { | ||
1712 | nbits++; | ||
1713 | tmp >>= 1; | ||
1714 | } | ||
1715 | |||
1716 | return nbits; | ||
1717 | } | ||
1718 | |||
1719 | static int lpphy_calc_rx_iq_comp(struct b43_wldev *dev, u16 samples) | 1713 | static int lpphy_calc_rx_iq_comp(struct b43_wldev *dev, u16 samples) |
1720 | { | 1714 | { |
1721 | struct lpphy_iq_est iq_est; | 1715 | struct lpphy_iq_est iq_est; |
@@ -1742,8 +1736,8 @@ static int lpphy_calc_rx_iq_comp(struct b43_wldev *dev, u16 samples) | |||
1742 | goto out; | 1736 | goto out; |
1743 | } | 1737 | } |
1744 | 1738 | ||
1745 | prod_msb = lpphy_nbits(prod); | 1739 | prod_msb = fls(abs(prod)); |
1746 | q_msb = lpphy_nbits(qpwr); | 1740 | q_msb = fls(abs(qpwr)); |
1747 | tmp1 = prod_msb - 20; | 1741 | tmp1 = prod_msb - 20; |
1748 | 1742 | ||
1749 | if (tmp1 >= 0) { | 1743 | if (tmp1 >= 0) { |