|
@@ -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 */
|