aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel/timer.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2012-01-13 10:00:22 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-01-13 10:00:22 -0500
commit4de3a8e101150feaefa1139611a50ff37467f33e (patch)
treedaada742542518b02d7db7c5d32e715eaa5f166d /arch/microblaze/kernel/timer.c
parent294064f58953f9964e5945424b09c51800330a83 (diff)
parent099469502f62fbe0d7e4f0b83a2f22538367f734 (diff)
Merge branch 'master' into fixes
Diffstat (limited to 'arch/microblaze/kernel/timer.c')
-rw-r--r--arch/microblaze/kernel/timer.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c
index af74b1113aa..3cb0bf64013 100644
--- a/arch/microblaze/kernel/timer.c
+++ b/arch/microblaze/kernel/timer.c
@@ -243,7 +243,7 @@ static int timer_initialized;
243 243
244void __init time_init(void) 244void __init time_init(void)
245{ 245{
246 u32 irq, i = 0; 246 u32 irq;
247 u32 timer_num = 1; 247 u32 timer_num = 1;
248 struct device_node *timer = NULL; 248 struct device_node *timer = NULL;
249 const void *prop; 249 const void *prop;
@@ -258,33 +258,24 @@ void __init time_init(void)
258 0 258 0
259 }; 259 };
260#endif 260#endif
261 const char * const timer_list[] = { 261 timer = of_find_compatible_node(NULL, NULL, "xlnx,xps-timer-1.00.a");
262 "xlnx,xps-timer-1.00.a",
263 NULL
264 };
265
266 for (i = 0; timer_list[i] != NULL; i++) {
267 timer = of_find_compatible_node(NULL, NULL, timer_list[i]);
268 if (timer)
269 break;
270 }
271 BUG_ON(!timer); 262 BUG_ON(!timer);
272 263
273 timer_baseaddr = be32_to_cpup(of_get_property(timer, "reg", NULL)); 264 timer_baseaddr = be32_to_cpup(of_get_property(timer, "reg", NULL));
274 timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE); 265 timer_baseaddr = (unsigned long) ioremap(timer_baseaddr, PAGE_SIZE);
275 irq = be32_to_cpup(of_get_property(timer, "interrupts", NULL)); 266 irq = irq_of_parse_and_map(timer, 0);
276 timer_num = be32_to_cpup(of_get_property(timer, 267 timer_num = be32_to_cpup(of_get_property(timer,
277 "xlnx,one-timer-only", NULL)); 268 "xlnx,one-timer-only", NULL));
278 if (timer_num) { 269 if (timer_num) {
279 eprintk(KERN_EMERG "Please enable two timers in HW\n"); 270 printk(KERN_EMERG "Please enable two timers in HW\n");
280 BUG(); 271 BUG();
281 } 272 }
282 273
283#ifdef CONFIG_SELFMOD_TIMER 274#ifdef CONFIG_SELFMOD_TIMER
284 selfmod_function((int *) arr_func, timer_baseaddr); 275 selfmod_function((int *) arr_func, timer_baseaddr);
285#endif 276#endif
286 printk(KERN_INFO "%s #0 at 0x%08x, irq=%d\n", 277 printk(KERN_INFO "XPS timer #0 at 0x%08x, irq=%d\n",
287 timer_list[i], timer_baseaddr, irq); 278 timer_baseaddr, irq);
288 279
289 /* If there is clock-frequency property than use it */ 280 /* If there is clock-frequency property than use it */
290 prop = of_get_property(timer, "clock-frequency", NULL); 281 prop = of_get_property(timer, "clock-frequency", NULL);