b43: N-PHY: rev2: save and restore PHY regs on RSSI poll
authorRafał Miłecki <zajec5@gmail.com>
Thu, 18 Nov 2010 20:11:42 +0000 (21:11 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 24 Nov 2010 21:19:34 +0000 (16:19 -0500)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/phy_n.c

index bf0d63d..dc4045d 100644 (file)
@@ -1846,6 +1846,14 @@ static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf,
                save_regs_phy[5] = b43_phy_read(dev, B43_NPHY_AFECTL_OVER);
                save_regs_phy[6] = b43_phy_read(dev, B43_NPHY_TXF_40CO_B1S0);
                save_regs_phy[7] = b43_phy_read(dev, B43_NPHY_TXF_40CO_B32S1);
+       } else if (dev->phy.rev == 2) {
+               save_regs_phy[0] = b43_phy_read(dev, B43_NPHY_AFECTL_C1);
+               save_regs_phy[1] = b43_phy_read(dev, B43_NPHY_AFECTL_C2);
+               save_regs_phy[2] = b43_phy_read(dev, B43_NPHY_AFECTL_OVER);
+               save_regs_phy[3] = b43_phy_read(dev, B43_NPHY_RFCTL_CMD);
+               save_regs_phy[4] = b43_phy_read(dev, B43_NPHY_RFCTL_OVER);
+               save_regs_phy[5] = b43_phy_read(dev, B43_NPHY_RFCTL_RSSIO1);
+               save_regs_phy[6] = b43_phy_read(dev, B43_NPHY_RFCTL_RSSIO2);
        }
 
        b43_nphy_rssi_select(dev, 5, type);
@@ -1889,6 +1897,14 @@ static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf,
                b43_phy_write(dev, B43_NPHY_AFECTL_OVER, save_regs_phy[5]);
                b43_phy_write(dev, B43_NPHY_TXF_40CO_B1S0, save_regs_phy[6]);
                b43_phy_write(dev, B43_NPHY_TXF_40CO_B32S1, save_regs_phy[7]);
+       } else if (dev->phy.rev == 2) {
+               b43_phy_write(dev, B43_NPHY_AFECTL_C1, save_regs_phy[0]);
+               b43_phy_write(dev, B43_NPHY_AFECTL_C2, save_regs_phy[1]);
+               b43_phy_write(dev, B43_NPHY_AFECTL_OVER, save_regs_phy[2]);
+               b43_phy_write(dev, B43_NPHY_RFCTL_CMD, save_regs_phy[3]);
+               b43_phy_write(dev, B43_NPHY_RFCTL_OVER, save_regs_phy[4]);
+               b43_phy_write(dev, B43_NPHY_RFCTL_RSSIO1, save_regs_phy[5]);
+               b43_phy_write(dev, B43_NPHY_RFCTL_RSSIO2, save_regs_phy[6]);
        }
 
        return out;