ARM: OMAP1: Make omap1 boards to use omap_nand_platform_data
authorTony Lindgren <tony@atomide.com>
Tue, 11 Dec 2007 21:50:17 +0000 (13:50 -0800)
committerTony Lindgren <tony@atomide.com>
Fri, 8 Feb 2008 18:38:00 +0000 (10:38 -0800)
This patch adds omap_nand_platform data based on a patch
by Shahrom Sharif-Kashani <sshahrom@micron.com>, and makes
omap1 boards to use omap_nand_platform_data instead of
nand_platform_data used earlier.

Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-perseus2.c
include/asm-arm/arch-omap/nand.h [new file with mode: 0644]

index f550b19e1ecdd8fa479f11ff2dad1fd061e78835..4f4640ba2a97134fdaa38dd44b08c3de97f265ef 100644 (file)
@@ -30,6 +30,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/fpga.h>
+#include <asm/arch/nand.h>
 #include <asm/arch/keypad.h>
 #include <asm/arch/common.h>
 #include <asm/arch/board.h>
@@ -134,7 +135,7 @@ static struct platform_device nor_device = {
        .resource       = &nor_resource,
 };
 
-static struct nand_platform_data nand_data = {
+static struct omap_nand_platform_data nand_data = {
        .options        = NAND_SAMSUNG_LP_OPTIONS,
 };
 
@@ -202,7 +203,7 @@ static struct platform_device *devices[] __initdata = {
 
 #define P2_NAND_RB_GPIO_PIN    62
 
-static int nand_dev_ready(struct nand_platform_data *data)
+static int nand_dev_ready(struct omap_nand_platform_data *data)
 {
        return omap_get_gpio_datain(P2_NAND_RB_GPIO_PIN);
 }
index bfa04fa25524c23b5a0ede5a41313fe1a529f5bd..1a69002e3f8040757e9c4cb6ab58f1f9f2443819 100644 (file)
@@ -39,6 +39,7 @@
 
 #include <asm/arch/mux.h>
 #include <asm/arch/tc.h>
+#include <asm/arch/nand.h>
 #include <asm/arch/irda.h>
 #include <asm/arch/usb.h>
 #include <asm/arch/keypad.h>
@@ -140,8 +141,6 @@ static struct platform_device h2_nor_device = {
        .resource       = &h2_nor_resource,
 };
 
-#if 0  /* REVISIT: Enable when nand_platform_data is applied */
-
 static struct mtd_partition h2_nand_partitions[] = {
 #if 0
        /* REVISIT:  enable these partitions if you make NAND BOOT
@@ -179,7 +178,7 @@ static struct mtd_partition h2_nand_partitions[] = {
 };
 
 /* dip switches control NAND chip access:  8 bit, 16 bit, or neither */
-static struct nand_platform_data h2_nand_data = {
+static struct omap_nand_platform_data h2_nand_data = {
        .options        = NAND_SAMSUNG_LP_OPTIONS,
        .parts          = h2_nand_partitions,
        .nr_parts       = ARRAY_SIZE(h2_nand_partitions),
@@ -198,7 +197,6 @@ static struct platform_device h2_nand_device = {
        .num_resources  = 1,
        .resource       = &h2_nand_resource,
 };
-#endif
 
 static struct resource h2_smc91x_resources[] = {
        [0] = {
@@ -335,7 +333,7 @@ static struct platform_device h2_mcbsp1_device = {
 
 static struct platform_device *h2_devices[] __initdata = {
        &h2_nor_device,
-       //&h2_nand_device,
+       &h2_nand_device,
        &h2_smc91x_device,
        &h2_irda_device,
        &h2_kp_device,
@@ -409,15 +407,15 @@ static struct omap_lcd_config h2_lcd_config __initdata = {
 };
 
 static struct omap_board_config_kernel h2_config[] __initdata = {
-       { OMAP_TAG_USB,           &h2_usb_config },
-       { OMAP_TAG_MMC,           &h2_mmc_config },
+       { OMAP_TAG_USB,         &h2_usb_config },
+       { OMAP_TAG_MMC,         &h2_mmc_config },
        { OMAP_TAG_UART,        &h2_uart_config },
        { OMAP_TAG_LCD,         &h2_lcd_config },
 };
 
 #define H2_NAND_RB_GPIO_PIN    62
 
-static int h2_nand_dev_ready(struct nand_platform_data *data)
+static int h2_nand_dev_ready(struct omap_nand_platform_data *data)
 {
        return omap_get_gpio_datain(H2_NAND_RB_GPIO_PIN);
 }
@@ -436,12 +434,10 @@ static void __init h2_init(void)
        h2_nor_resource.end = h2_nor_resource.start = omap_cs3_phys();
        h2_nor_resource.end += SZ_32M - 1;
 
-#if 0  /* REVISIT: Enable when nand_platform_data is applied */
        h2_nand_resource.end = h2_nand_resource.start = OMAP_CS2B_PHYS;
        h2_nand_resource.end += SZ_4K - 1;
        if (!(omap_request_gpio(H2_NAND_RB_GPIO_PIN)))
                h2_nand_data.dev_ready = h2_nand_dev_ready;
-#endif
 
        omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
        omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
index 0565198605656d9136a46aa45f037c98a99e18dd..c4a7141bb78c3b0337eb16c94fb143c3210a6974 100644 (file)
@@ -42,6 +42,7 @@
 #include <asm/arch/irqs.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/tc.h>
+#include <asm/arch/nand.h>
 #include <asm/arch/irda.h>
 #include <asm/arch/usb.h>
 #include <asm/arch/keypad.h>
@@ -179,7 +180,7 @@ static struct mtd_partition nand_partitions[] = {
 };
 
 /* dip switches control NAND chip access:  8 bit, 16 bit, or neither */
-static struct nand_platform_data nand_data = {
+static struct omap_nand_platform_data nand_data = {
        .options        = NAND_SAMSUNG_LP_OPTIONS,
        .parts          = nand_partitions,
        .nr_parts       = ARRAY_SIZE(nand_partitions),
@@ -472,7 +473,7 @@ static struct i2c_board_info __initdata h3_i2c_board_info[] = {
 
 #define H3_NAND_RB_GPIO_PIN    10
 
-static int nand_dev_ready(struct nand_platform_data *data)
+static int nand_dev_ready(struct omap_nand_platform_data *data)
 {
        return omap_get_gpio_datain(H3_NAND_RB_GPIO_PIN);
 }
index 534dcfb9d2632c1e509ff3048bd4deeee5746a21..e79749df434be7426f2dacd3e9bdaf8a5467f3e7 100644 (file)
@@ -30,6 +30,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/fpga.h>
+#include <asm/arch/nand.h>
 #include <asm/arch/keypad.h>
 #include <asm/arch/common.h>
 #include <asm/arch/board.h>
@@ -133,7 +134,7 @@ static struct platform_device nor_device = {
        .resource       = &nor_resource,
 };
 
-static struct nand_platform_data nand_data = {
+static struct omap_nand_platform_data nand_data = {
        .options        = NAND_SAMSUNG_LP_OPTIONS,
 };
 
@@ -202,7 +203,7 @@ static struct platform_device *devices[] __initdata = {
 
 #define P2_NAND_RB_GPIO_PIN    62
 
-static int nand_dev_ready(struct nand_platform_data *data)
+static int nand_dev_ready(struct omap_nand_platform_data *data)
 {
        return omap_get_gpio_datain(P2_NAND_RB_GPIO_PIN);
 }
diff --git a/include/asm-arm/arch-omap/nand.h b/include/asm-arm/arch-omap/nand.h
new file mode 100644 (file)
index 0000000..17ae26e
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * include/asm-arm/arch-omap/nand.h
+ *
+ * Copyright (C) 2006 Micron Technology Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/mtd/partitions.h>
+
+struct omap_nand_platform_data {
+       unsigned int            options;
+       int                     cs;
+       int                     gpio_irq;
+       struct mtd_partition    *parts;
+       int                     nr_parts;
+       int                     (*nand_setup)(void __iomem *);
+       int                     (*dev_ready)(struct omap_nand_platform_data *);
+       int                     dma_channel;
+       void __iomem            *gpmc_cs_baseaddr;
+       void __iomem            *gpmc_baseaddr;
+};