diff options
Diffstat (limited to 'arch/arm/mach-pxa/clock.c')
| -rw-r--r-- | arch/arm/mach-pxa/clock.c | 63 |
1 files changed, 22 insertions, 41 deletions
diff --git a/arch/arm/mach-pxa/clock.c b/arch/arm/mach-pxa/clock.c index 40b77408451..4d466102a02 100644 --- a/arch/arm/mach-pxa/clock.c +++ b/arch/arm/mach-pxa/clock.c @@ -3,21 +3,11 @@ */ #include <linux/module.h> #include <linux/kernel.h> -#include <linux/list.h> -#include <linux/errno.h> -#include <linux/err.h> -#include <linux/string.h> #include <linux/clk.h> #include <linux/spinlock.h> -#include <linux/platform_device.h> #include <linux/delay.h> +#include <linux/clkdev.h> -#include <asm/clkdev.h> -#include <mach/pxa2xx-regs.h> -#include <mach/hardware.h> - -#include "devices.h" -#include "generic.h" #include "clock.h" static DEFINE_SPINLOCK(clocks_lock); @@ -63,43 +53,34 @@ unsigned long clk_get_rate(struct clk *clk) } EXPORT_SYMBOL(clk_get_rate); - -void clk_cken_enable(struct clk *clk) +int clk_set_rate(struct clk *clk, unsigned long rate) { - CKEN |= 1 << clk->cken; -} + unsigned long flags; + int ret = -EINVAL; -void clk_cken_disable(struct clk *clk) -{ - CKEN &= ~(1 << clk->cken); -} + if (clk->ops->setrate) { + spin_lock_irqsave(&clocks_lock, flags); + ret = clk->ops->setrate(clk, rate); + spin_unlock_irqrestore(&clocks_lock, flags); + } -const struct clkops clk_cken_ops = { - .enable = clk_cken_enable, - .disable = clk_cken_disable, -}; + return ret; +} +EXPORT_SYMBOL(clk_set_rate); -void clks_register(struct clk_lookup *clks, size_t num) +void clk_dummy_enable(struct clk *clk) { - int i; - - for (i = 0; i < num; i++) - clkdev_add(&clks[i]); } -int clk_add_alias(char *alias, struct device *alias_dev, char *id, - struct device *dev) +void clk_dummy_disable(struct clk *clk) { - struct clk *r = clk_get(dev, id); - struct clk_lookup *l; +} - if (!r) - return -ENODEV; +const struct clkops clk_dummy_ops = { + .enable = clk_dummy_enable, + .disable = clk_dummy_disable, +}; - l = clkdev_alloc(r, alias, alias_dev ? dev_name(alias_dev) : NULL); - clk_put(r); - if (!l) - return -ENODEV; - clkdev_add(l); - return 0; -} +struct clk clk_dummy = { + .ops = &clk_dummy_ops, +}; |
