diff options
Diffstat (limited to 'arch/arm/mach-shmobile/clock.c')
| -rw-r--r-- | arch/arm/mach-shmobile/clock.c | 28 | 
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/clock.c b/arch/arm/mach-shmobile/clock.c index ad7df629d99..e7232a0373b 100644 --- a/arch/arm/mach-shmobile/clock.c +++ b/arch/arm/mach-shmobile/clock.c @@ -21,6 +21,32 @@   */  #include <linux/kernel.h>  #include <linux/init.h> + +#ifdef CONFIG_COMMON_CLK +#include <linux/clk.h> +#include <linux/clkdev.h> +#include <mach/clock.h> + +void __init shmobile_clk_workaround(const struct clk_name *clks, +				    int nr_clks, bool enable) +{ +	const struct clk_name *clkn; +	struct clk *clk; +	unsigned int i; + +	for (i = 0; i < nr_clks; ++i) { +		clkn = clks + i; +		clk = clk_get(NULL, clkn->clk); +		if (!IS_ERR(clk)) { +			clk_register_clkdev(clk, clkn->con_id, clkn->dev_id); +			if (enable) +				clk_prepare_enable(clk); +			clk_put(clk); +		} +	} +} + +#else /* CONFIG_COMMON_CLK */  #include <linux/sh_clk.h>  #include <linux/export.h>  #include <mach/clock.h> @@ -58,3 +84,5 @@ void __clk_put(struct clk *clk)  {  }  EXPORT_SYMBOL(__clk_put); + +#endif /* CONFIG_COMMON_CLK */  | 
