From a94135007705a9450f4f07556b5ef62c77c93d36 Mon Sep 17 00:00:00 2001 From: Huang Shijie Date: Thu, 21 Jul 2011 17:25:45 +0800 Subject: [PATCH] ENGR00139247-2 MX6Q: add GPMI device add gpmi device for sabreauto platform. Signed-off-by: Huang Shijie --- arch/arm/mach-mx6/Kconfig | 1 + arch/arm/mach-mx6/board-mx6q_sabreauto.c | 38 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/arch/arm/mach-mx6/Kconfig b/arch/arm/mach-mx6/Kconfig index 2fe652ffcb79..ddd8f6b650d5 100644 --- a/arch/arm/mach-mx6/Kconfig +++ b/arch/arm/mach-mx6/Kconfig @@ -25,6 +25,7 @@ config MACH_MX6Q_SABREAUTO select SOC_IMX6Q select IMX_HAVE_PLATFORM_IMX_UART select IMX_HAVE_PLATFORM_FEC + select IMX_HAVE_PLATFORM_GPMI_NFC select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX select IMX_HAVE_PLATFORM_SPI_IMX select IMX_HAVE_PLATFORM_IMX_I2C diff --git a/arch/arm/mach-mx6/board-mx6q_sabreauto.c b/arch/arm/mach-mx6/board-mx6q_sabreauto.c index efae0aa56439..444f21c8de26 100644 --- a/arch/arm/mach-mx6/board-mx6q_sabreauto.c +++ b/arch/arm/mach-mx6/board-mx6q_sabreauto.c @@ -248,6 +248,43 @@ static const struct esdhc_platform_data mx6q_sabreauto_sd4_data __initconst = { .always_present = 1, }; +/* The GPMI is conflicted with SD3, so init this in the driver. */ +static iomux_v3_cfg_t mx6q_gpmi_nand[] __initdata = { + MX6Q_PAD_NANDF_CLE__RAWNAND_CLE, + MX6Q_PAD_NANDF_ALE__RAWNAND_ALE, + MX6Q_PAD_NANDF_CS0__RAWNAND_CE0N, + MX6Q_PAD_NANDF_CS1__RAWNAND_CE1N, + MX6Q_PAD_NANDF_CS2__RAWNAND_CE2N, + MX6Q_PAD_NANDF_CS3__RAWNAND_CE3N, + MX6Q_PAD_NANDF_RB0__RAWNAND_READY0, + MX6Q_PAD_SD4_DAT0__RAWNAND_DQS, + MX6Q_PAD_NANDF_D0__RAWNAND_D0, + MX6Q_PAD_NANDF_D1__RAWNAND_D1, + MX6Q_PAD_NANDF_D2__RAWNAND_D2, + MX6Q_PAD_NANDF_D3__RAWNAND_D3, + MX6Q_PAD_NANDF_D4__RAWNAND_D4, + MX6Q_PAD_NANDF_D5__RAWNAND_D5, + MX6Q_PAD_NANDF_D6__RAWNAND_D6, + MX6Q_PAD_NANDF_D7__RAWNAND_D7, + MX6Q_PAD_SD4_CMD__RAWNAND_RDN, + MX6Q_PAD_SD4_CLK__RAWNAND_WRN, + MX6Q_PAD_NANDF_WP_B__RAWNAND_RESETN, +}; + +static int gpmi_nfc_platform_init(void) +{ + return mxc_iomux_v3_setup_multiple_pads(mx6q_gpmi_nand, + ARRAY_SIZE(mx6q_gpmi_nand)); +} + +static const struct gpmi_nfc_platform_data +mx6q_gpmi_nfc_platform_data __initconst = { + .platform_init = gpmi_nfc_platform_init, + .min_prop_delay_in_ns = 5, + .max_prop_delay_in_ns = 9, + .max_chip_count = 1, +}; + static const struct anatop_thermal_platform_data mx6q_sabreauto_anatop_thermal_data __initconst = { .name = "anatop_thermal", }; @@ -703,6 +740,7 @@ static void __init mx6_board_init(void) gpio_direction_output(MX6Q_SABREAUTO_LDB_BACKLIGHT, 1); imx6q_add_otp(); imx6q_add_imx2_wdt(0, NULL); + imx6q_add_gpmi(&mx6q_gpmi_nfc_platform_data); } extern void __iomem *twd_base; -- 2.39.5