ARM: versatile: use OF init for sp804 timer

Enable DT based init for the sp804 timers on versatile DT platform.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
This commit is contained in:
Rob Herring 2013-03-13 17:07:44 -05:00
parent cc8e9ad884
commit 818270d573
3 changed files with 25 additions and 14 deletions

View File

@ -121,6 +121,18 @@
interrupts = <0>; interrupts = <0>;
}; };
timer@101e2000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0x101e2000 0x1000>;
interrupts = <4>;
};
timer@101e3000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0x101e3000 0x1000>;
interrupts = <5>;
};
gpio0: gpio@101e4000 { gpio0: gpio@101e4000 {
compatible = "arm,pl061", "arm,primecell"; compatible = "arm,pl061", "arm,primecell";
reg = <0x101e4000 0x1000>; reg = <0x101e4000 0x1000>;

View File

@ -749,12 +749,25 @@ void versatile_restart(char mode, const char *cmd)
/* Early initializations */ /* Early initializations */
void __init versatile_init_early(void) void __init versatile_init_early(void)
{ {
u32 val;
void __iomem *sys = __io_address(VERSATILE_SYS_BASE); void __iomem *sys = __io_address(VERSATILE_SYS_BASE);
osc4_clk.vcoreg = sys + VERSATILE_SYS_OSCCLCD_OFFSET; osc4_clk.vcoreg = sys + VERSATILE_SYS_OSCCLCD_OFFSET;
clkdev_add_table(lookups, ARRAY_SIZE(lookups)); clkdev_add_table(lookups, ARRAY_SIZE(lookups));
versatile_sched_clock_init(sys + VERSATILE_SYS_24MHz_OFFSET, 24000000); versatile_sched_clock_init(sys + VERSATILE_SYS_24MHz_OFFSET, 24000000);
/*
* set clock frequency:
* VERSATILE_REFCLK is 32KHz
* VERSATILE_TIMCLK is 1MHz
*/
val = readl(__io_address(VERSATILE_SCTL_BASE));
writel((VERSATILE_TIMCLK << VERSATILE_TIMER1_EnSel) |
(VERSATILE_TIMCLK << VERSATILE_TIMER2_EnSel) |
(VERSATILE_TIMCLK << VERSATILE_TIMER3_EnSel) |
(VERSATILE_TIMCLK << VERSATILE_TIMER4_EnSel) | val,
__io_address(VERSATILE_SCTL_BASE));
} }
void __init versatile_init(void) void __init versatile_init(void)
@ -785,19 +798,6 @@ void __init versatile_init(void)
*/ */
void __init versatile_timer_init(void) void __init versatile_timer_init(void)
{ {
u32 val;
/*
* set clock frequency:
* VERSATILE_REFCLK is 32KHz
* VERSATILE_TIMCLK is 1MHz
*/
val = readl(__io_address(VERSATILE_SCTL_BASE));
writel((VERSATILE_TIMCLK << VERSATILE_TIMER1_EnSel) |
(VERSATILE_TIMCLK << VERSATILE_TIMER2_EnSel) |
(VERSATILE_TIMCLK << VERSATILE_TIMER3_EnSel) |
(VERSATILE_TIMCLK << VERSATILE_TIMER4_EnSel) | val,
__io_address(VERSATILE_SCTL_BASE));
/* /*
* Initialise to a known state (all timers off) * Initialise to a known state (all timers off)

View File

@ -45,7 +45,6 @@ DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)")
.map_io = versatile_map_io, .map_io = versatile_map_io,
.init_early = versatile_init_early, .init_early = versatile_init_early,
.init_irq = versatile_init_irq, .init_irq = versatile_init_irq,
.init_time = versatile_timer_init,
.init_machine = versatile_dt_init, .init_machine = versatile_dt_init,
.dt_compat = versatile_dt_match, .dt_compat = versatile_dt_match,
.restart = versatile_restart, .restart = versatile_restart,