bcma: implement disabling PLLs
authorRafał Miłecki <zajec5@gmail.com>
Tue, 26 Feb 2013 09:02:23 +0000 (10:02 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 6 Mar 2013 21:25:46 +0000 (16:25 -0500)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/bcma/core.c

index 03bbe104338ff70db5abb6fbace10b1595f438a0..17b26ce7e051b1374b6be01f18f3dd1cad057e56 100644 (file)
@@ -104,7 +104,13 @@ void bcma_core_pll_ctl(struct bcma_device *core, u32 req, u32 status, bool on)
                if (i)
                        bcma_err(core->bus, "PLL enable timeout\n");
        } else {
-               bcma_warn(core->bus, "Disabling PLL not supported yet!\n");
+               /*
+                * Mask the PLL but don't wait for it to be disabled. PLL may be
+                * shared between cores and will be still up if there is another
+                * core using it.
+                */
+               bcma_mask32(core, BCMA_CLKCTLST, ~req);
+               bcma_read32(core, BCMA_CLKCTLST);
        }
 }
 EXPORT_SYMBOL_GPL(bcma_core_pll_ctl);