[PATCH 39/39] ARM: OMAP2+: board igep0020: gpmc driver adaptation
Afzal Mohammed
afzal at ti.com
Tue May 1 08:10:45 EDT 2012
gpmc code has been converted to driver. Modify the board
code to provide gpmc driver with required information.
Signed-off-by: Afzal Mohammed <afzal at ti.com>
---
arch/arm/mach-omap2/board-igep0020.c | 32 ++++++++++++++++++++++++++++----
1 file changed, 28 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
index 6d171ca..91de8ce 100644
--- a/arch/arm/mach-omap2/board-igep0020.c
+++ b/arch/arm/mach-omap2/board-igep0020.c
@@ -36,6 +36,7 @@
#include <video/omapdss.h>
#include <video/omap-panel-dvi.h>
#include <plat/onenand.h>
+#include <plat/nand.h>
#include "mux.h"
#include "hsmmc.h"
@@ -118,6 +119,13 @@ static void __init igep2_get_revision(void)
gpio_free(IGEP2_GPIO_LED1_RED);
}
+static struct gpmc_device_pdata *gpmc_device_data[2];
+static struct gpmc_device_pdata **gpmc_cur = gpmc_device_data;
+
+static struct gpmc_pdata gpmc_data = {
+ .device_pdata = gpmc_device_data,
+};
+
#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
defined(CONFIG_MTD_ONENAND_OMAP2_MODULE) || \
defined(CONFIG_MTD_NAND_OMAP2) || \
@@ -172,14 +180,26 @@ static void __init igep_flash_init(void)
mux = igep_get_sysboot_value();
if (mux == IGEP_SYSBOOT_NAND) {
+ struct omap_nand_platform_data *nand_data;
+
pr_info("IGEP: initializing NAND memory device\n");
- board_nand_init(igep_flash_partitions,
+ nand_data = board_nand_init(igep_flash_partitions,
ARRAY_SIZE(igep_flash_partitions),
- 0, NAND_BUSWIDTH_16, NULL);
+ 0, NAND_BUSWIDTH_16, nand_default_timings);
+ if (nand_data != NULL) {
+ *gpmc_cur++ = gpmc_nand_init(nand_data);
+ gpmc_data.num_device++;
+ }
} else if (mux == IGEP_SYSBOOT_ONENAND) {
+ struct omap_onenand_platform_data *onenand_data;
+
pr_info("IGEP: initializing OneNAND memory device\n");
- board_onenand_init(igep_flash_partitions,
+ onenand_data = board_onenand_init(igep_flash_partitions,
ARRAY_SIZE(igep_flash_partitions), 0);
+ if (onenand_data != NULL) {
+ *gpmc_cur++ = gpmc_onenand_init(onenand_data);
+ gpmc_data.num_device++;
+ }
} else
pr_err("IGEP: Flash: unsupported sysboot sequence found\n");
}
@@ -202,7 +222,11 @@ static struct omap_smsc911x_platform_data smsc911x_cfg = {
static inline void __init igep2_init_smsc911x(void)
{
- gpmc_smsc911x_init(&smsc911x_cfg);
+ *gpmc_cur = gpmc_smsc911x_init(&smsc911x_cfg);
+ if (*gpmc_cur)
+ gpmc_data.num_device++, gpmc_cur++;
+ else
+ pr_err("error: gpmc smsc911x setup\n");
}
#else
--
1.7.10
More information about the linux-mtd
mailing list