Message ID | 1250199385-11811-1-git-send-email-sudhakar.raj@ti.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Sudhakar Rajashekhara <sudhakar.raj@ti.com> writes: > This patch adds platform data for the 8MB NOR flash > found on da850/omap-l138 EVM. Both NOR and NAND can > co-exist on da850/omap-l138 as they are using different > chip selects. > > Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com> > --- > Since the previous version: > 1. Removed #ifdef macro guards from the board file. > 2. Defined macros for CS2 offset and the value being > written to this offset. > 3. Value at the CS2 offset of AEMIOF is being read > before writing to it. > 4. Corrected the argument to ioremap() function. Thanks, pushing today. Kevin > This patch is dependent on the following patches which > I have submitted earlier: > [PATCH] davinci: Macro to convert GPIO signal to GPIO pin number > [PATCH v3] davinci: Add platform support for da850/omap-l138 GLCD > [PATCH v3] davinci: Add MMC/SD support for da850/omap-l138 > [PATCH v3] davinci: Add NAND flash support for DA850/OMAP-L138 > > arch/arm/mach-davinci/board-da850-evm.c | 59 ++++++++++++++++++++++++++++ > arch/arm/mach-davinci/da850.c | 50 +++++++++++++++++++++++ > arch/arm/mach-davinci/include/mach/da8xx.h | 2 + > arch/arm/mach-davinci/include/mach/mux.h | 34 ++++++++++++++++ > 4 files changed, 145 insertions(+), 0 deletions(-) > > diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c > index 62d37cb..70a2f48 100644 > --- a/arch/arm/mach-davinci/board-da850-evm.c > +++ b/arch/arm/mach-davinci/board-da850-evm.c > @@ -22,6 +22,7 @@ > #include <linux/mtd/mtd.h> > #include <linux/mtd/nand.h> > #include <linux/mtd/partitions.h> > +#include <linux/mtd/physmap.h> > > #include <asm/mach-types.h> > #include <asm/mach/arch.h> > @@ -41,6 +42,39 @@ > #define DA850_MMCSD_CD_PIN GPIO_TO_PIN(4, 0) > #define DA850_MMCSD_WP_PIN GPIO_TO_PIN(4, 1) > > +static struct mtd_partition da850_evm_norflash_partition[] = { > + { > + .name = "NOR filesystem", > + .offset = 0, > + .size = MTDPART_SIZ_FULL, > + .mask_flags = 0, > + }, > +}; > + > +static struct physmap_flash_data da850_evm_norflash_data = { > + .width = 2, > + .parts = da850_evm_norflash_partition, > + .nr_parts = ARRAY_SIZE(da850_evm_norflash_partition), > +}; > + > +static struct resource da850_evm_norflash_resource[] = { > + { > + .start = DA8XX_AEMIF_CS2_BASE, > + .end = DA8XX_AEMIF_CS2_BASE + SZ_32M - 1, > + .flags = IORESOURCE_MEM, > + }, > +}; > + > +static struct platform_device da850_evm_norflash_device = { > + .name = "physmap-flash", > + .id = 0, > + .dev = { > + .platform_data = &da850_evm_norflash_data, > + }, > + .num_resources = 1, > + .resource = da850_evm_norflash_resource, > +}; > + > /* DA850/OMAP-L138 EVM includes a 512 MByte large-page NAND flash > * (128K blocks). It may be used instead of the (default) SPI flash > * to boot, using TI's tools to install the secondary boot loader > @@ -120,6 +154,7 @@ static struct davinci_uart_config da850_evm_uart_config __initdata = { > > static struct platform_device *da850_evm_devices[] __initdata = { > &da850_evm_nandflash_device, > + &da850_evm_norflash_device, > }; > > /* davinci da850 evm audio machine driver */ > @@ -192,6 +227,23 @@ static int da850_lcd_hw_init(void) > return 0; > } > > +#define DA8XX_AEMIF_CE2CFG_OFFSET 0x10 > +#define DA8XX_AEMIF_ASIZE_16BIT 0x1 > + > +static void __init da850_evm_init_nor(void) > +{ > + void __iomem *aemif_addr; > + > + aemif_addr = ioremap(DA8XX_AEMIF_CTL_BASE, SZ_32K); > + > + /* Configure data bus width of CS2 to 16 bit */ > + writel(readl(aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET) | > + DA8XX_AEMIF_ASIZE_16BIT, > + aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET); > + > + iounmap(aemif_addr); > +} > + > static __init void da850_evm_init(void) > { > struct davinci_soc_info *soc_info = &davinci_soc_info; > @@ -202,6 +254,13 @@ static __init void da850_evm_init(void) > pr_warning("da850_evm_init: nand mux setup failed: %d\n", > ret); > > + ret = da8xx_pinmux_setup(da850_nor_pins); > + if (ret) > + pr_warning("da850_evm_init: nor mux setup failed: %d\n", > + ret); > + > + da850_evm_init_nor(); > + > platform_add_devices(da850_evm_devices, > ARRAY_SIZE(da850_evm_devices)); > > diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c > index db42094..192d719 100644 > --- a/arch/arm/mach-davinci/da850.c > +++ b/arch/arm/mach-davinci/da850.c > @@ -471,6 +471,40 @@ static const struct mux_config da850_pins[] = { > MUX_CFG(DA850, NEMA_CS_4, 7, 8, 15, 1, false) > MUX_CFG(DA850, NEMA_WE, 7, 16, 15, 1, false) > MUX_CFG(DA850, NEMA_OE, 7, 20, 15, 1, false) > + MUX_CFG(DA850, EMA_A_0, 12, 28, 15, 1, false) > + MUX_CFG(DA850, EMA_A_3, 12, 16, 15, 1, false) > + MUX_CFG(DA850, EMA_A_4, 12, 12, 15, 1, false) > + MUX_CFG(DA850, EMA_A_5, 12, 8, 15, 1, false) > + MUX_CFG(DA850, EMA_A_6, 12, 4, 15, 1, false) > + MUX_CFG(DA850, EMA_A_7, 12, 0, 15, 1, false) > + MUX_CFG(DA850, EMA_A_8, 11, 28, 15, 1, false) > + MUX_CFG(DA850, EMA_A_9, 11, 24, 15, 1, false) > + MUX_CFG(DA850, EMA_A_10, 11, 20, 15, 1, false) > + MUX_CFG(DA850, EMA_A_11, 11, 16, 15, 1, false) > + MUX_CFG(DA850, EMA_A_12, 11, 12, 15, 1, false) > + MUX_CFG(DA850, EMA_A_13, 11, 8, 15, 1, false) > + MUX_CFG(DA850, EMA_A_14, 11, 4, 15, 1, false) > + MUX_CFG(DA850, EMA_A_15, 11, 0, 15, 1, false) > + MUX_CFG(DA850, EMA_A_16, 10, 28, 15, 1, false) > + MUX_CFG(DA850, EMA_A_17, 10, 24, 15, 1, false) > + MUX_CFG(DA850, EMA_A_18, 10, 20, 15, 1, false) > + MUX_CFG(DA850, EMA_A_19, 10, 16, 15, 1, false) > + MUX_CFG(DA850, EMA_A_20, 10, 12, 15, 1, false) > + MUX_CFG(DA850, EMA_A_21, 10, 8, 15, 1, false) > + MUX_CFG(DA850, EMA_A_22, 10, 4, 15, 1, false) > + MUX_CFG(DA850, EMA_A_23, 10, 0, 15, 1, false) > + MUX_CFG(DA850, EMA_D_8, 8, 28, 15, 1, false) > + MUX_CFG(DA850, EMA_D_9, 8, 24, 15, 1, false) > + MUX_CFG(DA850, EMA_D_10, 8, 20, 15, 1, false) > + MUX_CFG(DA850, EMA_D_11, 8, 16, 15, 1, false) > + MUX_CFG(DA850, EMA_D_12, 8, 12, 15, 1, false) > + MUX_CFG(DA850, EMA_D_13, 8, 8, 15, 1, false) > + MUX_CFG(DA850, EMA_D_14, 8, 4, 15, 1, false) > + MUX_CFG(DA850, EMA_D_15, 8, 0, 15, 1, false) > + MUX_CFG(DA850, EMA_BA_1, 5, 24, 15, 1, false) > + MUX_CFG(DA850, EMA_CLK, 6, 0, 15, 1, false) > + MUX_CFG(DA850, EMA_WAIT_1, 6, 24, 15, 1, false) > + MUX_CFG(DA850, NEMA_CS_2, 7, 0, 15, 1, false) > /* GPIO function */ > MUX_CFG(DA850, GPIO2_15, 5, 0, 15, 8, false) > MUX_CFG(DA850, GPIO8_10, 18, 28, 15, 8, false) > @@ -545,6 +579,22 @@ const short da850_nand_pins[] __initdata = { > -1 > }; > > +const short da850_nor_pins[] __initdata = { > + DA850_EMA_BA_1, DA850_EMA_CLK, DA850_EMA_WAIT_1, DA850_NEMA_CS_2, > + DA850_NEMA_WE, DA850_NEMA_OE, DA850_EMA_D_0, DA850_EMA_D_1, > + DA850_EMA_D_2, DA850_EMA_D_3, DA850_EMA_D_4, DA850_EMA_D_5, > + DA850_EMA_D_6, DA850_EMA_D_7, DA850_EMA_D_8, DA850_EMA_D_9, > + DA850_EMA_D_10, DA850_EMA_D_11, DA850_EMA_D_12, DA850_EMA_D_13, > + DA850_EMA_D_14, DA850_EMA_D_15, DA850_EMA_A_0, DA850_EMA_A_1, > + DA850_EMA_A_2, DA850_EMA_A_3, DA850_EMA_A_4, DA850_EMA_A_5, > + DA850_EMA_A_6, DA850_EMA_A_7, DA850_EMA_A_8, DA850_EMA_A_9, > + DA850_EMA_A_10, DA850_EMA_A_11, DA850_EMA_A_12, DA850_EMA_A_13, > + DA850_EMA_A_14, DA850_EMA_A_15, DA850_EMA_A_16, DA850_EMA_A_17, > + DA850_EMA_A_18, DA850_EMA_A_19, DA850_EMA_A_20, DA850_EMA_A_21, > + DA850_EMA_A_22, DA850_EMA_A_23, > + -1 > +}; > + > /* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */ > static u8 da850_default_priorities[DA850_N_CP_INTC_IRQ] = { > [IRQ_DA8XX_COMMTX] = 7, > diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h > index 77e5d23..d4095d0 100644 > --- a/arch/arm/mach-davinci/include/mach/da8xx.h > +++ b/arch/arm/mach-davinci/include/mach/da8xx.h > @@ -40,6 +40,7 @@ > #define DA8XX_PSC1_BASE 0x01e27000 > #define DA8XX_LCD_CNTRL_BASE 0x01e13000 > #define DA8XX_MMCSD0_BASE 0x01c40000 > +#define DA8XX_AEMIF_CS2_BASE 0x60000000 > #define DA8XX_AEMIF_CS3_BASE 0x62000000 > #define DA8XX_AEMIF_CTL_BASE 0x68000000 > > @@ -113,6 +114,7 @@ extern const short da850_mcasp_pins[]; > extern const short da850_lcdcntl_pins[]; > extern const short da850_mmcsd0_pins[]; > extern const short da850_nand_pins[]; > +extern const short da850_nor_pins[]; > > int da8xx_pinmux_setup(const short pins[]); > > diff --git a/arch/arm/mach-davinci/include/mach/mux.h b/arch/arm/mach-davinci/include/mach/mux.h > index ee6f29d..88cd22a 100644 > --- a/arch/arm/mach-davinci/include/mach/mux.h > +++ b/arch/arm/mach-davinci/include/mach/mux.h > @@ -821,6 +821,40 @@ enum davinci_da850_index { > DA850_NEMA_CS_4, > DA850_NEMA_WE, > DA850_NEMA_OE, > + DA850_EMA_D_15, > + DA850_EMA_D_14, > + DA850_EMA_D_13, > + DA850_EMA_D_12, > + DA850_EMA_D_11, > + DA850_EMA_D_10, > + DA850_EMA_D_9, > + DA850_EMA_D_8, > + DA850_EMA_A_0, > + DA850_EMA_A_3, > + DA850_EMA_A_4, > + DA850_EMA_A_5, > + DA850_EMA_A_6, > + DA850_EMA_A_7, > + DA850_EMA_A_8, > + DA850_EMA_A_9, > + DA850_EMA_A_10, > + DA850_EMA_A_11, > + DA850_EMA_A_12, > + DA850_EMA_A_13, > + DA850_EMA_A_14, > + DA850_EMA_A_15, > + DA850_EMA_A_16, > + DA850_EMA_A_17, > + DA850_EMA_A_18, > + DA850_EMA_A_19, > + DA850_EMA_A_20, > + DA850_EMA_A_21, > + DA850_EMA_A_22, > + DA850_EMA_A_23, > + DA850_EMA_BA_1, > + DA850_EMA_CLK, > + DA850_EMA_WAIT_1, > + DA850_NEMA_CS_2, > > /* GPIO function */ > DA850_GPIO2_15, > -- > 1.5.6 > > _______________________________________________ > Davinci-linux-open-source mailing list > Davinci-linux-open-source@linux.davincidsp.com > http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
On Fri, Aug 14, 2009 at 04:43:58, Kevin Hilman wrote: > Sudhakar Rajashekhara <sudhakar.raj@ti.com> writes: > > > This patch adds platform data for the 8MB NOR flash > > found on da850/omap-l138 EVM. Both NOR and NAND can > > co-exist on da850/omap-l138 as they are using different > > chip selects. > > > > Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com> > > --- > > Since the previous version: > > 1. Removed #ifdef macro guards from the board file. > > 2. Defined macros for CS2 offset and the value being > > written to this offset. > > 3. Value at the CS2 offset of AEMIOF is being read > > before writing to it. > > 4. Corrected the argument to ioremap() function. > > Thanks, pushing today. > > Kevin > > > This patch is dependent on the following patches which > > I have submitted earlier: > > [PATCH] davinci: Macro to convert GPIO signal to GPIO pin number > > [PATCH v3] davinci: Add platform support for da850/omap-l138 GLCD > > [PATCH v3] davinci: Add MMC/SD support for da850/omap-l138 > > [PATCH v3] davinci: Add NAND flash support for DA850/OMAP-L138 > > I am not seeing any of these patches in the tree. Something wrong? - Sudhakar
Sudhakar Rajashekhara wrote:
> I am not seeing any of these patches in the tree. Something wrong?
Sorry, didn't push out.
Pushed now.
Kevin
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 62d37cb..70a2f48 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -22,6 +22,7 @@ #include <linux/mtd/mtd.h> #include <linux/mtd/nand.h> #include <linux/mtd/partitions.h> +#include <linux/mtd/physmap.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> @@ -41,6 +42,39 @@ #define DA850_MMCSD_CD_PIN GPIO_TO_PIN(4, 0) #define DA850_MMCSD_WP_PIN GPIO_TO_PIN(4, 1) +static struct mtd_partition da850_evm_norflash_partition[] = { + { + .name = "NOR filesystem", + .offset = 0, + .size = MTDPART_SIZ_FULL, + .mask_flags = 0, + }, +}; + +static struct physmap_flash_data da850_evm_norflash_data = { + .width = 2, + .parts = da850_evm_norflash_partition, + .nr_parts = ARRAY_SIZE(da850_evm_norflash_partition), +}; + +static struct resource da850_evm_norflash_resource[] = { + { + .start = DA8XX_AEMIF_CS2_BASE, + .end = DA8XX_AEMIF_CS2_BASE + SZ_32M - 1, + .flags = IORESOURCE_MEM, + }, +}; + +static struct platform_device da850_evm_norflash_device = { + .name = "physmap-flash", + .id = 0, + .dev = { + .platform_data = &da850_evm_norflash_data, + }, + .num_resources = 1, + .resource = da850_evm_norflash_resource, +}; + /* DA850/OMAP-L138 EVM includes a 512 MByte large-page NAND flash * (128K blocks). It may be used instead of the (default) SPI flash * to boot, using TI's tools to install the secondary boot loader @@ -120,6 +154,7 @@ static struct davinci_uart_config da850_evm_uart_config __initdata = { static struct platform_device *da850_evm_devices[] __initdata = { &da850_evm_nandflash_device, + &da850_evm_norflash_device, }; /* davinci da850 evm audio machine driver */ @@ -192,6 +227,23 @@ static int da850_lcd_hw_init(void) return 0; } +#define DA8XX_AEMIF_CE2CFG_OFFSET 0x10 +#define DA8XX_AEMIF_ASIZE_16BIT 0x1 + +static void __init da850_evm_init_nor(void) +{ + void __iomem *aemif_addr; + + aemif_addr = ioremap(DA8XX_AEMIF_CTL_BASE, SZ_32K); + + /* Configure data bus width of CS2 to 16 bit */ + writel(readl(aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET) | + DA8XX_AEMIF_ASIZE_16BIT, + aemif_addr + DA8XX_AEMIF_CE2CFG_OFFSET); + + iounmap(aemif_addr); +} + static __init void da850_evm_init(void) { struct davinci_soc_info *soc_info = &davinci_soc_info; @@ -202,6 +254,13 @@ static __init void da850_evm_init(void) pr_warning("da850_evm_init: nand mux setup failed: %d\n", ret); + ret = da8xx_pinmux_setup(da850_nor_pins); + if (ret) + pr_warning("da850_evm_init: nor mux setup failed: %d\n", + ret); + + da850_evm_init_nor(); + platform_add_devices(da850_evm_devices, ARRAY_SIZE(da850_evm_devices)); diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c index db42094..192d719 100644 --- a/arch/arm/mach-davinci/da850.c +++ b/arch/arm/mach-davinci/da850.c @@ -471,6 +471,40 @@ static const struct mux_config da850_pins[] = { MUX_CFG(DA850, NEMA_CS_4, 7, 8, 15, 1, false) MUX_CFG(DA850, NEMA_WE, 7, 16, 15, 1, false) MUX_CFG(DA850, NEMA_OE, 7, 20, 15, 1, false) + MUX_CFG(DA850, EMA_A_0, 12, 28, 15, 1, false) + MUX_CFG(DA850, EMA_A_3, 12, 16, 15, 1, false) + MUX_CFG(DA850, EMA_A_4, 12, 12, 15, 1, false) + MUX_CFG(DA850, EMA_A_5, 12, 8, 15, 1, false) + MUX_CFG(DA850, EMA_A_6, 12, 4, 15, 1, false) + MUX_CFG(DA850, EMA_A_7, 12, 0, 15, 1, false) + MUX_CFG(DA850, EMA_A_8, 11, 28, 15, 1, false) + MUX_CFG(DA850, EMA_A_9, 11, 24, 15, 1, false) + MUX_CFG(DA850, EMA_A_10, 11, 20, 15, 1, false) + MUX_CFG(DA850, EMA_A_11, 11, 16, 15, 1, false) + MUX_CFG(DA850, EMA_A_12, 11, 12, 15, 1, false) + MUX_CFG(DA850, EMA_A_13, 11, 8, 15, 1, false) + MUX_CFG(DA850, EMA_A_14, 11, 4, 15, 1, false) + MUX_CFG(DA850, EMA_A_15, 11, 0, 15, 1, false) + MUX_CFG(DA850, EMA_A_16, 10, 28, 15, 1, false) + MUX_CFG(DA850, EMA_A_17, 10, 24, 15, 1, false) + MUX_CFG(DA850, EMA_A_18, 10, 20, 15, 1, false) + MUX_CFG(DA850, EMA_A_19, 10, 16, 15, 1, false) + MUX_CFG(DA850, EMA_A_20, 10, 12, 15, 1, false) + MUX_CFG(DA850, EMA_A_21, 10, 8, 15, 1, false) + MUX_CFG(DA850, EMA_A_22, 10, 4, 15, 1, false) + MUX_CFG(DA850, EMA_A_23, 10, 0, 15, 1, false) + MUX_CFG(DA850, EMA_D_8, 8, 28, 15, 1, false) + MUX_CFG(DA850, EMA_D_9, 8, 24, 15, 1, false) + MUX_CFG(DA850, EMA_D_10, 8, 20, 15, 1, false) + MUX_CFG(DA850, EMA_D_11, 8, 16, 15, 1, false) + MUX_CFG(DA850, EMA_D_12, 8, 12, 15, 1, false) + MUX_CFG(DA850, EMA_D_13, 8, 8, 15, 1, false) + MUX_CFG(DA850, EMA_D_14, 8, 4, 15, 1, false) + MUX_CFG(DA850, EMA_D_15, 8, 0, 15, 1, false) + MUX_CFG(DA850, EMA_BA_1, 5, 24, 15, 1, false) + MUX_CFG(DA850, EMA_CLK, 6, 0, 15, 1, false) + MUX_CFG(DA850, EMA_WAIT_1, 6, 24, 15, 1, false) + MUX_CFG(DA850, NEMA_CS_2, 7, 0, 15, 1, false) /* GPIO function */ MUX_CFG(DA850, GPIO2_15, 5, 0, 15, 8, false) MUX_CFG(DA850, GPIO8_10, 18, 28, 15, 8, false) @@ -545,6 +579,22 @@ const short da850_nand_pins[] __initdata = { -1 }; +const short da850_nor_pins[] __initdata = { + DA850_EMA_BA_1, DA850_EMA_CLK, DA850_EMA_WAIT_1, DA850_NEMA_CS_2, + DA850_NEMA_WE, DA850_NEMA_OE, DA850_EMA_D_0, DA850_EMA_D_1, + DA850_EMA_D_2, DA850_EMA_D_3, DA850_EMA_D_4, DA850_EMA_D_5, + DA850_EMA_D_6, DA850_EMA_D_7, DA850_EMA_D_8, DA850_EMA_D_9, + DA850_EMA_D_10, DA850_EMA_D_11, DA850_EMA_D_12, DA850_EMA_D_13, + DA850_EMA_D_14, DA850_EMA_D_15, DA850_EMA_A_0, DA850_EMA_A_1, + DA850_EMA_A_2, DA850_EMA_A_3, DA850_EMA_A_4, DA850_EMA_A_5, + DA850_EMA_A_6, DA850_EMA_A_7, DA850_EMA_A_8, DA850_EMA_A_9, + DA850_EMA_A_10, DA850_EMA_A_11, DA850_EMA_A_12, DA850_EMA_A_13, + DA850_EMA_A_14, DA850_EMA_A_15, DA850_EMA_A_16, DA850_EMA_A_17, + DA850_EMA_A_18, DA850_EMA_A_19, DA850_EMA_A_20, DA850_EMA_A_21, + DA850_EMA_A_22, DA850_EMA_A_23, + -1 +}; + /* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */ static u8 da850_default_priorities[DA850_N_CP_INTC_IRQ] = { [IRQ_DA8XX_COMMTX] = 7, diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h index 77e5d23..d4095d0 100644 --- a/arch/arm/mach-davinci/include/mach/da8xx.h +++ b/arch/arm/mach-davinci/include/mach/da8xx.h @@ -40,6 +40,7 @@ #define DA8XX_PSC1_BASE 0x01e27000 #define DA8XX_LCD_CNTRL_BASE 0x01e13000 #define DA8XX_MMCSD0_BASE 0x01c40000 +#define DA8XX_AEMIF_CS2_BASE 0x60000000 #define DA8XX_AEMIF_CS3_BASE 0x62000000 #define DA8XX_AEMIF_CTL_BASE 0x68000000 @@ -113,6 +114,7 @@ extern const short da850_mcasp_pins[]; extern const short da850_lcdcntl_pins[]; extern const short da850_mmcsd0_pins[]; extern const short da850_nand_pins[]; +extern const short da850_nor_pins[]; int da8xx_pinmux_setup(const short pins[]); diff --git a/arch/arm/mach-davinci/include/mach/mux.h b/arch/arm/mach-davinci/include/mach/mux.h index ee6f29d..88cd22a 100644 --- a/arch/arm/mach-davinci/include/mach/mux.h +++ b/arch/arm/mach-davinci/include/mach/mux.h @@ -821,6 +821,40 @@ enum davinci_da850_index { DA850_NEMA_CS_4, DA850_NEMA_WE, DA850_NEMA_OE, + DA850_EMA_D_15, + DA850_EMA_D_14, + DA850_EMA_D_13, + DA850_EMA_D_12, + DA850_EMA_D_11, + DA850_EMA_D_10, + DA850_EMA_D_9, + DA850_EMA_D_8, + DA850_EMA_A_0, + DA850_EMA_A_3, + DA850_EMA_A_4, + DA850_EMA_A_5, + DA850_EMA_A_6, + DA850_EMA_A_7, + DA850_EMA_A_8, + DA850_EMA_A_9, + DA850_EMA_A_10, + DA850_EMA_A_11, + DA850_EMA_A_12, + DA850_EMA_A_13, + DA850_EMA_A_14, + DA850_EMA_A_15, + DA850_EMA_A_16, + DA850_EMA_A_17, + DA850_EMA_A_18, + DA850_EMA_A_19, + DA850_EMA_A_20, + DA850_EMA_A_21, + DA850_EMA_A_22, + DA850_EMA_A_23, + DA850_EMA_BA_1, + DA850_EMA_CLK, + DA850_EMA_WAIT_1, + DA850_NEMA_CS_2, /* GPIO function */ DA850_GPIO2_15,
This patch adds platform data for the 8MB NOR flash found on da850/omap-l138 EVM. Both NOR and NAND can co-exist on da850/omap-l138 as they are using different chip selects. Signed-off-by: Sudhakar Rajashekhara <sudhakar.raj@ti.com> --- Since the previous version: 1. Removed #ifdef macro guards from the board file. 2. Defined macros for CS2 offset and the value being written to this offset. 3. Value at the CS2 offset of AEMIOF is being read before writing to it. 4. Corrected the argument to ioremap() function. This patch is dependent on the following patches which I have submitted earlier: [PATCH] davinci: Macro to convert GPIO signal to GPIO pin number [PATCH v3] davinci: Add platform support for da850/omap-l138 GLCD [PATCH v3] davinci: Add MMC/SD support for da850/omap-l138 [PATCH v3] davinci: Add NAND flash support for DA850/OMAP-L138 arch/arm/mach-davinci/board-da850-evm.c | 59 ++++++++++++++++++++++++++++ arch/arm/mach-davinci/da850.c | 50 +++++++++++++++++++++++ arch/arm/mach-davinci/include/mach/da8xx.h | 2 + arch/arm/mach-davinci/include/mach/mux.h | 34 ++++++++++++++++ 4 files changed, 145 insertions(+), 0 deletions(-)