diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2013-10-16 10:24:57 -0400 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2013-10-16 17:51:47 -0400 |
commit | 6b625891c6b541080bdaad97bcb82bd9ecd9e44b (patch) | |
tree | 7964fdc2c15a82e39089276434d56c60926c2365 | |
parent | 2d2c476f3c075bd2fdfce479245b2bf4d0879ec6 (diff) |
ARM: AT91: DT: pm: Select ram controller standby based on DT
Move non-dt selection to ioremap_registers init which is only called not
non-dt board.
So we can support sam9n12/sam9x5/sama5d3 too.
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
-rw-r--r-- | arch/arm/mach-at91/at91rm9200.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9260.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9261.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9263.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9g45.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9rl.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/setup.c | 14 |
7 files changed, 17 insertions, 15 deletions
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index 0d234f2a04b3..25805f2f6010 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c | |||
@@ -328,6 +328,7 @@ static void __init at91rm9200_ioremap_registers(void) | |||
328 | { | 328 | { |
329 | at91rm9200_ioremap_st(AT91RM9200_BASE_ST); | 329 | at91rm9200_ioremap_st(AT91RM9200_BASE_ST); |
330 | at91_ioremap_ramc(0, AT91RM9200_BASE_MC, 256); | 330 | at91_ioremap_ramc(0, AT91RM9200_BASE_MC, 256); |
331 | at91_pm_set_standby(at91rm9200_standby); | ||
331 | } | 332 | } |
332 | 333 | ||
333 | static void __init at91rm9200_initialize(void) | 334 | static void __init at91rm9200_initialize(void) |
@@ -338,8 +339,6 @@ static void __init at91rm9200_initialize(void) | |||
338 | /* Initialize GPIO subsystem */ | 339 | /* Initialize GPIO subsystem */ |
339 | at91_gpio_init(at91rm9200_gpio, | 340 | at91_gpio_init(at91rm9200_gpio, |
340 | cpu_is_at91rm9200_bga() ? AT91RM9200_BGA : AT91RM9200_PQFP); | 341 | cpu_is_at91rm9200_bga() ? AT91RM9200_BGA : AT91RM9200_PQFP); |
341 | |||
342 | at91_pm_set_standby(at91rm9200_standby); | ||
343 | } | 342 | } |
344 | 343 | ||
345 | 344 | ||
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 3b43d562d79c..f8629a3fa245 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -343,6 +343,7 @@ static void __init at91sam9260_ioremap_registers(void) | |||
343 | at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); | 343 | at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); |
344 | at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); | 344 | at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); |
345 | at91_ioremap_matrix(AT91SAM9260_BASE_MATRIX); | 345 | at91_ioremap_matrix(AT91SAM9260_BASE_MATRIX); |
346 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
346 | } | 347 | } |
347 | 348 | ||
348 | static void __init at91sam9260_initialize(void) | 349 | static void __init at91sam9260_initialize(void) |
@@ -352,8 +353,6 @@ static void __init at91sam9260_initialize(void) | |||
352 | 353 | ||
353 | /* Register GPIO subsystem */ | 354 | /* Register GPIO subsystem */ |
354 | at91_gpio_init(at91sam9260_gpio, 3); | 355 | at91_gpio_init(at91sam9260_gpio, 3); |
355 | |||
356 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
357 | } | 356 | } |
358 | 357 | ||
359 | /* -------------------------------------------------------------------- | 358 | /* -------------------------------------------------------------------- |
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index a0857c30a914..1f3867a17a28 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c | |||
@@ -285,6 +285,7 @@ static void __init at91sam9261_ioremap_registers(void) | |||
285 | at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); | 285 | at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); |
286 | at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); | 286 | at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); |
287 | at91_ioremap_matrix(AT91SAM9261_BASE_MATRIX); | 287 | at91_ioremap_matrix(AT91SAM9261_BASE_MATRIX); |
288 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
288 | } | 289 | } |
289 | 290 | ||
290 | static void __init at91sam9261_initialize(void) | 291 | static void __init at91sam9261_initialize(void) |
@@ -294,8 +295,6 @@ static void __init at91sam9261_initialize(void) | |||
294 | 295 | ||
295 | /* Register GPIO subsystem */ | 296 | /* Register GPIO subsystem */ |
296 | at91_gpio_init(at91sam9261_gpio, 3); | 297 | at91_gpio_init(at91sam9261_gpio, 3); |
297 | |||
298 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
299 | } | 298 | } |
300 | 299 | ||
301 | /* -------------------------------------------------------------------- | 300 | /* -------------------------------------------------------------------- |
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index 103a95baa8e2..90d455d294a1 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c | |||
@@ -322,6 +322,7 @@ static void __init at91sam9263_ioremap_registers(void) | |||
322 | at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); | 322 | at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); |
323 | at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); | 323 | at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); |
324 | at91_ioremap_matrix(AT91SAM9263_BASE_MATRIX); | 324 | at91_ioremap_matrix(AT91SAM9263_BASE_MATRIX); |
325 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
325 | } | 326 | } |
326 | 327 | ||
327 | static void __init at91sam9263_initialize(void) | 328 | static void __init at91sam9263_initialize(void) |
@@ -331,8 +332,6 @@ static void __init at91sam9263_initialize(void) | |||
331 | 332 | ||
332 | /* Register GPIO subsystem */ | 333 | /* Register GPIO subsystem */ |
333 | at91_gpio_init(at91sam9263_gpio, 5); | 334 | at91_gpio_init(at91sam9263_gpio, 5); |
334 | |||
335 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
336 | } | 335 | } |
337 | 336 | ||
338 | /* -------------------------------------------------------------------- | 337 | /* -------------------------------------------------------------------- |
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index f29731e9968c..e9bf0b8f40eb 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -371,6 +371,7 @@ static void __init at91sam9g45_ioremap_registers(void) | |||
371 | at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); | 371 | at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); |
372 | at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); | 372 | at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); |
373 | at91_ioremap_matrix(AT91SAM9G45_BASE_MATRIX); | 373 | at91_ioremap_matrix(AT91SAM9G45_BASE_MATRIX); |
374 | at91_pm_set_standby(at91_ddr_standby); | ||
374 | } | 375 | } |
375 | 376 | ||
376 | static void __init at91sam9g45_initialize(void) | 377 | static void __init at91sam9g45_initialize(void) |
@@ -380,8 +381,6 @@ static void __init at91sam9g45_initialize(void) | |||
380 | 381 | ||
381 | /* Register GPIO subsystem */ | 382 | /* Register GPIO subsystem */ |
382 | at91_gpio_init(at91sam9g45_gpio, 5); | 383 | at91_gpio_init(at91sam9g45_gpio, 5); |
383 | |||
384 | at91_pm_set_standby(at91_ddr_standby); | ||
385 | } | 384 | } |
386 | 385 | ||
387 | /* -------------------------------------------------------------------- | 386 | /* -------------------------------------------------------------------- |
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c index 9e28f419f414..88995af09c04 100644 --- a/arch/arm/mach-at91/at91sam9rl.c +++ b/arch/arm/mach-at91/at91sam9rl.c | |||
@@ -288,6 +288,7 @@ static void __init at91sam9rl_ioremap_registers(void) | |||
288 | at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); | 288 | at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); |
289 | at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); | 289 | at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); |
290 | at91_ioremap_matrix(AT91SAM9RL_BASE_MATRIX); | 290 | at91_ioremap_matrix(AT91SAM9RL_BASE_MATRIX); |
291 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
291 | } | 292 | } |
292 | 293 | ||
293 | static void __init at91sam9rl_initialize(void) | 294 | static void __init at91sam9rl_initialize(void) |
@@ -297,8 +298,6 @@ static void __init at91sam9rl_initialize(void) | |||
297 | 298 | ||
298 | /* Register GPIO subsystem */ | 299 | /* Register GPIO subsystem */ |
299 | at91_gpio_init(at91sam9rl_gpio, 4); | 300 | at91_gpio_init(at91sam9rl_gpio, 4); |
300 | |||
301 | at91_pm_set_standby(at91sam9_sdram_standby); | ||
302 | } | 301 | } |
303 | 302 | ||
304 | /* -------------------------------------------------------------------- | 303 | /* -------------------------------------------------------------------- |
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index b17fbcf4d9e8..094b3459c288 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "at91_shdwc.h" | 23 | #include "at91_shdwc.h" |
24 | #include "soc.h" | 24 | #include "soc.h" |
25 | #include "generic.h" | 25 | #include "generic.h" |
26 | #include "pm.h" | ||
26 | 27 | ||
27 | struct at91_init_soc __initdata at91_boot_soc; | 28 | struct at91_init_soc __initdata at91_boot_soc; |
28 | 29 | ||
@@ -376,15 +377,16 @@ static void at91_dt_rstc(void) | |||
376 | } | 377 | } |
377 | 378 | ||
378 | static struct of_device_id ramc_ids[] = { | 379 | static struct of_device_id ramc_ids[] = { |
379 | { .compatible = "atmel,at91rm9200-sdramc" }, | 380 | { .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby }, |
380 | { .compatible = "atmel,at91sam9260-sdramc" }, | 381 | { .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby }, |
381 | { .compatible = "atmel,at91sam9g45-ddramc" }, | 382 | { .compatible = "atmel,at91sam9g45-ddramc", .data = at91_ddr_standby }, |
382 | { /*sentinel*/ } | 383 | { /*sentinel*/ } |
383 | }; | 384 | }; |
384 | 385 | ||
385 | static void at91_dt_ramc(void) | 386 | static void at91_dt_ramc(void) |
386 | { | 387 | { |
387 | struct device_node *np; | 388 | struct device_node *np; |
389 | const struct of_device_id *of_id; | ||
388 | 390 | ||
389 | np = of_find_matching_node(NULL, ramc_ids); | 391 | np = of_find_matching_node(NULL, ramc_ids); |
390 | if (!np) | 392 | if (!np) |
@@ -396,6 +398,12 @@ static void at91_dt_ramc(void) | |||
396 | /* the controller may have 2 banks */ | 398 | /* the controller may have 2 banks */ |
397 | at91_ramc_base[1] = of_iomap(np, 1); | 399 | at91_ramc_base[1] = of_iomap(np, 1); |
398 | 400 | ||
401 | of_id = of_match_node(ramc_ids, np); | ||
402 | if (!of_id) | ||
403 | pr_warn("AT91: ramc no standby function available\n"); | ||
404 | else | ||
405 | at91_pm_set_standby(of_id->data); | ||
406 | |||
399 | of_node_put(np); | 407 | of_node_put(np); |
400 | } | 408 | } |
401 | 409 | ||