diff options
author | wanzongshun <mcuos.com@gmail.com> | 2009-02-12 02:57:21 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-02-12 11:10:24 +0000 |
commit | a12370f12fdc6a35463842e41eaf04299167eb12 (patch) | |
tree | 005fd1266a9c79ea41f0b688ff15ae713e11e083 | |
parent | 9ee8c9f0124dd70779c400459d57bdbbed60fcfe (diff) | |
download | linux-a12370f12fdc6a35463842e41eaf04299167eb12.tar.bz2 |
[ARM] 5393/1: Add W90P910 EVB NOR flash driver
Add W90P910 Evaluate Board NOR flash driver support,
The EV Board default support W19B320ABT7H of Winbond inc.
Signed-off-by: Wan ZongShun <mcuos.com@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mach-w90x900/mach-w90p910evb.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/arch/arm/mach-w90x900/mach-w90p910evb.c b/arch/arm/mach-w90x900/mach-w90p910evb.c index 542527019b65..726ff6798a56 100644 --- a/arch/arm/mach-w90x900/mach-w90p910evb.c +++ b/arch/arm/mach-w90x900/mach-w90p910evb.c @@ -22,6 +22,7 @@ #include <linux/timer.h> #include <linux/init.h> #include <linux/platform_device.h> +#include <linux/mtd/physmap.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> @@ -32,6 +33,52 @@ #include <mach/map.h> #include "cpu.h" +/*w90p910 evb norflash driver data */ + +#define W90P910_FLASH_BASE 0xA0000000 +#define W90P910_FLASH_SIZE 0x400000 + +static struct mtd_partition w90p910_flash_partitions[] = { + { + .name = "NOR Partition 1 for kernel (960K)", + .size = 0xF0000, + .offset = 0x10000, + }, + { + .name = "NOR Partition 2 for image (1M)", + .size = 0x100000, + .offset = 0x100000, + }, + { + .name = "NOR Partition 3 for user (2M)", + .size = 0x200000, + .offset = 0x00200000, + } +}; + +static struct physmap_flash_data w90p910_flash_data = { + .width = 2, + .parts = w90p910_flash_partitions, + .nr_parts = ARRAY_SIZE(w90p910_flash_partitions), +}; + +static struct resource w90p910_flash_resources[] = { + { + .start = W90P910_FLASH_BASE, + .end = W90P910_FLASH_BASE + W90P910_FLASH_SIZE - 1, + .flags = IORESOURCE_MEM, + } +}; + +static struct platform_device w90p910_flash_device = { + .name = "physmap-flash", + .id = 0, + .dev = { + .platform_data = &w90p910_flash_data, + }, + .resource = w90p910_flash_resources, + .num_resources = ARRAY_SIZE(w90p910_flash_resources), +}; static struct map_desc w90p910_iodesc[] __initdata = { }; @@ -40,6 +87,7 @@ static struct map_desc w90p910_iodesc[] __initdata = { static struct platform_device *w90p910evb_dev[] __initdata = { &w90p910_serial_device, + &w90p910_flash_device, }; static void __init w90p910evb_map_io(void) |