b43: define BCMA wireless specific PLLs
authorRafał Miłecki <zajec5@gmail.com>
Tue, 26 Feb 2013 09:07:57 +0000 (10:07 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 6 Mar 2013 21:25:47 +0000 (16:25 -0500)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/b43.h
drivers/net/wireless/b43/main.c

index 10e288d..fe4a77e 100644 (file)
@@ -473,6 +473,12 @@ enum {
 #define B43_MACCMD_CCA                 0x00000008      /* Clear channel assessment */
 #define B43_MACCMD_BGNOISE             0x00000010      /* Background noise */
 
+/* See BCMA_CLKCTLST_EXTRESREQ and BCMA_CLKCTLST_EXTRESST */
+#define B43_BCMA_CLKCTLST_80211_PLL_REQ        0x00000100
+#define B43_BCMA_CLKCTLST_PHY_PLL_REQ  0x00000200
+#define B43_BCMA_CLKCTLST_80211_PLL_ST 0x01000000
+#define B43_BCMA_CLKCTLST_PHY_PLL_ST   0x02000000
+
 /* BCMA 802.11 core specific IO Control (BCMA_IOCTL) flags */
 #define B43_BCMA_IOCTL_PHY_CLKEN       0x00000004      /* PHY Clock Enable */
 #define B43_BCMA_IOCTL_PHY_RESET       0x00000008      /* PHY Reset */
index 0568273..c4d0cc5 100644 (file)
@@ -1189,10 +1189,15 @@ static void b43_bcma_phy_reset(struct b43_wldev *dev)
 
 static void b43_bcma_wireless_core_reset(struct b43_wldev *dev, bool gmode)
 {
+       u32 req = B43_BCMA_CLKCTLST_80211_PLL_REQ |
+                 B43_BCMA_CLKCTLST_PHY_PLL_REQ;
+       u32 status = B43_BCMA_CLKCTLST_80211_PLL_ST |
+                    B43_BCMA_CLKCTLST_PHY_PLL_ST;
+
        b43_device_enable(dev, B43_BCMA_IOCTL_PHY_CLKEN);
        bcma_core_set_clockmode(dev->dev->bdev, BCMA_CLKMODE_FAST);
        b43_bcma_phy_reset(dev);
-       bcma_core_pll_ctl(dev->dev->bdev, 0x300, 0x3000000, true);
+       bcma_core_pll_ctl(dev->dev->bdev, req, status, true);
 }
 #endif