diff options
author | Andrew Victor <linux@maxim.org.za> | 2008-04-02 16:44:44 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-04-04 04:52:20 -0400 |
commit | d7a2415f7a48ce4fc16cc769f96d0df818648837 (patch) | |
tree | bda7fbcc179840009f365a7416fe83f53a739110 | |
parent | 3ef2fb426775fc2ae19b70c318dbdf4a0aeeced7 (diff) |
[ARM] 4904/1: [AT91] Pass ECC controller to NAND driver
On AT91 processors that include an ECC controller, pass its base
address to the NAND driver via platform_device resources.
Signed-off-by: Andrew Victor <linux@maxim.org.za>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mach-at91/at91cap9_devices.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9260_devices.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9rl_devices.c | 7 | ||||
-rw-r--r-- | include/asm-arm/arch-at91/at91_ecc.h | 10 |
5 files changed, 29 insertions, 9 deletions
diff --git a/arch/arm/mach-at91/at91cap9_devices.c b/arch/arm/mach-at91/at91cap9_devices.c index 0c341a4624ff..10f15f3a56ca 100644 --- a/arch/arm/mach-at91/at91cap9_devices.c +++ b/arch/arm/mach-at91/at91cap9_devices.c | |||
@@ -283,10 +283,15 @@ static struct at91_nand_data nand_data; | |||
283 | #define NAND_BASE AT91_CHIPSELECT_3 | 283 | #define NAND_BASE AT91_CHIPSELECT_3 |
284 | 284 | ||
285 | static struct resource nand_resources[] = { | 285 | static struct resource nand_resources[] = { |
286 | { | 286 | [0] = { |
287 | .start = NAND_BASE, | 287 | .start = NAND_BASE, |
288 | .end = NAND_BASE + SZ_256M - 1, | 288 | .end = NAND_BASE + SZ_256M - 1, |
289 | .flags = IORESOURCE_MEM, | 289 | .flags = IORESOURCE_MEM, |
290 | }, | ||
291 | [1] = { | ||
292 | .start = AT91_BASE_SYS + AT91_ECC, | ||
293 | .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, | ||
294 | .flags = IORESOURCE_MEM, | ||
290 | } | 295 | } |
291 | }; | 296 | }; |
292 | 297 | ||
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c index b758e66c60f8..d613761dc2f8 100644 --- a/arch/arm/mach-at91/at91sam9260_devices.c +++ b/arch/arm/mach-at91/at91sam9260_devices.c | |||
@@ -288,10 +288,15 @@ static struct at91_nand_data nand_data; | |||
288 | #define NAND_BASE AT91_CHIPSELECT_3 | 288 | #define NAND_BASE AT91_CHIPSELECT_3 |
289 | 289 | ||
290 | static struct resource nand_resources[] = { | 290 | static struct resource nand_resources[] = { |
291 | { | 291 | [0] = { |
292 | .start = NAND_BASE, | 292 | .start = NAND_BASE, |
293 | .end = NAND_BASE + SZ_256M - 1, | 293 | .end = NAND_BASE + SZ_256M - 1, |
294 | .flags = IORESOURCE_MEM, | 294 | .flags = IORESOURCE_MEM, |
295 | }, | ||
296 | [1] = { | ||
297 | .start = AT91_BASE_SYS + AT91_ECC, | ||
298 | .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, | ||
299 | .flags = IORESOURCE_MEM, | ||
295 | } | 300 | } |
296 | }; | 301 | }; |
297 | 302 | ||
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index fc14af8617f0..64aab9c9b97e 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
@@ -358,10 +358,15 @@ static struct at91_nand_data nand_data; | |||
358 | #define NAND_BASE AT91_CHIPSELECT_3 | 358 | #define NAND_BASE AT91_CHIPSELECT_3 |
359 | 359 | ||
360 | static struct resource nand_resources[] = { | 360 | static struct resource nand_resources[] = { |
361 | { | 361 | [0] = { |
362 | .start = NAND_BASE, | 362 | .start = NAND_BASE, |
363 | .end = NAND_BASE + SZ_256M - 1, | 363 | .end = NAND_BASE + SZ_256M - 1, |
364 | .flags = IORESOURCE_MEM, | 364 | .flags = IORESOURCE_MEM, |
365 | }, | ||
366 | [1] = { | ||
367 | .start = AT91_BASE_SYS + AT91_ECC0, | ||
368 | .end = AT91_BASE_SYS + AT91_ECC0 + SZ_512 - 1, | ||
369 | .flags = IORESOURCE_MEM, | ||
365 | } | 370 | } |
366 | }; | 371 | }; |
367 | 372 | ||
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c index fb74b33bba68..2a0abd25e773 100644 --- a/arch/arm/mach-at91/at91sam9rl_devices.c +++ b/arch/arm/mach-at91/at91sam9rl_devices.c | |||
@@ -105,10 +105,15 @@ static struct at91_nand_data nand_data; | |||
105 | #define NAND_BASE AT91_CHIPSELECT_3 | 105 | #define NAND_BASE AT91_CHIPSELECT_3 |
106 | 106 | ||
107 | static struct resource nand_resources[] = { | 107 | static struct resource nand_resources[] = { |
108 | { | 108 | [0] = { |
109 | .start = NAND_BASE, | 109 | .start = NAND_BASE, |
110 | .end = NAND_BASE + SZ_256M - 1, | 110 | .end = NAND_BASE + SZ_256M - 1, |
111 | .flags = IORESOURCE_MEM, | 111 | .flags = IORESOURCE_MEM, |
112 | }, | ||
113 | [1] = { | ||
114 | .start = AT91_BASE_SYS + AT91_ECC, | ||
115 | .end = AT91_BASE_SYS + AT91_ECC + SZ_512 - 1, | ||
116 | .flags = IORESOURCE_MEM, | ||
112 | } | 117 | } |
113 | }; | 118 | }; |
114 | 119 | ||
diff --git a/include/asm-arm/arch-at91/at91_ecc.h b/include/asm-arm/arch-at91/at91_ecc.h index ff93df516d6d..1e5a8caca2d1 100644 --- a/include/asm-arm/arch-at91/at91_ecc.h +++ b/include/asm-arm/arch-at91/at91_ecc.h | |||
@@ -13,26 +13,26 @@ | |||
13 | #ifndef AT91_ECC_H | 13 | #ifndef AT91_ECC_H |
14 | #define AT91_ECC_H | 14 | #define AT91_ECC_H |
15 | 15 | ||
16 | #define AT91_ECC_CR (AT91_ECC + 0x00) /* Control register */ | 16 | #define AT91_ECC_CR 0x00 /* Control register */ |
17 | #define AT91_ECC_RST (1 << 0) /* Reset parity */ | 17 | #define AT91_ECC_RST (1 << 0) /* Reset parity */ |
18 | 18 | ||
19 | #define AT91_ECC_MR (AT91_ECC + 0x04) /* Mode register */ | 19 | #define AT91_ECC_MR 0x04 /* Mode register */ |
20 | #define AT91_ECC_PAGESIZE (3 << 0) /* Page Size */ | 20 | #define AT91_ECC_PAGESIZE (3 << 0) /* Page Size */ |
21 | #define AT91_ECC_PAGESIZE_528 (0) | 21 | #define AT91_ECC_PAGESIZE_528 (0) |
22 | #define AT91_ECC_PAGESIZE_1056 (1) | 22 | #define AT91_ECC_PAGESIZE_1056 (1) |
23 | #define AT91_ECC_PAGESIZE_2112 (2) | 23 | #define AT91_ECC_PAGESIZE_2112 (2) |
24 | #define AT91_ECC_PAGESIZE_4224 (3) | 24 | #define AT91_ECC_PAGESIZE_4224 (3) |
25 | 25 | ||
26 | #define AT91_ECC_SR (AT91_ECC + 0x08) /* Status register */ | 26 | #define AT91_ECC_SR 0x08 /* Status register */ |
27 | #define AT91_ECC_RECERR (1 << 0) /* Recoverable Error */ | 27 | #define AT91_ECC_RECERR (1 << 0) /* Recoverable Error */ |
28 | #define AT91_ECC_ECCERR (1 << 1) /* ECC Single Bit Error */ | 28 | #define AT91_ECC_ECCERR (1 << 1) /* ECC Single Bit Error */ |
29 | #define AT91_ECC_MULERR (1 << 2) /* Multiple Errors */ | 29 | #define AT91_ECC_MULERR (1 << 2) /* Multiple Errors */ |
30 | 30 | ||
31 | #define AT91_ECC_PR (AT91_ECC + 0x0c) /* Parity register */ | 31 | #define AT91_ECC_PR 0x0c /* Parity register */ |
32 | #define AT91_ECC_BITADDR (0xf << 0) /* Bit Error Address */ | 32 | #define AT91_ECC_BITADDR (0xf << 0) /* Bit Error Address */ |
33 | #define AT91_ECC_WORDADDR (0xfff << 4) /* Word Error Address */ | 33 | #define AT91_ECC_WORDADDR (0xfff << 4) /* Word Error Address */ |
34 | 34 | ||
35 | #define AT91_ECC_NPR (AT91_ECC + 0x10) /* NParity register */ | 35 | #define AT91_ECC_NPR 0x10 /* NParity register */ |
36 | #define AT91_ECC_NPARITY (0xffff << 0) /* NParity */ | 36 | #define AT91_ECC_NPARITY (0xffff << 0) /* NParity */ |
37 | 37 | ||
38 | #endif | 38 | #endif |