diff options
Diffstat (limited to 'arch/arm/mach-versatile/clock.c')
| -rw-r--r-- | arch/arm/mach-versatile/clock.c | 80 | 
1 files changed, 5 insertions, 75 deletions
diff --git a/arch/arm/mach-versatile/clock.c b/arch/arm/mach-versatile/clock.c index 58937f1fb38..c50a44ea7ee 100644 --- a/arch/arm/mach-versatile/clock.c +++ b/arch/arm/mach-versatile/clock.c @@ -10,6 +10,7 @@   */  #include <linux/module.h>  #include <linux/kernel.h> +#include <linux/device.h>  #include <linux/list.h>  #include <linux/errno.h>  #include <linux/err.h> @@ -17,36 +18,11 @@  #include <linux/clk.h>  #include <linux/mutex.h> +#include <asm/clkdev.h>  #include <asm/hardware/icst307.h>  #include "clock.h" -static LIST_HEAD(clocks); -static DEFINE_MUTEX(clocks_mutex); - -struct clk *clk_get(struct device *dev, const char *id) -{ -	struct clk *p, *clk = ERR_PTR(-ENOENT); - -	mutex_lock(&clocks_mutex); -	list_for_each_entry(p, &clocks, node) { -		if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { -			clk = p; -			break; -		} -	} -	mutex_unlock(&clocks_mutex); - -	return clk; -} -EXPORT_SYMBOL(clk_get); - -void clk_put(struct clk *clk) -{ -	module_put(clk->owner); -} -EXPORT_SYMBOL(clk_put); -  int clk_enable(struct clk *clk)  {  	return 0; @@ -66,7 +42,9 @@ EXPORT_SYMBOL(clk_get_rate);  long clk_round_rate(struct clk *clk, unsigned long rate)  { -	return rate; +	struct icst307_vco vco; +	vco = icst307_khz_to_vco(clk->params, rate / 1000); +	return icst307_khz(clk->params, vco) * 1000;  }  EXPORT_SYMBOL(clk_round_rate); @@ -79,57 +57,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate)  		vco = icst307_khz_to_vco(clk->params, rate / 1000);  		clk->rate = icst307_khz(clk->params, vco) * 1000; - -		printk("Clock %s: setting VCO reg params: S=%d R=%d V=%d\n", -			clk->name, vco.s, vco.r, vco.v); -  		clk->setvco(clk, vco);  		ret = 0;  	}  	return ret;  }  EXPORT_SYMBOL(clk_set_rate); - -/* - * These are fixed clocks. - */ -static struct clk kmi_clk = { -	.name	= "KMIREFCLK", -	.rate	= 24000000, -}; - -static struct clk uart_clk = { -	.name	= "UARTCLK", -	.rate	= 24000000, -}; - -static struct clk mmci_clk = { -	.name	= "MCLK", -	.rate	= 24000000, -}; - -int clk_register(struct clk *clk) -{ -	mutex_lock(&clocks_mutex); -	list_add(&clk->node, &clocks); -	mutex_unlock(&clocks_mutex); -	return 0; -} -EXPORT_SYMBOL(clk_register); - -void clk_unregister(struct clk *clk) -{ -	mutex_lock(&clocks_mutex); -	list_del(&clk->node); -	mutex_unlock(&clocks_mutex); -} -EXPORT_SYMBOL(clk_unregister); - -static int __init clk_init(void) -{ -	clk_register(&kmi_clk); -	clk_register(&uart_clk); -	clk_register(&mmci_clk); -	return 0; -} -arch_initcall(clk_init);  |