b43: HT-PHY: calibrate radio after switching channel
authorRafał Miłecki <zajec5@gmail.com>
Mon, 20 Jun 2011 01:12:19 +0000 (03:12 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Jun 2011 20:09:44 +0000 (16:09 -0400)
After uploading radio values calibration goes in. In MMIO dump it is:
 radio_read(0x002b) -> 0x0008
radio_write(0x002b) <- 0x0008
 radio_read(0x002e) -> 0x0004
radio_write(0x002e) <- 0x0000
 radio_read(0x002e) -> 0x0000
radio_write(0x002e) <- 0x0004
 radio_read(0x002b) -> 0x0008
radio_write(0x002b) <- 0x0009
To find masks and sets, MMIO hacks were used to fool closed driver.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/phy_ht.c

index 0b13f6f37c2fa4853f8405a012b1e882792bf6ce..72f01ce8b42c4f930a69f77e90152663608ac567 100644 (file)
@@ -69,7 +69,13 @@ static void b43_radio_2059_channel_setup(struct b43_wldev *dev,
 
        udelay(50);
 
-       /* TODO */
+       /* Calibration */
+       b43_radio_mask(dev, 0x2b, ~0x1);
+       b43_radio_mask(dev, 0x2e, ~0x4);
+       b43_radio_set(dev, 0x2e, 0x4);
+       b43_radio_set(dev, 0x2b, 0x1);
+
+       udelay(300);
 }
 
 static void b43_phy_ht_channel_setup(struct b43_wldev *dev,