[PATCH 2/2] b43: HT-PHY: enable radio
Rafał Miłecki
zajec5 at gmail.com
Sat Jun 18 20:18:12 EDT 2011
The trick was to find 0x810 PHY reg ops close to analog enabling code.
To find out proper masks and sets, MMIO hacks were used.
Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
---
Bigger part of MMIO dump, showing where implemented OPS were found:
>>> analog(ON) start
phy_write(0x0911) <- 0x00cd
phy_write(0x0910) <- 0x0000
phy_write(0x0915) <- 0x00cd
phy_write(0x0914) <- 0x0000
phy_write(0x0919) <- 0x00cd
phy_write(0x0918) <- 0x0000
>>> analog(ON) end
read16 0xb06003e0 -> 0x9701
read32 0xb0600120 -> 0xc4020402
phy_read(0x0810) -> 0x0000
phy_write(0x0810) <- 0x0000
phy_read(0x0810) -> 0x0000
phy_write(0x0810) <- 0x0001
phy_read(0x0810) -> 0x0001
phy_write(0x0810) <- 0x0000
phy_read(0x0810) -> 0x0000
phy_write(0x0810) <- 0x0002
radio_write(0x0c51) <- 0x0070
---
drivers/net/wireless/b43/phy_ht.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_ht.c b/drivers/net/wireless/b43/phy_ht.c
index e84d4c1..008c1a9 100644
--- a/drivers/net/wireless/b43/phy_ht.c
+++ b/drivers/net/wireless/b43/phy_ht.c
@@ -69,6 +69,10 @@ static void b43_phy_ht_op_software_rfkill(struct b43_wldev *dev,
if (blocked) {
b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
} else {
+ b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
+ b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x1);
+ b43_phy_mask(dev, B43_PHY_HT_RF_CTL1, ~0);
+ b43_phy_maskset(dev, B43_PHY_HT_RF_CTL1, ~0, 0x2);
}
}
--
1.7.3.4
More information about the b43-dev
mailing list