diff options
author | Ben Dooks <ben-linux@fluff.org> | 2006-04-02 11:16:15 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-04-02 11:16:15 -0400 |
commit | 272eb575eb3d5348fe0f0a97a22b5e603bd51d11 (patch) | |
tree | 5c2b7667b5195c933c63d1c90677ddb90675c555 /arch/arm/mach-s3c2410 | |
parent | 661e6acf7b882e5a886845dca5d1559e987464b4 (diff) |
[ARM] 3452/1: [S3C2410] RX3715 - add nand information
Patch from Ben Dooks
NAND definitions for the HP iPAQ RX3715's
internal NAND flash
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-s3c2410')
-rw-r--r-- | arch/arm/mach-s3c2410/mach-rx3715.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c2410/mach-rx3715.c b/arch/arm/mach-s3c2410/mach-rx3715.c index 0260ed5ab946..306afc1d7cd3 100644 --- a/arch/arm/mach-s3c2410/mach-rx3715.c +++ b/arch/arm/mach-s3c2410/mach-rx3715.c | |||
@@ -32,6 +32,11 @@ | |||
32 | #include <linux/serial_core.h> | 32 | #include <linux/serial_core.h> |
33 | #include <linux/serial.h> | 33 | #include <linux/serial.h> |
34 | 34 | ||
35 | #include <linux/mtd/mtd.h> | ||
36 | #include <linux/mtd/nand.h> | ||
37 | #include <linux/mtd/nand_ecc.h> | ||
38 | #include <linux/mtd/partitions.h> | ||
39 | |||
35 | #include <asm/mach/arch.h> | 40 | #include <asm/mach/arch.h> |
36 | #include <asm/mach/map.h> | 41 | #include <asm/mach/map.h> |
37 | #include <asm/mach/irq.h> | 42 | #include <asm/mach/irq.h> |
@@ -46,6 +51,7 @@ | |||
46 | #include <asm/arch/regs-gpio.h> | 51 | #include <asm/arch/regs-gpio.h> |
47 | #include <asm/arch/regs-lcd.h> | 52 | #include <asm/arch/regs-lcd.h> |
48 | 53 | ||
54 | #include <asm/arch/nand.h> | ||
49 | #include <asm/arch/fb.h> | 55 | #include <asm/arch/fb.h> |
50 | 56 | ||
51 | #include "clock.h" | 57 | #include "clock.h" |
@@ -170,12 +176,39 @@ static struct s3c2410fb_mach_info rx3715_lcdcfg __initdata = { | |||
170 | }, | 176 | }, |
171 | }; | 177 | }; |
172 | 178 | ||
179 | static struct mtd_partition rx3715_nand_part[] = { | ||
180 | [0] = { | ||
181 | .name = "Whole Flash", | ||
182 | .offset = 0, | ||
183 | .size = MTDPART_SIZ_FULL, | ||
184 | .mask_flags = MTD_WRITEABLE, | ||
185 | } | ||
186 | }; | ||
187 | |||
188 | static struct s3c2410_nand_set rx3715_nand_sets[] = { | ||
189 | [0] = { | ||
190 | .name = "Internal", | ||
191 | .nr_chips = 1, | ||
192 | .nr_partitions = ARRAY_SIZE(rx3715_nand_part), | ||
193 | .partitions = rx3715_nand_part, | ||
194 | }, | ||
195 | }; | ||
196 | |||
197 | static struct s3c2410_platform_nand rx3715_nand_info = { | ||
198 | .tacls = 25, | ||
199 | .twrph0 = 50, | ||
200 | .twrph1 = 15, | ||
201 | .nr_sets = ARRAY_SIZE(rx3715_nand_sets), | ||
202 | .sets = rx3715_nand_sets, | ||
203 | }; | ||
204 | |||
173 | static struct platform_device *rx3715_devices[] __initdata = { | 205 | static struct platform_device *rx3715_devices[] __initdata = { |
174 | &s3c_device_usb, | 206 | &s3c_device_usb, |
175 | &s3c_device_lcd, | 207 | &s3c_device_lcd, |
176 | &s3c_device_wdt, | 208 | &s3c_device_wdt, |
177 | &s3c_device_i2c, | 209 | &s3c_device_i2c, |
178 | &s3c_device_iis, | 210 | &s3c_device_iis, |
211 | &s3c_device_nand, | ||
179 | }; | 212 | }; |
180 | 213 | ||
181 | static struct s3c24xx_board rx3715_board __initdata = { | 214 | static struct s3c24xx_board rx3715_board __initdata = { |
@@ -185,6 +218,8 @@ static struct s3c24xx_board rx3715_board __initdata = { | |||
185 | 218 | ||
186 | static void __init rx3715_map_io(void) | 219 | static void __init rx3715_map_io(void) |
187 | { | 220 | { |
221 | s3c_device_nand.dev.platform_data = &rx3715_nand_info; | ||
222 | |||
188 | s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc)); | 223 | s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc)); |
189 | s3c24xx_init_clocks(16934000); | 224 | s3c24xx_init_clocks(16934000); |
190 | s3c24xx_init_uarts(rx3715_uartcfgs, ARRAY_SIZE(rx3715_uartcfgs)); | 225 | s3c24xx_init_uarts(rx3715_uartcfgs, ARRAY_SIZE(rx3715_uartcfgs)); |