diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-03-02 14:16:27 -0500 |
---|---|---|
committer | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-03-15 11:31:22 -0400 |
commit | c8082d344ac4c05932fec1766e5e9ce72cf286ed (patch) | |
tree | 8a2a7a4b2a61b3780c669b916b33a0cde09a7722 /arch/arm | |
parent | 21ea52aadd6296480baad3b04fef87230517b54c (diff) |
ARM: at91: add RSTC (Reset Controller) dt support
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/boot/dts/at91sam9g20.dtsi | 5 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9g45.dtsi | 5 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9x5.dtsi | 5 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9x5.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/setup.c | 30 |
5 files changed, 45 insertions, 1 deletions
diff --git a/arch/arm/boot/dts/at91sam9g20.dtsi b/arch/arm/boot/dts/at91sam9g20.dtsi index dd5d114a0e1d..bcad6e7dccce 100644 --- a/arch/arm/boot/dts/at91sam9g20.dtsi +++ b/arch/arm/boot/dts/at91sam9g20.dtsi | |||
@@ -64,6 +64,11 @@ | |||
64 | reg = <0xfffffc00 0x100>; | 64 | reg = <0xfffffc00 0x100>; |
65 | }; | 65 | }; |
66 | 66 | ||
67 | rstc@fffffd00 { | ||
68 | compatible = "atmel,at91sam9260-rstc"; | ||
69 | reg = <0xfffffd00 0x10>; | ||
70 | }; | ||
71 | |||
67 | pit: timer@fffffd30 { | 72 | pit: timer@fffffd30 { |
68 | compatible = "atmel,at91sam9260-pit"; | 73 | compatible = "atmel,at91sam9260-pit"; |
69 | reg = <0xfffffd30 0xf>; | 74 | reg = <0xfffffd30 0xf>; |
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi index 621a329307d6..faccd4f5aace 100644 --- a/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/arch/arm/boot/dts/at91sam9g45.dtsi | |||
@@ -65,6 +65,11 @@ | |||
65 | reg = <0xfffffc00 0x100>; | 65 | reg = <0xfffffc00 0x100>; |
66 | }; | 66 | }; |
67 | 67 | ||
68 | rstc@fffffd00 { | ||
69 | compatible = "atmel,at91sam9g45-rstc"; | ||
70 | reg = <0xfffffd00 0x10>; | ||
71 | }; | ||
72 | |||
68 | pit: timer@fffffd30 { | 73 | pit: timer@fffffd30 { |
69 | compatible = "atmel,at91sam9260-pit"; | 74 | compatible = "atmel,at91sam9260-pit"; |
70 | reg = <0xfffffd30 0xf>; | 75 | reg = <0xfffffd30 0xf>; |
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi index 3855843fc038..d9a93fdd35a5 100644 --- a/arch/arm/boot/dts/at91sam9x5.dtsi +++ b/arch/arm/boot/dts/at91sam9x5.dtsi | |||
@@ -63,6 +63,11 @@ | |||
63 | reg = <0xfffffc00 0x100>; | 63 | reg = <0xfffffc00 0x100>; |
64 | }; | 64 | }; |
65 | 65 | ||
66 | rstc@fffffe00 { | ||
67 | compatible = "atmel,at91sam9g45-rstc"; | ||
68 | reg = <0xfffffe00 0x10>; | ||
69 | }; | ||
70 | |||
66 | pit: timer@fffffe30 { | 71 | pit: timer@fffffe30 { |
67 | compatible = "atmel,at91sam9260-pit"; | 72 | compatible = "atmel,at91sam9260-pit"; |
68 | reg = <0xfffffe30 0xf>; | 73 | reg = <0xfffffe30 0xf>; |
diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c index 7bec5a40d01a..c121fe5fabbd 100644 --- a/arch/arm/mach-at91/at91sam9x5.c +++ b/arch/arm/mach-at91/at91sam9x5.c | |||
@@ -306,7 +306,6 @@ static void __init at91sam9x5_ioremap_registers(void) | |||
306 | 306 | ||
307 | void __init at91sam9x5_initialize(void) | 307 | void __init at91sam9x5_initialize(void) |
308 | { | 308 | { |
309 | arm_pm_restart = at91sam9g45_restart; | ||
310 | at91_extern_irq = (1 << AT91SAM9X5_ID_IRQ0); | 309 | at91_extern_irq = (1 << AT91SAM9X5_ID_IRQ0); |
311 | 310 | ||
312 | /* Register GPIO subsystem (using DT) */ | 311 | /* Register GPIO subsystem (using DT) */ |
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index d7abc25f6c64..3e48b59dfa74 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c | |||
@@ -287,8 +287,38 @@ void __init at91_ioremap_matrix(u32 base_addr) | |||
287 | } | 287 | } |
288 | 288 | ||
289 | #if defined(CONFIG_OF) | 289 | #if defined(CONFIG_OF) |
290 | static struct of_device_id rstc_ids[] = { | ||
291 | { .compatible = "atmel,at91sam9260-rstc", .data = at91sam9_alt_restart }, | ||
292 | { .compatible = "atmel,at91sam9g45-rstc", .data = at91sam9g45_restart }, | ||
293 | { /*sentinel*/ } | ||
294 | }; | ||
295 | |||
296 | static void at91_dt_rstc(void) | ||
297 | { | ||
298 | struct device_node *np; | ||
299 | const struct of_device_id *of_id; | ||
300 | |||
301 | np = of_find_matching_node(NULL, rstc_ids); | ||
302 | if (!np) | ||
303 | panic("unable to find compatible rstc node in dtb\n"); | ||
304 | |||
305 | at91_rstc_base = of_iomap(np, 0); | ||
306 | if (!at91_rstc_base) | ||
307 | panic("unable to map rstc cpu registers\n"); | ||
308 | |||
309 | of_id = of_match_node(rstc_ids, np); | ||
310 | if (!of_id) | ||
311 | panic("AT91: rtsc no restart function availlable\n"); | ||
312 | |||
313 | arm_pm_restart = of_id->data; | ||
314 | |||
315 | of_node_put(np); | ||
316 | } | ||
317 | |||
290 | void __init at91_dt_initialize(void) | 318 | void __init at91_dt_initialize(void) |
291 | { | 319 | { |
320 | at91_dt_rstc(); | ||
321 | |||
292 | /* temporary until have the ramc binding*/ | 322 | /* temporary until have the ramc binding*/ |
293 | at91_boot_soc.ioremap_registers(); | 323 | at91_boot_soc.ioremap_registers(); |
294 | 324 | ||