aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>2013-08-27 08:42:06 -0400
committerSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>2013-09-29 15:09:29 -0400
commit26cae166cff9148cd2cab40f64ed548ba1189a8e (patch)
tree0123ea6e21a91d1c10ef6924c8197e3a246b0b72
parente8ecbc7c51a4c27030427db055597fb53e29d0db (diff)
ARM: highbank: remove custom .init_time hook
With arch/arm calling of_clk_init(NULL) from time_init(), we can now remove custom .init_time hooks. Highbank clock provider need a reference to system registers, as a workaround current clk driver maps those independent of arch code now. Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Acked-by: Rob Herring <rob.herring@calxeda.com> Acked-by: Mike Turquette <mturquette@linaro.org>
-rw-r--r--arch/arm/mach-highbank/highbank.c23
-rw-r--r--drivers/clk/clk-highbank.c10
2 files changed, 14 insertions, 19 deletions
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c
index 8e63ccdb0de3..e6d6eacea9d0 100644
--- a/arch/arm/mach-highbank/highbank.c
+++ b/arch/arm/mach-highbank/highbank.c
@@ -24,7 +24,6 @@
24#include <linux/of_platform.h> 24#include <linux/of_platform.h>
25#include <linux/of_address.h> 25#include <linux/of_address.h>
26#include <linux/amba/bus.h> 26#include <linux/amba/bus.h>
27#include <linux/clk-provider.h>
28 27
29#include <asm/cacheflush.h> 28#include <asm/cacheflush.h>
30#include <asm/cputype.h> 29#include <asm/cputype.h>
@@ -83,20 +82,6 @@ static void __init highbank_init_irq(void)
83 } 82 }
84} 83}
85 84
86static void __init highbank_timer_init(void)
87{
88 struct device_node *np;
89
90 /* Map system registers */
91 np = of_find_compatible_node(NULL, NULL, "calxeda,hb-sregs");
92 sregs_base = of_iomap(np, 0);
93 WARN_ON(!sregs_base);
94
95 of_clk_init(NULL);
96
97 clocksource_of_init();
98}
99
100static void highbank_power_off(void) 85static void highbank_power_off(void)
101{ 86{
102 highbank_set_pwr_shutdown(); 87 highbank_set_pwr_shutdown();
@@ -155,6 +140,13 @@ static struct notifier_block highbank_platform_nb = {
155 140
156static void __init highbank_init(void) 141static void __init highbank_init(void)
157{ 142{
143 struct device_node *np;
144
145 /* Map system registers */
146 np = of_find_compatible_node(NULL, NULL, "calxeda,hb-sregs");
147 sregs_base = of_iomap(np, 0);
148 WARN_ON(!sregs_base);
149
158 pm_power_off = highbank_power_off; 150 pm_power_off = highbank_power_off;
159 highbank_pm_init(); 151 highbank_pm_init();
160 152
@@ -176,7 +168,6 @@ DT_MACHINE_START(HIGHBANK, "Highbank")
176#endif 168#endif
177 .smp = smp_ops(highbank_smp_ops), 169 .smp = smp_ops(highbank_smp_ops),
178 .init_irq = highbank_init_irq, 170 .init_irq = highbank_init_irq,
179 .init_time = highbank_timer_init,
180 .init_machine = highbank_init, 171 .init_machine = highbank_init,
181 .dt_compat = highbank_match, 172 .dt_compat = highbank_match,
182 .restart = highbank_restart, 173 .restart = highbank_restart,
diff --git a/drivers/clk/clk-highbank.c b/drivers/clk/clk-highbank.c
index 2e08cb001936..2e7e9d9798cb 100644
--- a/drivers/clk/clk-highbank.c
+++ b/drivers/clk/clk-highbank.c
@@ -20,8 +20,7 @@
20#include <linux/clk-provider.h> 20#include <linux/clk-provider.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/of.h> 22#include <linux/of.h>
23 23#include <linux/of_address.h>
24extern void __iomem *sregs_base;
25 24
26#define HB_PLL_LOCK_500 0x20000000 25#define HB_PLL_LOCK_500 0x20000000
27#define HB_PLL_LOCK 0x10000000 26#define HB_PLL_LOCK 0x10000000
@@ -280,6 +279,7 @@ static __init struct clk *hb_clk_init(struct device_node *node, const struct clk
280 const char *clk_name = node->name; 279 const char *clk_name = node->name;
281 const char *parent_name; 280 const char *parent_name;
282 struct clk_init_data init; 281 struct clk_init_data init;
282 struct device_node *srnp;
283 int rc; 283 int rc;
284 284
285 rc = of_property_read_u32(node, "reg", &reg); 285 rc = of_property_read_u32(node, "reg", &reg);
@@ -290,7 +290,11 @@ static __init struct clk *hb_clk_init(struct device_node *node, const struct clk
290 if (WARN_ON(!hb_clk)) 290 if (WARN_ON(!hb_clk))
291 return NULL; 291 return NULL;
292 292
293 hb_clk->reg = sregs_base + reg; 293 /* Map system registers */
294 srnp = of_find_compatible_node(NULL, NULL, "calxeda,hb-sregs");
295 hb_clk->reg = of_iomap(srnp, 0);
296 BUG_ON(!hb_clk->reg);
297 hb_clk->reg += reg;
294 298
295 of_property_read_string(node, "clock-output-names", &clk_name); 299 of_property_read_string(node, "clock-output-names", &clk_name);
296 300