diff options
author | Michael-Luke Jones <mlj28@cam.ac.uk> | 2007-05-23 17:38:45 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-05-26 05:09:39 -0400 |
commit | 435c5da00b9610f9664c5d6f38dfdafce419ef4a (patch) | |
tree | 1ed1653334c91ef355f2a89974c3dc19802bad36 /arch/arm/mach-ixp4xx/nslu2-setup.c | |
parent | e87a8e85e90660183d3ef8e700627689c6292a3f (diff) |
[ARM] 4405/1: NSLU2, DSM-G600 frequency fixup code
This patch is required as the frequency fixup in nslu2_init does not
run sufficiently early in the boot sequence to take effect. In addition
the dsmg600 setup code behaviour has been improved such that a
'fixup' routine is avoided.
Signed-off-by: Michael-Luke Jones <mlj28@cam.ac.uk>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-ixp4xx/nslu2-setup.c')
-rw-r--r-- | arch/arm/mach-ixp4xx/nslu2-setup.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/arm/mach-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index 162c266e5f8f..1aa45a2e6d62 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/mach/flash.h> | 24 | #include <asm/mach/flash.h> |
25 | #include <asm/mach/time.h> | ||
25 | 26 | ||
26 | static struct flash_platform_data nslu2_flash_data = { | 27 | static struct flash_platform_data nslu2_flash_data = { |
27 | .map_name = "cfi_probe", | 28 | .map_name = "cfi_probe", |
@@ -157,10 +158,21 @@ static void nslu2_power_off(void) | |||
157 | gpio_line_set(NSLU2_PO_GPIO, IXP4XX_GPIO_HIGH); | 158 | gpio_line_set(NSLU2_PO_GPIO, IXP4XX_GPIO_HIGH); |
158 | } | 159 | } |
159 | 160 | ||
160 | static void __init nslu2_init(void) | 161 | static void __init nslu2_timer_init(void) |
161 | { | 162 | { |
162 | ixp4xx_timer_freq = NSLU2_FREQ; | 163 | /* The xtal on this machine is non-standard. */ |
164 | ixp4xx_timer_freq = NSLU2_FREQ; | ||
165 | |||
166 | /* Call standard timer_init function. */ | ||
167 | ixp4xx_timer_init(); | ||
168 | } | ||
163 | 169 | ||
170 | static struct sys_timer nslu2_timer = { | ||
171 | .init = nslu2_timer_init, | ||
172 | }; | ||
173 | |||
174 | static void __init nslu2_init(void) | ||
175 | { | ||
164 | ixp4xx_sys_init(); | 176 | ixp4xx_sys_init(); |
165 | 177 | ||
166 | nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | 178 | nslu2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); |
@@ -185,6 +197,6 @@ MACHINE_START(NSLU2, "Linksys NSLU2") | |||
185 | .boot_params = 0x00000100, | 197 | .boot_params = 0x00000100, |
186 | .map_io = ixp4xx_map_io, | 198 | .map_io = ixp4xx_map_io, |
187 | .init_irq = ixp4xx_init_irq, | 199 | .init_irq = ixp4xx_init_irq, |
188 | .timer = &ixp4xx_timer, | 200 | .timer = &nslu2_timer, |
189 | .init_machine = nslu2_init, | 201 | .init_machine = nslu2_init, |
190 | MACHINE_END | 202 | MACHINE_END |