]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
b43: N-PHY: check for bustype before touching BCMA CC PLLs
authorRafał Miłecki <zajec5@gmail.com>
Thu, 15 Dec 2011 13:17:21 +0000 (14:17 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 15 Dec 2011 19:47:45 +0000 (14:47 -0500)
Reported-by: John W. Linville <linville@tuxdriver.com>
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 154f97dc378063c490173de1c7a1d51f7814192b..c8fa2cd97e6464d53f5bf44d4684db7daf11db32 100644 (file)
@@ -4048,60 +4048,71 @@ int b43_phy_initn(struct b43_wldev *dev)
 /* http://bcm-v4.sipsolutions.net/802.11/PmuSpurAvoid */
 static void b43_nphy_pmu_spur_avoid(struct b43_wldev *dev, bool avoid)
 {
-#ifdef CONFIG_B43_BCMA
-       struct bcma_drv_cc *cc = &dev->dev->bdev->bus->drv_cc;
+       struct bcma_drv_cc *cc;
        u32 pmu_ctl;
-       if (dev->dev->chip_id == 43224 || dev->dev->chip_id == 43225) {
-               if (avoid) {
-                       bcma_chipco_pll_write(cc, 0x0, 0x11500010);
-                       bcma_chipco_pll_write(cc, 0x1, 0x000C0C06);
-                       bcma_chipco_pll_write(cc, 0x2, 0x0F600a08);
-                       bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                       bcma_chipco_pll_write(cc, 0x4, 0x2001E920);
-                       bcma_chipco_pll_write(cc, 0x5, 0x88888815);
-               } else {
-                       bcma_chipco_pll_write(cc, 0x0, 0x11100010);
-                       bcma_chipco_pll_write(cc, 0x1, 0x000c0c06);
-                       bcma_chipco_pll_write(cc, 0x2, 0x03000a08);
-                       bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                       bcma_chipco_pll_write(cc, 0x4, 0x200005c0);
-                       bcma_chipco_pll_write(cc, 0x5, 0x88888815);
-               }
-               pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD;
-       } else if (dev->dev->chip_id == 0x4716) {
-               if (avoid) {
-                       bcma_chipco_pll_write(cc, 0x0, 0x11500060);
-                       bcma_chipco_pll_write(cc, 0x1, 0x080C0C06);
-                       bcma_chipco_pll_write(cc, 0x2, 0x0F600000);
-                       bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                       bcma_chipco_pll_write(cc, 0x4, 0x2001E924);
-                       bcma_chipco_pll_write(cc, 0x5, 0x88888815);
+
+       switch (dev->dev->bus_type) {
+#ifdef CONFIG_B43_BCMA
+       case B43_BUS_BCMA:
+               cc = &dev->dev->bdev->bus->drv_cc;
+               if (dev->dev->chip_id == 43224 || dev->dev->chip_id == 43225) {
+                       if (avoid) {
+                               bcma_chipco_pll_write(cc, 0x0, 0x11500010);
+                               bcma_chipco_pll_write(cc, 0x1, 0x000C0C06);
+                               bcma_chipco_pll_write(cc, 0x2, 0x0F600a08);
+                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
+                               bcma_chipco_pll_write(cc, 0x4, 0x2001E920);
+                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
+                       } else {
+                               bcma_chipco_pll_write(cc, 0x0, 0x11100010);
+                               bcma_chipco_pll_write(cc, 0x1, 0x000c0c06);
+                               bcma_chipco_pll_write(cc, 0x2, 0x03000a08);
+                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
+                               bcma_chipco_pll_write(cc, 0x4, 0x200005c0);
+                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
+                       }
+                       pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD;
+               } else if (dev->dev->chip_id == 0x4716) {
+                       if (avoid) {
+                               bcma_chipco_pll_write(cc, 0x0, 0x11500060);
+                               bcma_chipco_pll_write(cc, 0x1, 0x080C0C06);
+                               bcma_chipco_pll_write(cc, 0x2, 0x0F600000);
+                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
+                               bcma_chipco_pll_write(cc, 0x4, 0x2001E924);
+                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
+                       } else {
+                               bcma_chipco_pll_write(cc, 0x0, 0x11100060);
+                               bcma_chipco_pll_write(cc, 0x1, 0x080c0c06);
+                               bcma_chipco_pll_write(cc, 0x2, 0x03000000);
+                               bcma_chipco_pll_write(cc, 0x3, 0x00000000);
+                               bcma_chipco_pll_write(cc, 0x4, 0x200005c0);
+                               bcma_chipco_pll_write(cc, 0x5, 0x88888815);
+                       }
+                       pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD |
+                                 BCMA_CC_PMU_CTL_NOILPONW;
+               } else if (dev->dev->chip_id == 0x4322 ||
+                          dev->dev->chip_id == 0x4340 ||
+                          dev->dev->chip_id == 0x4341) {
+                       bcma_chipco_pll_write(cc, 0x0, 0x11100070);
+                       bcma_chipco_pll_write(cc, 0x1, 0x1014140a);
+                       bcma_chipco_pll_write(cc, 0x5, 0x88888854);
+                       if (avoid)
+                               bcma_chipco_pll_write(cc, 0x2, 0x05201828);
+                       else
+                               bcma_chipco_pll_write(cc, 0x2, 0x05001828);
+                       pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD;
                } else {
-                       bcma_chipco_pll_write(cc, 0x0, 0x11100060);
-                       bcma_chipco_pll_write(cc, 0x1, 0x080c0c06);
-                       bcma_chipco_pll_write(cc, 0x2, 0x03000000);
-                       bcma_chipco_pll_write(cc, 0x3, 0x00000000);
-                       bcma_chipco_pll_write(cc, 0x4, 0x200005c0);
-                       bcma_chipco_pll_write(cc, 0x5, 0x88888815);
+                       return;
                }
-               pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD | BCMA_CC_PMU_CTL_NOILPONW;
-       } else if (dev->dev->chip_id == 0x4322 || dev->dev->chip_id == 0x4340 ||
-                  dev->dev->chip_id == 0x4341) {
-               bcma_chipco_pll_write(cc, 0x0, 0x11100070);
-               bcma_chipco_pll_write(cc, 0x1, 0x1014140a);
-               bcma_chipco_pll_write(cc, 0x5, 0x88888854);
-               if (avoid)
-                       bcma_chipco_pll_write(cc, 0x2, 0x05201828);
-               else
-                       bcma_chipco_pll_write(cc, 0x2, 0x05001828);
-               pmu_ctl = BCMA_CC_PMU_CTL_PLL_UPD;
-       } else {
-               return;
-       }
-       bcma_cc_set32(cc, BCMA_CC_PMU_CTL, pmu_ctl);
-#else
-       return;
+               bcma_cc_set32(cc, BCMA_CC_PMU_CTL, pmu_ctl);
+               break;
 #endif
+#ifdef CONFIG_B43_SSB
+       case B43_BUS_SSB:
+               /* FIXME */
+               break;
+#endif
+       }
 }
 
 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/ChanspecSetup */