aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/b43/phy_n.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index ad14f3b428c5..e7dfdac9e4d7 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -4025,11 +4025,24 @@ static void b43_nphy_op_software_rfkill(struct b43_wldev *dev,
4025/* http://bcm-v4.sipsolutions.net/802.11/PHY/Anacore */ 4025/* http://bcm-v4.sipsolutions.net/802.11/PHY/Anacore */
4026static void b43_nphy_op_switch_analog(struct b43_wldev *dev, bool on) 4026static void b43_nphy_op_switch_analog(struct b43_wldev *dev, bool on)
4027{ 4027{
4028 u16 val = on ? 0 : 0x7FFF; 4028 u16 override = on ? 0x0 : 0x7FFF;
4029 u16 core = on ? 0xD : 0x00FD;
4029 4030
4030 if (dev->phy.rev >= 3) 4031 if (dev->phy.rev >= 3) {
4031 b43_phy_write(dev, B43_NPHY_AFECTL_OVER1, val); 4032 if (on) {
4032 b43_phy_write(dev, B43_NPHY_AFECTL_OVER, val); 4033 b43_phy_write(dev, B43_NPHY_AFECTL_C1, core);
4034 b43_phy_write(dev, B43_NPHY_AFECTL_OVER1, override);
4035 b43_phy_write(dev, B43_NPHY_AFECTL_C2, core);
4036 b43_phy_write(dev, B43_NPHY_AFECTL_OVER, override);
4037 } else {
4038 b43_phy_write(dev, B43_NPHY_AFECTL_OVER1, override);
4039 b43_phy_write(dev, B43_NPHY_AFECTL_C1, core);
4040 b43_phy_write(dev, B43_NPHY_AFECTL_OVER, override);
4041 b43_phy_write(dev, B43_NPHY_AFECTL_C2, core);
4042 }
4043 } else {
4044 b43_phy_write(dev, B43_NPHY_AFECTL_OVER, override);
4045 }
4033} 4046}
4034 4047
4035static int b43_nphy_op_switch_channel(struct b43_wldev *dev, 4048static int b43_nphy_op_switch_channel(struct b43_wldev *dev,