diff options
Diffstat (limited to 'arch/arm/mach-at91/at91rm9200.c')
-rw-r--r-- | arch/arm/mach-at91/at91rm9200.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index 713d3bdbd28..99c3174e24a 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "soc.h" | 23 | #include "soc.h" |
24 | #include "generic.h" | 24 | #include "generic.h" |
25 | #include "clock.h" | 25 | #include "clock.h" |
26 | #include "sam9_smc.h" | ||
26 | 27 | ||
27 | static struct map_desc at91rm9200_io_desc[] __initdata = { | 28 | static struct map_desc at91rm9200_io_desc[] __initdata = { |
28 | { | 29 | { |
@@ -195,6 +196,10 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
195 | CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), | 196 | CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk), |
196 | /* fake hclk clock */ | 197 | /* fake hclk clock */ |
197 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), | 198 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), |
199 | CLKDEV_CON_ID("pioA", &pioA_clk), | ||
200 | CLKDEV_CON_ID("pioB", &pioB_clk), | ||
201 | CLKDEV_CON_ID("pioC", &pioC_clk), | ||
202 | CLKDEV_CON_ID("pioD", &pioD_clk), | ||
198 | }; | 203 | }; |
199 | 204 | ||
200 | static struct clk_lookup usart_clocks_lookups[] = { | 205 | static struct clk_lookup usart_clocks_lookups[] = { |
@@ -268,27 +273,23 @@ void __init at91rm9200_set_console_clock(int id) | |||
268 | * GPIO | 273 | * GPIO |
269 | * -------------------------------------------------------------------- */ | 274 | * -------------------------------------------------------------------- */ |
270 | 275 | ||
271 | static struct at91_gpio_bank at91rm9200_gpio[] = { | 276 | static struct at91_gpio_bank at91rm9200_gpio[] __initdata = { |
272 | { | 277 | { |
273 | .id = AT91RM9200_ID_PIOA, | 278 | .id = AT91RM9200_ID_PIOA, |
274 | .offset = AT91_PIOA, | 279 | .regbase = AT91RM9200_BASE_PIOA, |
275 | .clock = &pioA_clk, | ||
276 | }, { | 280 | }, { |
277 | .id = AT91RM9200_ID_PIOB, | 281 | .id = AT91RM9200_ID_PIOB, |
278 | .offset = AT91_PIOB, | 282 | .regbase = AT91RM9200_BASE_PIOB, |
279 | .clock = &pioB_clk, | ||
280 | }, { | 283 | }, { |
281 | .id = AT91RM9200_ID_PIOC, | 284 | .id = AT91RM9200_ID_PIOC, |
282 | .offset = AT91_PIOC, | 285 | .regbase = AT91RM9200_BASE_PIOC, |
283 | .clock = &pioC_clk, | ||
284 | }, { | 286 | }, { |
285 | .id = AT91RM9200_ID_PIOD, | 287 | .id = AT91RM9200_ID_PIOD, |
286 | .offset = AT91_PIOD, | 288 | .regbase = AT91RM9200_BASE_PIOD, |
287 | .clock = &pioD_clk, | ||
288 | } | 289 | } |
289 | }; | 290 | }; |
290 | 291 | ||
291 | static void at91rm9200_reset(void) | 292 | static void at91rm9200_restart(char mode, const char *cmd) |
292 | { | 293 | { |
293 | /* | 294 | /* |
294 | * Perform a hardware reset with the use of the Watchdog timer. | 295 | * Perform a hardware reset with the use of the Watchdog timer. |
@@ -307,9 +308,13 @@ static void __init at91rm9200_map_io(void) | |||
307 | iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc)); | 308 | iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc)); |
308 | } | 309 | } |
309 | 310 | ||
311 | static void __init at91rm9200_ioremap_registers(void) | ||
312 | { | ||
313 | } | ||
314 | |||
310 | static void __init at91rm9200_initialize(void) | 315 | static void __init at91rm9200_initialize(void) |
311 | { | 316 | { |
312 | at91_arch_reset = at91rm9200_reset; | 317 | arm_pm_restart = at91rm9200_restart; |
313 | at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1) | 318 | at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1) |
314 | | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3) | 319 | | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3) |
315 | | (1 << AT91RM9200_ID_IRQ4) | (1 << AT91RM9200_ID_IRQ5) | 320 | | (1 << AT91RM9200_ID_IRQ4) | (1 << AT91RM9200_ID_IRQ5) |
@@ -366,6 +371,7 @@ static unsigned int at91rm9200_default_irq_priority[NR_AIC_IRQS] __initdata = { | |||
366 | struct at91_init_soc __initdata at91rm9200_soc = { | 371 | struct at91_init_soc __initdata at91rm9200_soc = { |
367 | .map_io = at91rm9200_map_io, | 372 | .map_io = at91rm9200_map_io, |
368 | .default_irq_priority = at91rm9200_default_irq_priority, | 373 | .default_irq_priority = at91rm9200_default_irq_priority, |
374 | .ioremap_registers = at91rm9200_ioremap_registers, | ||
369 | .register_clocks = at91rm9200_register_clocks, | 375 | .register_clocks = at91rm9200_register_clocks, |
370 | .init = at91rm9200_initialize, | 376 | .init = at91rm9200_initialize, |
371 | }; | 377 | }; |