diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2010-01-15 09:02:38 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-15 17:05:36 -0500 |
commit | e50cbcf6741684753da401722f337efacfa4a98f (patch) | |
tree | 12927fd8b03ee50e5ad2711882eb9caad7bb8082 /drivers/net | |
parent | 90b9738d85395d46ffdc961e1a0c80a17e8f4d32 (diff) |
b43: N-PHY: implement PA overriding (RF control related)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/b43/phy_n.c | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c index 126c0afa5da2..0e379427270a 100644 --- a/drivers/net/wireless/b43/phy_n.c +++ b/drivers/net/wireless/b43/phy_n.c | |||
@@ -344,6 +344,40 @@ static void b43_nphy_workarounds(struct b43_wldev *dev) | |||
344 | b43_phy_write(dev, B43_NPHY_PHASETR_B2, 0x20); | 344 | b43_phy_write(dev, B43_NPHY_PHASETR_B2, 0x20); |
345 | } | 345 | } |
346 | 346 | ||
347 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/PA%20override */ | ||
348 | static void b43_nphy_pa_override(struct b43_wldev *dev, bool enable) | ||
349 | { | ||
350 | struct b43_phy_n *nphy = dev->phy.n; | ||
351 | enum ieee80211_band band; | ||
352 | u16 tmp; | ||
353 | |||
354 | if (!enable) { | ||
355 | nphy->rfctrl_intc1_save = b43_phy_read(dev, | ||
356 | B43_NPHY_RFCTL_INTC1); | ||
357 | nphy->rfctrl_intc2_save = b43_phy_read(dev, | ||
358 | B43_NPHY_RFCTL_INTC2); | ||
359 | band = b43_current_band(dev->wl); | ||
360 | if (dev->phy.rev >= 3) { | ||
361 | if (band == IEEE80211_BAND_5GHZ) | ||
362 | tmp = 0x600; | ||
363 | else | ||
364 | tmp = 0x480; | ||
365 | } else { | ||
366 | if (band == IEEE80211_BAND_5GHZ) | ||
367 | tmp = 0x180; | ||
368 | else | ||
369 | tmp = 0x120; | ||
370 | } | ||
371 | b43_phy_write(dev, B43_NPHY_RFCTL_INTC1, tmp); | ||
372 | b43_phy_write(dev, B43_NPHY_RFCTL_INTC2, tmp); | ||
373 | } else { | ||
374 | b43_phy_write(dev, B43_NPHY_RFCTL_INTC1, | ||
375 | nphy->rfctrl_intc1_save); | ||
376 | b43_phy_write(dev, B43_NPHY_RFCTL_INTC2, | ||
377 | nphy->rfctrl_intc2_save); | ||
378 | } | ||
379 | } | ||
380 | |||
347 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/BmacPhyClkFgc */ | 381 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/BmacPhyClkFgc */ |
348 | static void b43_nphy_bmac_clock_fgc(struct b43_wldev *dev, bool force) | 382 | static void b43_nphy_bmac_clock_fgc(struct b43_wldev *dev, bool force) |
349 | { | 383 | { |
@@ -964,10 +998,10 @@ int b43_phy_initn(struct b43_wldev *dev) | |||
964 | 998 | ||
965 | /* TODO N PHY MAC PHY Clock Set with argument 1 */ | 999 | /* TODO N PHY MAC PHY Clock Set with argument 1 */ |
966 | 1000 | ||
967 | /* b43_nphy_pa_override(dev, false); */ | 1001 | b43_nphy_pa_override(dev, false); |
968 | b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RX2TX); | 1002 | b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RX2TX); |
969 | b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RESET2RX); | 1003 | b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RESET2RX); |
970 | /* b43_nphy_pa_override(dev, true); */ | 1004 | b43_nphy_pa_override(dev, true); |
971 | 1005 | ||
972 | b43_nphy_classifier(dev, 0, 0); | 1006 | b43_nphy_classifier(dev, 0, 0); |
973 | b43_nphy_read_clip_detection(dev, clip); | 1007 | b43_nphy_read_clip_detection(dev, clip); |