diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-02-12 23:58:53 -0500 |
---|---|---|
committer | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-02-23 08:57:56 -0500 |
commit | f363c407b42c467d06675c852e55f26adb959915 (patch) | |
tree | 695ffaf47ee7db5adfa9dd23976b5df77bd738c5 /arch | |
parent | 1a269ade22bb65d0afc0d20e0a19602453fae04a (diff) |
ARM: at91: make sdram/ddr register base soc independent
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Diffstat (limited to 'arch')
33 files changed, 111 insertions, 87 deletions
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index ebe597b1b998..7923197cb506 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c | |||
@@ -320,6 +320,7 @@ static void __init at91rm9200_map_io(void) | |||
320 | static void __init at91rm9200_ioremap_registers(void) | 320 | static void __init at91rm9200_ioremap_registers(void) |
321 | { | 321 | { |
322 | at91rm9200_ioremap_st(AT91RM9200_BASE_ST); | 322 | at91rm9200_ioremap_st(AT91RM9200_BASE_ST); |
323 | at91_ioremap_ramc(0, AT91RM9200_BASE_MC, 256); | ||
323 | } | 324 | } |
324 | 325 | ||
325 | static void __init at91rm9200_initialize(void) | 326 | static void __init at91rm9200_initialize(void) |
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c index 18bacec2b094..aca272bfb452 100644 --- a/arch/arm/mach-at91/at91rm9200_devices.c +++ b/arch/arm/mach-at91/at91rm9200_devices.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <mach/board.h> | 21 | #include <mach/board.h> |
22 | #include <mach/at91rm9200.h> | 22 | #include <mach/at91rm9200.h> |
23 | #include <mach/at91rm9200_mc.h> | 23 | #include <mach/at91rm9200_mc.h> |
24 | #include <mach/at91_ramc.h> | ||
24 | 25 | ||
25 | #include "generic.h" | 26 | #include "generic.h" |
26 | 27 | ||
@@ -241,15 +242,15 @@ void __init at91_add_device_cf(struct at91_cf_data *data) | |||
241 | data->chipselect = 4; /* can only use EBI ChipSelect 4 */ | 242 | data->chipselect = 4; /* can only use EBI ChipSelect 4 */ |
242 | 243 | ||
243 | /* CF takes over CS4, CS5, CS6 */ | 244 | /* CF takes over CS4, CS5, CS6 */ |
244 | csa = at91_sys_read(AT91_EBI_CSA); | 245 | csa = at91_ramc_read(0, AT91_EBI_CSA); |
245 | at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH); | 246 | at91_ramc_write(0, AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH); |
246 | 247 | ||
247 | /* | 248 | /* |
248 | * Static memory controller timing adjustments. | 249 | * Static memory controller timing adjustments. |
249 | * REVISIT: these timings are in terms of MCK cycles, so | 250 | * REVISIT: these timings are in terms of MCK cycles, so |
250 | * when MCK changes (cpufreq etc) so must these values... | 251 | * when MCK changes (cpufreq etc) so must these values... |
251 | */ | 252 | */ |
252 | at91_sys_write(AT91_SMC_CSR(4), | 253 | at91_ramc_write(0, AT91_SMC_CSR(4), |
253 | AT91_SMC_ACSS_STD | 254 | AT91_SMC_ACSS_STD |
254 | | AT91_SMC_DBW_16 | 255 | | AT91_SMC_DBW_16 |
255 | | AT91_SMC_BAT | 256 | | AT91_SMC_BAT |
@@ -407,11 +408,11 @@ void __init at91_add_device_nand(struct atmel_nand_data *data) | |||
407 | return; | 408 | return; |
408 | 409 | ||
409 | /* enable the address range of CS3 */ | 410 | /* enable the address range of CS3 */ |
410 | csa = at91_sys_read(AT91_EBI_CSA); | 411 | csa = at91_ramc_read(0, AT91_EBI_CSA); |
411 | at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA); | 412 | at91_ramc_write(0, AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA); |
412 | 413 | ||
413 | /* set the bus interface characteristics */ | 414 | /* set the bus interface characteristics */ |
414 | at91_sys_write(AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN | 415 | at91_ramc_write(0, AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN |
415 | | AT91_SMC_NWS_(5) | 416 | | AT91_SMC_NWS_(5) |
416 | | AT91_SMC_TDF_(1) | 417 | | AT91_SMC_TDF_(1) |
417 | | AT91_SMC_RWSETUP_(0) /* tDS Data Set up Time 30 - ns */ | 418 | | AT91_SMC_RWSETUP_(0) /* tDS Data Set up Time 30 - ns */ |
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 5c15d144dce4..14882aec1d4f 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -325,6 +325,7 @@ static void __init at91sam9260_ioremap_registers(void) | |||
325 | { | 325 | { |
326 | at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC); | 326 | at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC); |
327 | at91_ioremap_rstc(AT91SAM9260_BASE_RSTC); | 327 | at91_ioremap_rstc(AT91SAM9260_BASE_RSTC); |
328 | at91_ioremap_ramc(0, AT91SAM9260_BASE_SDRAMC, 512); | ||
328 | at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); | 329 | at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT); |
329 | at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); | 330 | at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC); |
330 | at91_ioremap_matrix(AT91SAM9260_BASE_MATRIX); | 331 | at91_ioremap_matrix(AT91SAM9260_BASE_MATRIX); |
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index 50971e6dd556..684c5dfd92ac 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c | |||
@@ -283,6 +283,7 @@ static void __init at91sam9261_ioremap_registers(void) | |||
283 | { | 283 | { |
284 | at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC); | 284 | at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC); |
285 | at91_ioremap_rstc(AT91SAM9261_BASE_RSTC); | 285 | at91_ioremap_rstc(AT91SAM9261_BASE_RSTC); |
286 | at91_ioremap_ramc(0, AT91SAM9261_BASE_SDRAMC, 512); | ||
286 | at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); | 287 | at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT); |
287 | at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); | 288 | at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC); |
288 | at91_ioremap_matrix(AT91SAM9261_BASE_MATRIX); | 289 | at91_ioremap_matrix(AT91SAM9261_BASE_MATRIX); |
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index 5fd6fe86719b..0b4fa5a7f685 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c | |||
@@ -303,6 +303,8 @@ static void __init at91sam9263_ioremap_registers(void) | |||
303 | { | 303 | { |
304 | at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC); | 304 | at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC); |
305 | at91_ioremap_rstc(AT91SAM9263_BASE_RSTC); | 305 | at91_ioremap_rstc(AT91SAM9263_BASE_RSTC); |
306 | at91_ioremap_ramc(0, AT91SAM9263_BASE_SDRAMC0, 512); | ||
307 | at91_ioremap_ramc(1, AT91SAM9263_BASE_SDRAMC1, 512); | ||
306 | at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT); | 308 | at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT); |
307 | at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); | 309 | at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0); |
308 | at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); | 310 | at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1); |
diff --git a/arch/arm/mach-at91/at91sam9_alt_reset.S b/arch/arm/mach-at91/at91sam9_alt_reset.S index 518e42377171..7af2e108b8a0 100644 --- a/arch/arm/mach-at91/at91sam9_alt_reset.S +++ b/arch/arm/mach-at91/at91sam9_alt_reset.S | |||
@@ -15,16 +15,17 @@ | |||
15 | 15 | ||
16 | #include <linux/linkage.h> | 16 | #include <linux/linkage.h> |
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | #include <mach/at91sam9_sdramc.h> | 18 | #include <mach/at91_ramc.h> |
19 | #include <mach/at91_rstc.h> | 19 | #include <mach/at91_rstc.h> |
20 | 20 | ||
21 | .arm | 21 | .arm |
22 | 22 | ||
23 | .globl at91sam9_alt_restart | 23 | .globl at91sam9_alt_restart |
24 | 24 | ||
25 | at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants | 25 | at91sam9_alt_restart: ldr r0, =at91_ramc_base @ preload constants |
26 | ldr r1, =at91_rstc_base | 26 | ldr r0, [r0] |
27 | ldr r1, [r1] | 27 | ldr r4, =at91_rstc_base |
28 | ldr r1, [r4] | ||
28 | 29 | ||
29 | mov r2, #1 | 30 | mov r2, #1 |
30 | mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN | 31 | mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN |
@@ -37,6 +38,3 @@ at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants | |||
37 | str r4, [r1, #AT91_RSTC_CR] @ reset processor | 38 | str r4, [r1, #AT91_RSTC_CR] @ reset processor |
38 | 39 | ||
39 | b . | 40 | b . |
40 | |||
41 | .at91_va_base_sdramc: | ||
42 | .word AT91_VA_BASE_SYS + AT91_SDRAMC0 | ||
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index 3726160b6aa3..a41622ea61b8 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -331,6 +331,8 @@ static void __init at91sam9g45_ioremap_registers(void) | |||
331 | { | 331 | { |
332 | at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC); | 332 | at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC); |
333 | at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC); | 333 | at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC); |
334 | at91_ioremap_ramc(0, AT91SAM9G45_BASE_DDRSDRC1, 512); | ||
335 | at91_ioremap_ramc(1, AT91SAM9G45_BASE_DDRSDRC0, 512); | ||
334 | at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); | 336 | at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT); |
335 | at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); | 337 | at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC); |
336 | at91_ioremap_matrix(AT91SAM9G45_BASE_MATRIX); | 338 | at91_ioremap_matrix(AT91SAM9G45_BASE_MATRIX); |
diff --git a/arch/arm/mach-at91/at91sam9g45_reset.S b/arch/arm/mach-at91/at91sam9g45_reset.S index 0468be10980b..9d457182c86c 100644 --- a/arch/arm/mach-at91/at91sam9g45_reset.S +++ b/arch/arm/mach-at91/at91sam9g45_reset.S | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/linkage.h> | 13 | #include <linux/linkage.h> |
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <mach/at91sam9_ddrsdr.h> | 15 | #include <mach/at91_ramc.h> |
16 | #include <mach/at91_rstc.h> | 16 | #include <mach/at91_rstc.h> |
17 | 17 | ||
18 | .arm | 18 | .arm |
@@ -20,9 +20,10 @@ | |||
20 | .globl at91sam9g45_restart | 20 | .globl at91sam9g45_restart |
21 | 21 | ||
22 | at91sam9g45_restart: | 22 | at91sam9g45_restart: |
23 | ldr r0, .at91_va_base_sdramc0 @ preload constants | 23 | ldr r5, =at91_ramc_base @ preload constants |
24 | ldr r1, =at91_rstc_base | 24 | ldr r0, [r5] |
25 | ldr r1, [r1] | 25 | ldr r4, =at91_rstc_base |
26 | ldr r1, [r4] | ||
26 | 27 | ||
27 | mov r2, #1 | 28 | mov r2, #1 |
28 | mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN | 29 | mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN |
@@ -35,6 +36,3 @@ at91sam9g45_restart: | |||
35 | str r4, [r1, #AT91_RSTC_CR] @ reset processor | 36 | str r4, [r1, #AT91_RSTC_CR] @ reset processor |
36 | 37 | ||
37 | b . | 38 | b . |
38 | |||
39 | .at91_va_base_sdramc0: | ||
40 | .word AT91_VA_BASE_SYS + AT91_DDRSDRC0 | ||
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c index d95ff978921f..63d9372eb18e 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 | { | 288 | { |
289 | at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC); | 289 | at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC); |
290 | at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC); | 290 | at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC); |
291 | at91_ioremap_ramc(0, AT91SAM9RL_BASE_SDRAMC, 512); | ||
291 | at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); | 292 | at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT); |
292 | at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); | 293 | at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC); |
293 | at91_ioremap_matrix(AT91SAM9RL_BASE_MATRIX); | 294 | at91_ioremap_matrix(AT91SAM9RL_BASE_MATRIX); |
diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c index 1c3444d2ee0c..67b37a0c69c4 100644 --- a/arch/arm/mach-at91/at91sam9x5.c +++ b/arch/arm/mach-at91/at91sam9x5.c | |||
@@ -303,6 +303,7 @@ static void __init at91sam9x5_ioremap_registers(void) | |||
303 | { | 303 | { |
304 | if (of_at91sam926x_pit_init() < 0) | 304 | if (of_at91sam926x_pit_init() < 0) |
305 | panic("Impossible to find PIT\n"); | 305 | panic("Impossible to find PIT\n"); |
306 | at91_ioremap_ramc(0, AT91SAM9X5_BASE_DDRSDRC0, 512); | ||
306 | } | 307 | } |
307 | 308 | ||
308 | void __init at91sam9x5_initialize(void) | 309 | void __init at91sam9x5_initialize(void) |
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c index 368e1427ad99..e094cc81fe25 100644 --- a/arch/arm/mach-at91/board-cpuat91.c +++ b/arch/arm/mach-at91/board-cpuat91.c | |||
@@ -38,6 +38,7 @@ | |||
38 | 38 | ||
39 | #include <mach/board.h> | 39 | #include <mach/board.h> |
40 | #include <mach/at91rm9200_mc.h> | 40 | #include <mach/at91rm9200_mc.h> |
41 | #include <mach/at91_ramc.h> | ||
41 | #include <mach/cpu.h> | 42 | #include <mach/cpu.h> |
42 | 43 | ||
43 | #include "generic.h" | 44 | #include "generic.h" |
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c index 07ef35b0ec2c..f23aabef8551 100644 --- a/arch/arm/mach-at91/board-eco920.c +++ b/arch/arm/mach-at91/board-eco920.c | |||
@@ -26,6 +26,7 @@ | |||
26 | 26 | ||
27 | #include <mach/board.h> | 27 | #include <mach/board.h> |
28 | #include <mach/at91rm9200_mc.h> | 28 | #include <mach/at91rm9200_mc.h> |
29 | #include <mach/at91_ramc.h> | ||
29 | #include <mach/cpu.h> | 30 | #include <mach/cpu.h> |
30 | 31 | ||
31 | #include "generic.h" | 32 | #include "generic.h" |
@@ -110,7 +111,7 @@ static void __init eco920_board_init(void) | |||
110 | at91_add_device_mmc(0, &eco920_mmc_data); | 111 | at91_add_device_mmc(0, &eco920_mmc_data); |
111 | platform_device_register(&eco920_flash); | 112 | platform_device_register(&eco920_flash); |
112 | 113 | ||
113 | at91_sys_write(AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1) | 114 | at91_ramc_write(0, AT91_SMC_CSR(7), AT91_SMC_RWHOLD_(1) |
114 | | AT91_SMC_RWSETUP_(1) | 115 | | AT91_SMC_RWSETUP_(1) |
115 | | AT91_SMC_DBW_8 | 116 | | AT91_SMC_DBW_8 |
116 | | AT91_SMC_WSEN | 117 | | AT91_SMC_WSEN |
@@ -122,7 +123,7 @@ static void __init eco920_board_init(void) | |||
122 | at91_set_deglitch(AT91_PIN_PA23, 1); | 123 | at91_set_deglitch(AT91_PIN_PA23, 1); |
123 | 124 | ||
124 | /* Initialization of the Static Memory Controller for Chip Select 3 */ | 125 | /* Initialization of the Static Memory Controller for Chip Select 3 */ |
125 | at91_sys_write(AT91_SMC_CSR(3), | 126 | at91_ramc_write(0, AT91_SMC_CSR(3), |
126 | AT91_SMC_DBW_16 | /* 16 bit */ | 127 | AT91_SMC_DBW_16 | /* 16 bit */ |
127 | AT91_SMC_WSEN | | 128 | AT91_SMC_WSEN | |
128 | AT91_SMC_NWS_(5) | /* wait states */ | 129 | AT91_SMC_NWS_(5) | /* wait states */ |
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c index d75a4a2ad9c2..bb9914582013 100644 --- a/arch/arm/mach-at91/board-kb9202.c +++ b/arch/arm/mach-at91/board-kb9202.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <mach/board.h> | 38 | #include <mach/board.h> |
39 | #include <mach/cpu.h> | 39 | #include <mach/cpu.h> |
40 | #include <mach/at91rm9200_mc.h> | 40 | #include <mach/at91rm9200_mc.h> |
41 | #include <mach/at91_ramc.h> | ||
41 | 42 | ||
42 | #include "generic.h" | 43 | #include "generic.h" |
43 | 44 | ||
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c index ab024fa11d5c..59e35dd14863 100644 --- a/arch/arm/mach-at91/board-picotux200.c +++ b/arch/arm/mach-at91/board-picotux200.c | |||
@@ -39,6 +39,7 @@ | |||
39 | 39 | ||
40 | #include <mach/board.h> | 40 | #include <mach/board.h> |
41 | #include <mach/at91rm9200_mc.h> | 41 | #include <mach/at91rm9200_mc.h> |
42 | #include <mach/at91_ramc.h> | ||
42 | 43 | ||
43 | #include "generic.h" | 44 | #include "generic.h" |
44 | 45 | ||
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c index 782f37946af5..9083df04e7ed 100644 --- a/arch/arm/mach-at91/board-rm9200dk.c +++ b/arch/arm/mach-at91/board-rm9200dk.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
42 | #include <mach/board.h> | 42 | #include <mach/board.h> |
43 | #include <mach/at91rm9200_mc.h> | 43 | #include <mach/at91rm9200_mc.h> |
44 | #include <mach/at91_ramc.h> | ||
44 | 45 | ||
45 | #include "generic.h" | 46 | #include "generic.h" |
46 | 47 | ||
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c index ef7c12a92246..11cbaa8946fe 100644 --- a/arch/arm/mach-at91/board-rm9200ek.c +++ b/arch/arm/mach-at91/board-rm9200ek.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
42 | #include <mach/board.h> | 42 | #include <mach/board.h> |
43 | #include <mach/at91rm9200_mc.h> | 43 | #include <mach/at91rm9200_mc.h> |
44 | #include <mach/at91_ramc.h> | ||
44 | 45 | ||
45 | #include "generic.h" | 46 | #include "generic.h" |
46 | 47 | ||
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c index bbd553e1cd93..52f460768f71 100644 --- a/arch/arm/mach-at91/board-yl-9200.c +++ b/arch/arm/mach-at91/board-yl-9200.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
46 | #include <mach/board.h> | 46 | #include <mach/board.h> |
47 | #include <mach/at91rm9200_mc.h> | 47 | #include <mach/at91rm9200_mc.h> |
48 | #include <mach/at91_ramc.h> | ||
48 | #include <mach/cpu.h> | 49 | #include <mach/cpu.h> |
49 | 50 | ||
50 | #include "generic.h" | 51 | #include "generic.h" |
@@ -393,7 +394,7 @@ static void yl9200_init_video(void) | |||
393 | at91_set_A_periph(AT91_PIN_PC6, 0); | 394 | at91_set_A_periph(AT91_PIN_PC6, 0); |
394 | 395 | ||
395 | /* Initialization of the Static Memory Controller for Chip Select 2 */ | 396 | /* Initialization of the Static Memory Controller for Chip Select 2 */ |
396 | at91_sys_write(AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */ | 397 | at91_ramc_write(0, AT91_SMC_CSR(2), AT91_SMC_DBW_16 /* 16 bit */ |
397 | | AT91_SMC_WSEN | AT91_SMC_NWS_(0x4) /* wait states */ | 398 | | AT91_SMC_WSEN | AT91_SMC_NWS_(0x4) /* wait states */ |
398 | | AT91_SMC_TDF_(0x100) /* float time */ | 399 | | AT91_SMC_TDF_(0x100) /* float time */ |
399 | ); | 400 | ); |
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h index aec7fd054cc4..4cad85e57470 100644 --- a/arch/arm/mach-at91/generic.h +++ b/arch/arm/mach-at91/generic.h | |||
@@ -71,6 +71,9 @@ extern void at91_ioremap_shdwc(u32 base_addr); | |||
71 | /* Matrix */ | 71 | /* Matrix */ |
72 | extern void at91_ioremap_matrix(u32 base_addr); | 72 | extern void at91_ioremap_matrix(u32 base_addr); |
73 | 73 | ||
74 | /* Ram Controler */ | ||
75 | extern void at91_ioremap_ramc(int id, u32 addr, u32 size); | ||
76 | |||
74 | /* GPIO */ | 77 | /* GPIO */ |
75 | #define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */ | 78 | #define AT91RM9200_PQFP 3 /* AT91RM9200 PQFP package has 3 banks */ |
76 | #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ | 79 | #define AT91RM9200_BGA 4 /* AT91RM9200 BGA package has 4 banks */ |
diff --git a/arch/arm/mach-at91/include/mach/at91_ramc.h b/arch/arm/mach-at91/include/mach/at91_ramc.h new file mode 100644 index 000000000000..3155499e2ea3 --- /dev/null +++ b/arch/arm/mach-at91/include/mach/at91_ramc.h | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * Header file for the Atmel RAM Controller | ||
3 | * | ||
4 | * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | ||
5 | * | ||
6 | * Under GPLv2 only | ||
7 | */ | ||
8 | |||
9 | #ifndef __AT91_RAMC_H__ | ||
10 | #define __AT91_RAMC_H__ | ||
11 | |||
12 | #ifndef __ASSEMBLY__ | ||
13 | extern void __iomem *at91_ramc_base[]; | ||
14 | |||
15 | #define at91_ramc_read(id, field) \ | ||
16 | __raw_readl(at91_ramc_base[id] + field) | ||
17 | |||
18 | #define at91_ramc_write(id, field, value) \ | ||
19 | __raw_writel(value, at91_ramc_base[id] + field) | ||
20 | #else | ||
21 | .extern at91_ramc_base | ||
22 | #endif | ||
23 | |||
24 | #ifdef CONFIG_ARCH_AT91RM9200 | ||
25 | #include <mach/at91rm9200_mc.h> | ||
26 | #else | ||
27 | #include <mach/at91sam9_ddrsdr.h> | ||
28 | #include <mach/at91sam9_sdramc.h> | ||
29 | #endif | ||
30 | |||
31 | #endif /* __AT91_RAMC_H__ */ | ||
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h index 0d0b9b3d2fe4..32d57be47986 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200.h | |||
@@ -80,7 +80,6 @@ | |||
80 | * System Peripherals (offset from AT91_BASE_SYS) | 80 | * System Peripherals (offset from AT91_BASE_SYS) |
81 | */ | 81 | */ |
82 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */ | 82 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) /* Power Management Controller */ |
83 | #define AT91_MC (0xffffff00 - AT91_BASE_SYS) /* Memory Controllers */ | ||
84 | 83 | ||
85 | #define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */ | 84 | #define AT91RM9200_BASE_DBGU AT91_BASE_DBGU0 /* Debug Unit */ |
86 | #define AT91RM9200_BASE_PIOA 0xfffff400 /* PIO Controller A */ | 85 | #define AT91RM9200_BASE_PIOA 0xfffff400 /* PIO Controller A */ |
@@ -89,6 +88,7 @@ | |||
89 | #define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */ | 88 | #define AT91RM9200_BASE_PIOD 0xfffffa00 /* PIO Controller D */ |
90 | #define AT91RM9200_BASE_ST 0xfffffd00 /* System Timer */ | 89 | #define AT91RM9200_BASE_ST 0xfffffd00 /* System Timer */ |
91 | #define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */ | 90 | #define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */ |
91 | #define AT91RM9200_BASE_MC 0xffffff00 /* Memory Controllers */ | ||
92 | 92 | ||
93 | #define AT91_USART0 AT91RM9200_BASE_US0 | 93 | #define AT91_USART0 AT91RM9200_BASE_US0 |
94 | #define AT91_USART1 AT91RM9200_BASE_US1 | 94 | #define AT91_USART1 AT91RM9200_BASE_US1 |
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200_mc.h b/arch/arm/mach-at91/include/mach/at91rm9200_mc.h index 0eb031b70451..aeaadfb452af 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200_mc.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200_mc.h | |||
@@ -17,10 +17,10 @@ | |||
17 | #define AT91RM9200_MC_H | 17 | #define AT91RM9200_MC_H |
18 | 18 | ||
19 | /* Memory Controller */ | 19 | /* Memory Controller */ |
20 | #define AT91_MC_RCR (AT91_MC + 0x00) /* MC Remap Control Register */ | 20 | #define AT91_MC_RCR 0x00 /* MC Remap Control Register */ |
21 | #define AT91_MC_RCB (1 << 0) /* Remap Command Bit */ | 21 | #define AT91_MC_RCB (1 << 0) /* Remap Command Bit */ |
22 | 22 | ||
23 | #define AT91_MC_ASR (AT91_MC + 0x04) /* MC Abort Status Register */ | 23 | #define AT91_MC_ASR 0x04 /* MC Abort Status Register */ |
24 | #define AT91_MC_UNADD (1 << 0) /* Undefined Address Abort Status */ | 24 | #define AT91_MC_UNADD (1 << 0) /* Undefined Address Abort Status */ |
25 | #define AT91_MC_MISADD (1 << 1) /* Misaligned Address Abort Status */ | 25 | #define AT91_MC_MISADD (1 << 1) /* Misaligned Address Abort Status */ |
26 | #define AT91_MC_ABTSZ (3 << 8) /* Abort Size Status */ | 26 | #define AT91_MC_ABTSZ (3 << 8) /* Abort Size Status */ |
@@ -40,16 +40,16 @@ | |||
40 | #define AT91_MC_SVMST2 (1 << 26) /* Saved UHP Abort Source */ | 40 | #define AT91_MC_SVMST2 (1 << 26) /* Saved UHP Abort Source */ |
41 | #define AT91_MC_SVMST3 (1 << 27) /* Saved EMAC Abort Source */ | 41 | #define AT91_MC_SVMST3 (1 << 27) /* Saved EMAC Abort Source */ |
42 | 42 | ||
43 | #define AT91_MC_AASR (AT91_MC + 0x08) /* MC Abort Address Status Register */ | 43 | #define AT91_MC_AASR 0x08 /* MC Abort Address Status Register */ |
44 | 44 | ||
45 | #define AT91_MC_MPR (AT91_MC + 0x0c) /* MC Master Priority Register */ | 45 | #define AT91_MC_MPR 0x0c /* MC Master Priority Register */ |
46 | #define AT91_MPR_MSTP0 (7 << 0) /* ARM920T Priority */ | 46 | #define AT91_MPR_MSTP0 (7 << 0) /* ARM920T Priority */ |
47 | #define AT91_MPR_MSTP1 (7 << 4) /* PDC Priority */ | 47 | #define AT91_MPR_MSTP1 (7 << 4) /* PDC Priority */ |
48 | #define AT91_MPR_MSTP2 (7 << 8) /* UHP Priority */ | 48 | #define AT91_MPR_MSTP2 (7 << 8) /* UHP Priority */ |
49 | #define AT91_MPR_MSTP3 (7 << 12) /* EMAC Priority */ | 49 | #define AT91_MPR_MSTP3 (7 << 12) /* EMAC Priority */ |
50 | 50 | ||
51 | /* External Bus Interface (EBI) registers */ | 51 | /* External Bus Interface (EBI) registers */ |
52 | #define AT91_EBI_CSA (AT91_MC + 0x60) /* Chip Select Assignment Register */ | 52 | #define AT91_EBI_CSA 0x60 /* Chip Select Assignment Register */ |
53 | #define AT91_EBI_CS0A (1 << 0) /* Chip Select 0 Assignment */ | 53 | #define AT91_EBI_CS0A (1 << 0) /* Chip Select 0 Assignment */ |
54 | #define AT91_EBI_CS0A_SMC (0 << 0) | 54 | #define AT91_EBI_CS0A_SMC (0 << 0) |
55 | #define AT91_EBI_CS0A_BFC (1 << 0) | 55 | #define AT91_EBI_CS0A_BFC (1 << 0) |
@@ -66,7 +66,7 @@ | |||
66 | #define AT91_EBI_DBPUC (1 << 0) /* Data Bus Pull-Up Configuration */ | 66 | #define AT91_EBI_DBPUC (1 << 0) /* Data Bus Pull-Up Configuration */ |
67 | 67 | ||
68 | /* Static Memory Controller (SMC) registers */ | 68 | /* Static Memory Controller (SMC) registers */ |
69 | #define AT91_SMC_CSR(n) (AT91_MC + 0x70 + ((n) * 4))/* SMC Chip Select Register */ | 69 | #define AT91_SMC_CSR(n) (0x70 + ((n) * 4)) /* SMC Chip Select Register */ |
70 | #define AT91_SMC_NWS (0x7f << 0) /* Number of Wait States */ | 70 | #define AT91_SMC_NWS (0x7f << 0) /* Number of Wait States */ |
71 | #define AT91_SMC_NWS_(x) ((x) << 0) | 71 | #define AT91_SMC_NWS_(x) ((x) << 0) |
72 | #define AT91_SMC_WSEN (1 << 7) /* Wait State Enable */ | 72 | #define AT91_SMC_WSEN (1 << 7) /* Wait State Enable */ |
@@ -88,7 +88,7 @@ | |||
88 | #define AT91_SMC_RWHOLD_(x) ((x) << 28) | 88 | #define AT91_SMC_RWHOLD_(x) ((x) << 28) |
89 | 89 | ||
90 | /* Burst Flash Controller register */ | 90 | /* Burst Flash Controller register */ |
91 | #define AT91_BFC_MR (AT91_MC + 0xc0) /* Mode Register */ | 91 | #define AT91_BFC_MR 0xc0 /* Mode Register */ |
92 | #define AT91_BFC_BFCOM (3 << 0) /* Burst Flash Controller Operating Mode */ | 92 | #define AT91_BFC_BFCOM (3 << 0) /* Burst Flash Controller Operating Mode */ |
93 | #define AT91_BFC_BFCOM_DISABLED (0 << 0) | 93 | #define AT91_BFC_BFCOM_DISABLED (0 << 0) |
94 | #define AT91_BFC_BFCOM_ASYNC (1 << 0) | 94 | #define AT91_BFC_BFCOM_ASYNC (1 << 0) |
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h b/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h index 7ad3597e6c4b..aa047f458f1b 100644 --- a/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h +++ b/arch/arm/mach-at91/include/mach/at91rm9200_sdramc.h | |||
@@ -17,7 +17,7 @@ | |||
17 | #define AT91RM9200_SDRAMC_H | 17 | #define AT91RM9200_SDRAMC_H |
18 | 18 | ||
19 | /* SDRAM Controller registers */ | 19 | /* SDRAM Controller registers */ |
20 | #define AT91RM9200_SDRAMC_MR (AT91_MC + 0x90) /* Mode Register */ | 20 | #define AT91RM9200_SDRAMC_MR 0x90 /* Mode Register */ |
21 | #define AT91RM9200_SDRAMC_MODE (0xf << 0) /* Command Mode */ | 21 | #define AT91RM9200_SDRAMC_MODE (0xf << 0) /* Command Mode */ |
22 | #define AT91RM9200_SDRAMC_MODE_NORMAL (0 << 0) | 22 | #define AT91RM9200_SDRAMC_MODE_NORMAL (0 << 0) |
23 | #define AT91RM9200_SDRAMC_MODE_NOP (1 << 0) | 23 | #define AT91RM9200_SDRAMC_MODE_NOP (1 << 0) |
@@ -28,10 +28,10 @@ | |||
28 | #define AT91RM9200_SDRAMC_DBW_32 (0 << 4) | 28 | #define AT91RM9200_SDRAMC_DBW_32 (0 << 4) |
29 | #define AT91RM9200_SDRAMC_DBW_16 (1 << 4) | 29 | #define AT91RM9200_SDRAMC_DBW_16 (1 << 4) |
30 | 30 | ||
31 | #define AT91RM9200_SDRAMC_TR (AT91_MC + 0x94) /* Refresh Timer Register */ | 31 | #define AT91RM9200_SDRAMC_TR 0x94 /* Refresh Timer Register */ |
32 | #define AT91RM9200_SDRAMC_COUNT (0xfff << 0) /* Refresh Timer Count */ | 32 | #define AT91RM9200_SDRAMC_COUNT (0xfff << 0) /* Refresh Timer Count */ |
33 | 33 | ||
34 | #define AT91RM9200_SDRAMC_CR (AT91_MC + 0x98) /* Configuration Register */ | 34 | #define AT91RM9200_SDRAMC_CR 0x98 /* Configuration Register */ |
35 | #define AT91RM9200_SDRAMC_NC (3 << 0) /* Number of Column Bits */ | 35 | #define AT91RM9200_SDRAMC_NC (3 << 0) /* Number of Column Bits */ |
36 | #define AT91RM9200_SDRAMC_NC_8 (0 << 0) | 36 | #define AT91RM9200_SDRAMC_NC_8 (0 << 0) |
37 | #define AT91RM9200_SDRAMC_NC_9 (1 << 0) | 37 | #define AT91RM9200_SDRAMC_NC_9 (1 << 0) |
@@ -53,11 +53,11 @@ | |||
53 | #define AT91RM9200_SDRAMC_TRAS (0xf << 23) /* Active to Precharge Delay */ | 53 | #define AT91RM9200_SDRAMC_TRAS (0xf << 23) /* Active to Precharge Delay */ |
54 | #define AT91RM9200_SDRAMC_TXSR (0xf << 27) /* Exit Self Refresh to Active Delay */ | 54 | #define AT91RM9200_SDRAMC_TXSR (0xf << 27) /* Exit Self Refresh to Active Delay */ |
55 | 55 | ||
56 | #define AT91RM9200_SDRAMC_SRR (AT91_MC + 0x9c) /* Self Refresh Register */ | 56 | #define AT91RM9200_SDRAMC_SRR 0x9c /* Self Refresh Register */ |
57 | #define AT91RM9200_SDRAMC_LPR (AT91_MC + 0xa0) /* Low Power Register */ | 57 | #define AT91RM9200_SDRAMC_LPR 0xa0 /* Low Power Register */ |
58 | #define AT91RM9200_SDRAMC_IER (AT91_MC + 0xa4) /* Interrupt Enable Register */ | 58 | #define AT91RM9200_SDRAMC_IER 0xa4 /* Interrupt Enable Register */ |
59 | #define AT91RM9200_SDRAMC_IDR (AT91_MC + 0xa8) /* Interrupt Disable Register */ | 59 | #define AT91RM9200_SDRAMC_IDR 0xa8 /* Interrupt Disable Register */ |
60 | #define AT91RM9200_SDRAMC_IMR (AT91_MC + 0xac) /* Interrupt Mask Register */ | 60 | #define AT91RM9200_SDRAMC_IMR 0xac /* Interrupt Mask Register */ |
61 | #define AT91RM9200_SDRAMC_ISR (AT91_MC + 0xb0) /* Interrupt Status Register */ | 61 | #define AT91RM9200_SDRAMC_ISR 0xb0 /* Interrupt Status Register */ |
62 | 62 | ||
63 | #endif | 63 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9260.h b/arch/arm/mach-at91/include/mach/at91sam9260.h index 2bde6496cd41..c5b6b3b71060 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9260.h +++ b/arch/arm/mach-at91/include/mach/at91sam9260.h | |||
@@ -80,11 +80,11 @@ | |||
80 | /* | 80 | /* |
81 | * System Peripherals (offset from AT91_BASE_SYS) | 81 | * System Peripherals (offset from AT91_BASE_SYS) |
82 | */ | 82 | */ |
83 | #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) | ||
84 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 83 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
85 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | 84 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) |
86 | 85 | ||
87 | #define AT91SAM9260_BASE_ECC 0xffffe800 | 86 | #define AT91SAM9260_BASE_ECC 0xffffe800 |
87 | #define AT91SAM9260_BASE_SDRAMC 0xffffea00 | ||
88 | #define AT91SAM9260_BASE_SMC 0xffffec00 | 88 | #define AT91SAM9260_BASE_SMC 0xffffec00 |
89 | #define AT91SAM9260_BASE_MATRIX 0xffffee00 | 89 | #define AT91SAM9260_BASE_MATRIX 0xffffee00 |
90 | #define AT91SAM9260_BASE_DBGU AT91_BASE_DBGU0 | 90 | #define AT91SAM9260_BASE_DBGU AT91_BASE_DBGU0 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9261.h b/arch/arm/mach-at91/include/mach/at91sam9261.h index 6dcff277c023..a269cef51aec 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9261.h +++ b/arch/arm/mach-at91/include/mach/at91sam9261.h | |||
@@ -65,12 +65,12 @@ | |||
65 | /* | 65 | /* |
66 | * System Peripherals (offset from AT91_BASE_SYS) | 66 | * System Peripherals (offset from AT91_BASE_SYS) |
67 | */ | 67 | */ |
68 | #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) | ||
69 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 68 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
70 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | 69 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) |
71 | 70 | ||
72 | #define AT91SAM9261_BASE_SMC 0xffffec00 | 71 | #define AT91SAM9261_BASE_SMC 0xffffec00 |
73 | #define AT91SAM9261_BASE_MATRIX 0xffffee00 | 72 | #define AT91SAM9261_BASE_MATRIX 0xffffee00 |
73 | #define AT91SAM9261_BASE_SDRAMC 0xffffea00 | ||
74 | #define AT91SAM9261_BASE_DBGU AT91_BASE_DBGU0 | 74 | #define AT91SAM9261_BASE_DBGU AT91_BASE_DBGU0 |
75 | #define AT91SAM9261_BASE_PIOA 0xfffff400 | 75 | #define AT91SAM9261_BASE_PIOA 0xfffff400 |
76 | #define AT91SAM9261_BASE_PIOB 0xfffff600 | 76 | #define AT91SAM9261_BASE_PIOB 0xfffff600 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9263.h b/arch/arm/mach-at91/include/mach/at91sam9263.h index fe73bfa265e4..bccba0b679c2 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9263.h +++ b/arch/arm/mach-at91/include/mach/at91sam9263.h | |||
@@ -74,14 +74,14 @@ | |||
74 | /* | 74 | /* |
75 | * System Peripherals (offset from AT91_BASE_SYS) | 75 | * System Peripherals (offset from AT91_BASE_SYS) |
76 | */ | 76 | */ |
77 | #define AT91_SDRAMC0 (0xffffe200 - AT91_BASE_SYS) | ||
78 | #define AT91_SDRAMC1 (0xffffe800 - AT91_BASE_SYS) | ||
79 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 77 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
80 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | 78 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) |
81 | 79 | ||
82 | #define AT91SAM9263_BASE_ECC0 0xffffe000 | 80 | #define AT91SAM9263_BASE_ECC0 0xffffe000 |
81 | #define AT91SAM9263_BASE_SDRAMC0 0xffffe200 | ||
83 | #define AT91SAM9263_BASE_SMC0 0xffffe400 | 82 | #define AT91SAM9263_BASE_SMC0 0xffffe400 |
84 | #define AT91SAM9263_BASE_ECC1 0xffffe600 | 83 | #define AT91SAM9263_BASE_ECC1 0xffffe600 |
84 | #define AT91SAM9263_BASE_SDRAMC1 0xffffe800 | ||
85 | #define AT91SAM9263_BASE_SMC1 0xffffea00 | 85 | #define AT91SAM9263_BASE_SMC1 0xffffea00 |
86 | #define AT91SAM9263_BASE_MATRIX 0xffffec00 | 86 | #define AT91SAM9263_BASE_MATRIX 0xffffec00 |
87 | #define AT91SAM9263_BASE_DBGU AT91_BASE_DBGU1 | 87 | #define AT91SAM9263_BASE_DBGU AT91_BASE_DBGU1 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h b/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h index 5d4a9f846584..0210797abf2e 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h +++ b/arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h | |||
@@ -121,10 +121,4 @@ | |||
121 | #define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */ | 121 | #define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */ |
122 | #define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */ | 122 | #define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */ |
123 | 123 | ||
124 | /* Register access macros */ | ||
125 | #define at91_ramc_read(num, reg) \ | ||
126 | at91_sys_read(AT91_DDRSDRC##num + reg) | ||
127 | #define at91_ramc_write(num, reg, value) \ | ||
128 | at91_sys_write(AT91_DDRSDRC##num + reg, value) | ||
129 | |||
130 | #endif | 124 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h b/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h index 100f5a592926..3d085a9a7450 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h +++ b/arch/arm/mach-at91/include/mach/at91sam9_sdramc.h | |||
@@ -82,10 +82,4 @@ | |||
82 | #define AT91_SDRAMC_MD_SDRAM 0 | 82 | #define AT91_SDRAMC_MD_SDRAM 0 |
83 | #define AT91_SDRAMC_MD_LOW_POWER_SDRAM 1 | 83 | #define AT91_SDRAMC_MD_LOW_POWER_SDRAM 1 |
84 | 84 | ||
85 | /* Register access macros */ | ||
86 | #define at91_ramc_read(num, reg) \ | ||
87 | at91_sys_read(AT91_SDRAMC##num + reg) | ||
88 | #define at91_ramc_write(num, reg, value) \ | ||
89 | at91_sys_write(AT91_SDRAMC##num + reg, value) | ||
90 | |||
91 | #endif | 85 | #endif |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h index c8fe455f631b..dfc4570fffe2 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9g45.h +++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h | |||
@@ -86,12 +86,12 @@ | |||
86 | /* | 86 | /* |
87 | * System Peripherals (offset from AT91_BASE_SYS) | 87 | * System Peripherals (offset from AT91_BASE_SYS) |
88 | */ | 88 | */ |
89 | #define AT91_DDRSDRC1 (0xffffe400 - AT91_BASE_SYS) | ||
90 | #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS) | ||
91 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 89 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
92 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | 90 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) |
93 | 91 | ||
94 | #define AT91SAM9G45_BASE_ECC 0xffffe200 | 92 | #define AT91SAM9G45_BASE_ECC 0xffffe200 |
93 | #define AT91SAM9G45_BASE_DDRSDRC1 0xffffe400 | ||
94 | #define AT91SAM9G45_BASE_DDRSDRC0 0xffffe600 | ||
95 | #define AT91SAM9G45_BASE_DMA 0xffffec00 | 95 | #define AT91SAM9G45_BASE_DMA 0xffffec00 |
96 | #define AT91SAM9G45_BASE_SMC 0xffffe800 | 96 | #define AT91SAM9G45_BASE_SMC 0xffffe800 |
97 | #define AT91SAM9G45_BASE_MATRIX 0xffffea00 | 97 | #define AT91SAM9G45_BASE_MATRIX 0xffffea00 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9rl.h b/arch/arm/mach-at91/include/mach/at91sam9rl.h index 51edc25b466f..de960dc1da05 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9rl.h +++ b/arch/arm/mach-at91/include/mach/at91sam9rl.h | |||
@@ -69,13 +69,13 @@ | |||
69 | /* | 69 | /* |
70 | * System Peripherals (offset from AT91_BASE_SYS) | 70 | * System Peripherals (offset from AT91_BASE_SYS) |
71 | */ | 71 | */ |
72 | #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS) | ||
73 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 72 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
74 | #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS) | 73 | #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS) |
75 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) | 74 | #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS) |
76 | 75 | ||
77 | #define AT91SAM9RL_BASE_DMA 0xffffe600 | 76 | #define AT91SAM9RL_BASE_DMA 0xffffe600 |
78 | #define AT91SAM9RL_BASE_ECC 0xffffe800 | 77 | #define AT91SAM9RL_BASE_ECC 0xffffe800 |
78 | #define AT91SAM9RL_BASE_SDRAMC 0xffffea00 | ||
79 | #define AT91SAM9RL_BASE_SMC 0xffffec00 | 79 | #define AT91SAM9RL_BASE_SMC 0xffffec00 |
80 | #define AT91SAM9RL_BASE_MATRIX 0xffffee00 | 80 | #define AT91SAM9RL_BASE_MATRIX 0xffffee00 |
81 | #define AT91SAM9RL_BASE_DBGU AT91_BASE_DBGU0 | 81 | #define AT91SAM9RL_BASE_DBGU AT91_BASE_DBGU0 |
diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5.h b/arch/arm/mach-at91/include/mach/at91sam9x5.h index 8476871a2f9f..96f25f556abf 100644 --- a/arch/arm/mach-at91/include/mach/at91sam9x5.h +++ b/arch/arm/mach-at91/include/mach/at91sam9x5.h | |||
@@ -57,7 +57,7 @@ | |||
57 | /* | 57 | /* |
58 | * System Peripherals (offset from AT91_BASE_SYS) | 58 | * System Peripherals (offset from AT91_BASE_SYS) |
59 | */ | 59 | */ |
60 | #define AT91_DDRSDRC0 (0xffffe800 - AT91_BASE_SYS) | 60 | #define AT91SAM9X5_BASE_DDRSDRC0 0xffffe800 |
61 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 61 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
62 | 62 | ||
63 | /* | 63 | /* |
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c index 8046a50a0c2a..46dbb7e1339c 100644 --- a/arch/arm/mach-at91/pm.c +++ b/arch/arm/mach-at91/pm.c | |||
@@ -196,19 +196,18 @@ extern u32 at91_slow_clock_sz; | |||
196 | #endif | 196 | #endif |
197 | 197 | ||
198 | static void __iomem *at91_pmc_base = (void __iomem*)(AT91_VA_BASE_SYS + AT91_PMC); | 198 | static void __iomem *at91_pmc_base = (void __iomem*)(AT91_VA_BASE_SYS + AT91_PMC); |
199 | #ifdef CONFIG_ARCH_AT91RM9200 | 199 | void __iomem *at91_ramc_base[2]; |
200 | static void __iomem *at91_ramc0_base = (void __iomem*)AT91_VA_BASE_SYS; | ||
201 | #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||
202 | static void __iomem *at91_ramc0_base = (void __iomem*)(AT91_VA_BASE_SYS + AT91_DDRSDRC0); | ||
203 | #else | ||
204 | static void __iomem *at91_ramc0_base = (void __iomem*)(AT91_VA_BASE_SYS + AT91_SDRAMC0); | ||
205 | #endif | ||
206 | 200 | ||
207 | #if defined(CONFIG_ARCH_AT91SAM9G45) | 201 | void __init at91_ioremap_ramc(int id, u32 addr, u32 size) |
208 | static void __iomem *at91_ramc1_base = (void __iomem*)(AT91_VA_BASE_SYS + AT91_DDRSDRC1); | 202 | { |
209 | #else | 203 | if (id < 0 || id > 1) { |
210 | static void __iomem *at91_ramc1_base = NULL; | 204 | pr_emerg("Wrong RAM controller id (%d), cannot continue\n", id); |
211 | #endif | 205 | BUG(); |
206 | } | ||
207 | at91_ramc_base[id] = ioremap(addr, size); | ||
208 | if (!at91_ramc_base[id]) | ||
209 | panic("Impossible to ioremap ramc.%d 0x%x\n", id, addr); | ||
210 | } | ||
212 | 211 | ||
213 | static int at91_pm_enter(suspend_state_t state) | 212 | static int at91_pm_enter(suspend_state_t state) |
214 | { | 213 | { |
@@ -246,7 +245,7 @@ static int at91_pm_enter(suspend_state_t state) | |||
246 | /* copy slow_clock handler to SRAM, and call it */ | 245 | /* copy slow_clock handler to SRAM, and call it */ |
247 | memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz); | 246 | memcpy(slow_clock, at91_slow_clock, at91_slow_clock_sz); |
248 | #endif | 247 | #endif |
249 | slow_clock(at91_pmc_base, at91_ramc0_base, at91_ramc1_base); | 248 | slow_clock(at91_pmc_base, at91_ramc_base[0], at91_ramc_base[1]); |
250 | break; | 249 | break; |
251 | } else { | 250 | } else { |
252 | pr_info("AT91: PM - no slow clock mode enabled ...\n"); | 251 | pr_info("AT91: PM - no slow clock mode enabled ...\n"); |
@@ -315,7 +314,7 @@ static int __init at91_pm_init(void) | |||
315 | 314 | ||
316 | #ifdef CONFIG_ARCH_AT91RM9200 | 315 | #ifdef CONFIG_ARCH_AT91RM9200 |
317 | /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */ | 316 | /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */ |
318 | at91_sys_write(AT91RM9200_SDRAMC_LPR, 0); | 317 | at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0); |
319 | #endif | 318 | #endif |
320 | 319 | ||
321 | suspend_set_ops(&at91_pm_ops); | 320 | suspend_set_ops(&at91_pm_ops); |
diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h index 41cdd2beb1ec..89f56f3a802e 100644 --- a/arch/arm/mach-at91/pm.h +++ b/arch/arm/mach-at91/pm.h | |||
@@ -11,8 +11,8 @@ | |||
11 | #ifndef __ARCH_ARM_MACH_AT91_PM | 11 | #ifndef __ARCH_ARM_MACH_AT91_PM |
12 | #define __ARCH_ARM_MACH_AT91_PM | 12 | #define __ARCH_ARM_MACH_AT91_PM |
13 | 13 | ||
14 | #include <mach/at91_ramc.h> | ||
14 | #ifdef CONFIG_ARCH_AT91RM9200 | 15 | #ifdef CONFIG_ARCH_AT91RM9200 |
15 | #include <mach/at91rm9200_mc.h> | ||
16 | #include <mach/at91rm9200_sdramc.h> | 16 | #include <mach/at91rm9200_sdramc.h> |
17 | 17 | ||
18 | /* | 18 | /* |
@@ -27,7 +27,7 @@ | |||
27 | 27 | ||
28 | static inline void at91rm9200_standby(void) | 28 | static inline void at91rm9200_standby(void) |
29 | { | 29 | { |
30 | u32 lpr = at91_sys_read(AT91RM9200_SDRAMC_LPR); | 30 | u32 lpr = at91_ramc_read(0, AT91RM9200_SDRAMC_LPR); |
31 | 31 | ||
32 | asm volatile( | 32 | asm volatile( |
33 | "b 1f\n\t" | 33 | "b 1f\n\t" |
@@ -46,7 +46,6 @@ static inline void at91rm9200_standby(void) | |||
46 | #define at91_standby at91rm9200_standby | 46 | #define at91_standby at91rm9200_standby |
47 | 47 | ||
48 | #elif defined(CONFIG_ARCH_AT91SAM9G45) | 48 | #elif defined(CONFIG_ARCH_AT91SAM9G45) |
49 | #include <mach/at91sam9_ddrsdr.h> | ||
50 | 49 | ||
51 | /* We manage both DDRAM/SDRAM controllers, we need more than one value to | 50 | /* We manage both DDRAM/SDRAM controllers, we need more than one value to |
52 | * remember. | 51 | * remember. |
@@ -79,7 +78,6 @@ static inline void at91sam9g45_standby(void) | |||
79 | #define at91_standby at91sam9g45_standby | 78 | #define at91_standby at91sam9g45_standby |
80 | 79 | ||
81 | #else | 80 | #else |
82 | #include <mach/at91sam9_sdramc.h> | ||
83 | 81 | ||
84 | #ifdef CONFIG_ARCH_AT91SAM9263 | 82 | #ifdef CONFIG_ARCH_AT91SAM9263 |
85 | /* | 83 | /* |
diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S index aee0b2c9ff45..a2835a81bc84 100644 --- a/arch/arm/mach-at91/pm_slowclock.S +++ b/arch/arm/mach-at91/pm_slowclock.S | |||
@@ -15,15 +15,7 @@ | |||
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
17 | #include <mach/at91_pmc.h> | 17 | #include <mach/at91_pmc.h> |
18 | 18 | #include <mach/at91_ramc.h> | |
19 | #if defined(CONFIG_ARCH_AT91RM9200) | ||
20 | #include <mach/at91rm9200_mc.h> | ||
21 | #include <mach/at91rm9200_sdramc.h> | ||
22 | #elif defined(CONFIG_ARCH_AT91SAM9G45) | ||
23 | #include <mach/at91sam9_ddrsdr.h> | ||
24 | #else | ||
25 | #include <mach/at91sam9_sdramc.h> | ||
26 | #endif | ||
27 | 19 | ||
28 | 20 | ||
29 | #ifdef CONFIG_ARCH_AT91SAM9263 | 21 | #ifdef CONFIG_ARCH_AT91SAM9263 |