summaryrefslogtreecommitdiffstats
path: root/drivers/bcma/core.c
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2013-02-26 10:02:23 +0100
committerJohn W. Linville <linville@tuxdriver.com>2013-03-06 22:25:46 +0100
commitc722839cc856cee5f7f1bb833a0f36c86d0bbe8f (patch)
tree5d9135e676d25fb70dd49e0b34043e8a71d495de /drivers/bcma/core.c
parentwil6210: convert to use simple_open() (diff)
downloadlinux-c722839cc856cee5f7f1bb833a0f36c86d0bbe8f.tar.xz
linux-c722839cc856cee5f7f1bb833a0f36c86d0bbe8f.zip
bcma: implement disabling PLLs
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/bcma/core.c')
-rw-r--r--drivers/bcma/core.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/bcma/core.c b/drivers/bcma/core.c
index 03bbe104338f..17b26ce7e051 100644
--- a/drivers/bcma/core.c
+++ b/drivers/bcma/core.c
@@ -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);