aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-realview
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-01-11 08:05:01 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-02-19 06:11:07 -0500
commit631e55f966668d7a957342b38d7148643d919d73 (patch)
tree6a0cb9bac002fab07f4ef4274036966dab274cb7 /arch/arm/mach-realview
parentad3bb19c5bd17cebe8e9a97dc0b53e274a05f23b (diff)
ARM: realview: use new init_early for clock tree and sched_clock init
Initialize the clock tree and our sched_clock() early. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-realview')
-rw-r--r--arch/arm/mach-realview/core.c19
-rw-r--r--arch/arm/mach-realview/core.h1
-rw-r--r--arch/arm/mach-realview/realview_eb.c1
-rw-r--r--arch/arm/mach-realview/realview_pb1176.c1
-rw-r--r--arch/arm/mach-realview/realview_pb11mp.c1
-rw-r--r--arch/arm/mach-realview/realview_pba8.c1
-rw-r--r--arch/arm/mach-realview/realview_pbx.c1
7 files changed, 12 insertions, 13 deletions
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c
index a18a5a66c4c3..75dbc8791d05 100644
--- a/arch/arm/mach-realview/core.c
+++ b/arch/arm/mach-realview/core.c
@@ -360,18 +360,19 @@ static struct clk_lookup lookups[] = {
360 } 360 }
361}; 361};
362 362
363static int __init clk_init(void) 363void __init realview_init_early(void)
364{ 364{
365 void __iomem *sys = __io_address(REALVIEW_SYS_BASE);
366
365 if (machine_is_realview_pb1176()) 367 if (machine_is_realview_pb1176())
366 oscvco_clk.vcoreg = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_OSC0_OFFSET; 368 oscvco_clk.vcoreg = sys + REALVIEW_SYS_OSC0_OFFSET;
367 else 369 else
368 oscvco_clk.vcoreg = __io_address(REALVIEW_SYS_BASE) + REALVIEW_SYS_OSC4_OFFSET; 370 oscvco_clk.vcoreg = sys + REALVIEW_SYS_OSC4_OFFSET;
369 371
370 clkdev_add_table(lookups, ARRAY_SIZE(lookups)); 372 clkdev_add_table(lookups, ARRAY_SIZE(lookups));
371 373
372 return 0; 374 versatile_sched_clock_init(sys + REALVIEW_SYS_24MHz_OFFSET, 24000000);
373} 375}
374core_initcall(clk_init);
375 376
376/* 377/*
377 * CLCD support. 378 * CLCD support.
@@ -510,12 +511,6 @@ void realview_leds_event(led_event_t ledevt)
510#endif /* CONFIG_LEDS */ 511#endif /* CONFIG_LEDS */
511 512
512/* 513/*
513 * The sched_clock counter
514 */
515#define REFCOUNTER (__io_address(REALVIEW_SYS_BASE) + \
516 REALVIEW_SYS_24MHz_OFFSET)
517
518/*
519 * Where is the timer (VA)? 514 * Where is the timer (VA)?
520 */ 515 */
521void __iomem *timer0_va_base; 516void __iomem *timer0_va_base;
@@ -530,8 +525,6 @@ void __init realview_timer_init(unsigned int timer_irq)
530{ 525{
531 u32 val; 526 u32 val;
532 527
533 versatile_sched_clock_init(REFCOUNTER, 24000000);
534
535 /* 528 /*
536 * set clock frequency: 529 * set clock frequency:
537 * REALVIEW_REFCLK is 32KHz 530 * REALVIEW_REFCLK is 32KHz
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h
index 693239ddc39e..27c927387083 100644
--- a/arch/arm/mach-realview/core.h
+++ b/arch/arm/mach-realview/core.h
@@ -63,6 +63,7 @@ extern void realview_timer_init(unsigned int timer_irq);
63extern int realview_flash_register(struct resource *res, u32 num); 63extern int realview_flash_register(struct resource *res, u32 num);
64extern int realview_eth_register(const char *name, struct resource *res); 64extern int realview_eth_register(const char *name, struct resource *res);
65extern int realview_usb_register(struct resource *res); 65extern int realview_usb_register(struct resource *res);
66extern void realview_init_early(void);
66extern void realview_fixup(struct machine_desc *mdesc, struct tag *tags, 67extern void realview_fixup(struct machine_desc *mdesc, struct tag *tags,
67 char **from, struct meminfo *meminfo); 68 char **from, struct meminfo *meminfo);
68extern void (*realview_reset)(char); 69extern void (*realview_reset)(char);
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c
index 6ef5c5e528b2..c00e52754efe 100644
--- a/arch/arm/mach-realview/realview_eb.c
+++ b/arch/arm/mach-realview/realview_eb.c
@@ -487,6 +487,7 @@ MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
487 .boot_params = PHYS_OFFSET + 0x00000100, 487 .boot_params = PHYS_OFFSET + 0x00000100,
488 .fixup = realview_fixup, 488 .fixup = realview_fixup,
489 .map_io = realview_eb_map_io, 489 .map_io = realview_eb_map_io,
490 .init_early = realview_init_early,
490 .init_irq = gic_init_irq, 491 .init_irq = gic_init_irq,
491 .timer = &realview_eb_timer, 492 .timer = &realview_eb_timer,
492 .init_machine = realview_eb_init, 493 .init_machine = realview_eb_init,
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c
index cbdc97a5685f..f0447bbf809b 100644
--- a/arch/arm/mach-realview/realview_pb1176.c
+++ b/arch/arm/mach-realview/realview_pb1176.c
@@ -382,6 +382,7 @@ MACHINE_START(REALVIEW_PB1176, "ARM-RealView PB1176")
382 .boot_params = PHYS_OFFSET + 0x00000100, 382 .boot_params = PHYS_OFFSET + 0x00000100,
383 .fixup = realview_pb1176_fixup, 383 .fixup = realview_pb1176_fixup,
384 .map_io = realview_pb1176_map_io, 384 .map_io = realview_pb1176_map_io,
385 .init_early = realview_init_early,
385 .init_irq = gic_init_irq, 386 .init_irq = gic_init_irq,
386 .timer = &realview_pb1176_timer, 387 .timer = &realview_pb1176_timer,
387 .init_machine = realview_pb1176_init, 388 .init_machine = realview_pb1176_init,
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c
index 8e8ab7d29a6a..3b4f78870ac1 100644
--- a/arch/arm/mach-realview/realview_pb11mp.c
+++ b/arch/arm/mach-realview/realview_pb11mp.c
@@ -384,6 +384,7 @@ MACHINE_START(REALVIEW_PB11MP, "ARM-RealView PB11MPCore")
384 .boot_params = PHYS_OFFSET + 0x00000100, 384 .boot_params = PHYS_OFFSET + 0x00000100,
385 .fixup = realview_fixup, 385 .fixup = realview_fixup,
386 .map_io = realview_pb11mp_map_io, 386 .map_io = realview_pb11mp_map_io,
387 .init_early = realview_init_early,
387 .init_irq = gic_init_irq, 388 .init_irq = gic_init_irq,
388 .timer = &realview_pb11mp_timer, 389 .timer = &realview_pb11mp_timer,
389 .init_machine = realview_pb11mp_init, 390 .init_machine = realview_pb11mp_init,
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c
index 841118e3e118..f98d4fa74e30 100644
--- a/arch/arm/mach-realview/realview_pba8.c
+++ b/arch/arm/mach-realview/realview_pba8.c
@@ -334,6 +334,7 @@ MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
334 .boot_params = PHYS_OFFSET + 0x00000100, 334 .boot_params = PHYS_OFFSET + 0x00000100,
335 .fixup = realview_fixup, 335 .fixup = realview_fixup,
336 .map_io = realview_pba8_map_io, 336 .map_io = realview_pba8_map_io,
337 .init_early = realview_init_early,
337 .init_irq = gic_init_irq, 338 .init_irq = gic_init_irq,
338 .timer = &realview_pba8_timer, 339 .timer = &realview_pba8_timer,
339 .init_machine = realview_pba8_init, 340 .init_machine = realview_pba8_init,
diff --git a/arch/arm/mach-realview/realview_pbx.c b/arch/arm/mach-realview/realview_pbx.c
index 02b755b009db..b0521e1bb1ae 100644
--- a/arch/arm/mach-realview/realview_pbx.c
+++ b/arch/arm/mach-realview/realview_pbx.c
@@ -417,6 +417,7 @@ MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
417 .boot_params = PHYS_OFFSET + 0x00000100, 417 .boot_params = PHYS_OFFSET + 0x00000100,
418 .fixup = realview_pbx_fixup, 418 .fixup = realview_pbx_fixup,
419 .map_io = realview_pbx_map_io, 419 .map_io = realview_pbx_map_io,
420 .init_early = realview_init_early,
420 .init_irq = gic_init_irq, 421 .init_irq = gic_init_irq,
421 .timer = &realview_pbx_timer, 422 .timer = &realview_pbx_timer,
422 .init_machine = realview_pbx_init, 423 .init_machine = realview_pbx_init,