From: Shawn Guo <shawn.guo@freescale.com> To: cjb@laptop.org, s.hauer@pengutronix.de, arnd@arndb.de, LW@KARO-electronics.de, linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Shawn Guo <shawn.guo@freescale.com> Subject: [PATCH v2 7/7] ARM: mxs/mx28evk: add mmc device Date: Mon, 14 Feb 2011 10:32:26 +0800 [thread overview] Message-ID: <1297650746-12841-8-git-send-email-shawn.guo@freescale.com> (raw) In-Reply-To: <1297650746-12841-1-git-send-email-shawn.guo@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@freescale.com> --- arch/arm/mach-mxs/Kconfig | 1 + arch/arm/mach-mxs/mach-mx28evk.c | 102 +++++++++++++++++++++++++++++++++++++- 2 files changed, 101 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig index f47fae3..287e0f8 100644 --- a/arch/arm/mach-mxs/Kconfig +++ b/arch/arm/mach-mxs/Kconfig @@ -30,6 +30,7 @@ config MACH_MX28EVK select SOC_IMX28 select MXS_HAVE_AMBA_DUART select MXS_HAVE_PLATFORM_FEC + select MXS_HAVE_PLATFORM_MMC select MXS_OCOTP default y help diff --git a/arch/arm/mach-mxs/mach-mx28evk.c b/arch/arm/mach-mxs/mach-mx28evk.c index e8db99f..55a9b55 100644 --- a/arch/arm/mach-mxs/mach-mx28evk.c +++ b/arch/arm/mach-mxs/mach-mx28evk.c @@ -28,8 +28,13 @@ #include "devices-mx28.h" #include "gpio.h" -#define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15) -#define MX28EVK_FEC_PHY_RESET MXS_GPIO_NR(4, 13) +#define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15) +#define MX28EVK_FEC_PHY_RESET MXS_GPIO_NR(4, 13) + +#define MX28EVK_MMC0_WRITE_PROTECT MXS_GPIO_NR(2, 12) +#define MX28EVK_MMC1_WRITE_PROTECT MXS_GPIO_NR(0, 28) +#define MX28EVK_MMC0_SLOT_POWER MXS_GPIO_NR(3, 28) +#define MX28EVK_MMC1_SLOT_POWER MXS_GPIO_NR(3, 29) static const iomux_cfg_t mx28evk_pads[] __initconst = { /* duart */ @@ -76,6 +81,66 @@ static const iomux_cfg_t mx28evk_pads[] __initconst = { /* phy reset line */ MX28_PAD_ENET0_RX_CLK__GPIO_4_13 | (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + + /* mmc0 */ + MX28_PAD_SSP0_DATA0__SSP0_D0 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA1__SSP0_D1 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA2__SSP0_D2 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA3__SSP0_D3 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA4__SSP0_D4 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA5__SSP0_D5 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA6__SSP0_D6 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA7__SSP0_D7 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_CMD__SSP0_CMD | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + MX28_PAD_SSP0_SCK__SSP0_SCK | + (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* write protect */ + MX28_PAD_SSP1_SCK__GPIO_2_12 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* slot power enable */ + MX28_PAD_PWM3__GPIO_3_28 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + + /* mmc1 */ + MX28_PAD_GPMI_D00__SSP1_D0 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D01__SSP1_D1 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D02__SSP1_D2 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D03__SSP1_D3 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D04__SSP1_D4 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D05__SSP1_D5 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D06__SSP1_D6 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D07__SSP1_D7 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_RDY1__SSP1_CMD | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + MX28_PAD_GPMI_WRN__SSP1_SCK | + (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* write protect */ + MX28_PAD_GPMI_RESETN__GPIO_0_28 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* slot power enable */ + MX28_PAD_PWM4__GPIO_3_29 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), }; /* fec */ @@ -159,12 +224,45 @@ error: return -ETIMEDOUT; } +/* mmc */ +static void __init mx28evk_mmc_slot_poweron(int gpio) +{ + int ret; + + ret = gpio_request(gpio, "mmc-slot-power"); + if (ret) { + pr_err("Failed to request gpio mmc-slot-power: %d\n", ret); + return; + } + + ret = gpio_direction_output(gpio, 0); + if (ret) { + pr_err("Failed to drive gpio mmc-slot-power: %d\n", ret); + return; + } +} + +static struct mxs_mmc_platform_data mx28_mmc_pdata[] __initdata = { + { + /* mmc0 */ + .wp_gpio = MX28EVK_MMC0_WRITE_PROTECT, + }, { + /* mmc1 */ + .wp_gpio = MX28EVK_MMC1_WRITE_PROTECT, + }, +}; + static void __init mx28evk_init(void) { mxs_iomux_setup_multiple_pads(mx28evk_pads, ARRAY_SIZE(mx28evk_pads)); mx28_add_duart(); + mx28evk_mmc_slot_poweron(MX28EVK_MMC0_SLOT_POWER); + mx28_add_mmc(0, &mx28_mmc_pdata[0]); + mx28evk_mmc_slot_poweron(MX28EVK_MMC1_SLOT_POWER); + mx28_add_mmc(1, &mx28_mmc_pdata[1]); + if (mx28evk_fec_get_mac()) pr_warn("%s: failed on fec mac setup\n", __func__); -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: shawn.guo@freescale.com (Shawn Guo) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 7/7] ARM: mxs/mx28evk: add mmc device Date: Mon, 14 Feb 2011 10:32:26 +0800 [thread overview] Message-ID: <1297650746-12841-8-git-send-email-shawn.guo@freescale.com> (raw) In-Reply-To: <1297650746-12841-1-git-send-email-shawn.guo@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@freescale.com> --- arch/arm/mach-mxs/Kconfig | 1 + arch/arm/mach-mxs/mach-mx28evk.c | 102 +++++++++++++++++++++++++++++++++++++- 2 files changed, 101 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig index f47fae3..287e0f8 100644 --- a/arch/arm/mach-mxs/Kconfig +++ b/arch/arm/mach-mxs/Kconfig @@ -30,6 +30,7 @@ config MACH_MX28EVK select SOC_IMX28 select MXS_HAVE_AMBA_DUART select MXS_HAVE_PLATFORM_FEC + select MXS_HAVE_PLATFORM_MMC select MXS_OCOTP default y help diff --git a/arch/arm/mach-mxs/mach-mx28evk.c b/arch/arm/mach-mxs/mach-mx28evk.c index e8db99f..55a9b55 100644 --- a/arch/arm/mach-mxs/mach-mx28evk.c +++ b/arch/arm/mach-mxs/mach-mx28evk.c @@ -28,8 +28,13 @@ #include "devices-mx28.h" #include "gpio.h" -#define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15) -#define MX28EVK_FEC_PHY_RESET MXS_GPIO_NR(4, 13) +#define MX28EVK_FEC_PHY_POWER MXS_GPIO_NR(2, 15) +#define MX28EVK_FEC_PHY_RESET MXS_GPIO_NR(4, 13) + +#define MX28EVK_MMC0_WRITE_PROTECT MXS_GPIO_NR(2, 12) +#define MX28EVK_MMC1_WRITE_PROTECT MXS_GPIO_NR(0, 28) +#define MX28EVK_MMC0_SLOT_POWER MXS_GPIO_NR(3, 28) +#define MX28EVK_MMC1_SLOT_POWER MXS_GPIO_NR(3, 29) static const iomux_cfg_t mx28evk_pads[] __initconst = { /* duart */ @@ -76,6 +81,66 @@ static const iomux_cfg_t mx28evk_pads[] __initconst = { /* phy reset line */ MX28_PAD_ENET0_RX_CLK__GPIO_4_13 | (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + + /* mmc0 */ + MX28_PAD_SSP0_DATA0__SSP0_D0 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA1__SSP0_D1 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA2__SSP0_D2 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA3__SSP0_D3 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA4__SSP0_D4 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA5__SSP0_D5 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA6__SSP0_D6 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DATA7__SSP0_D7 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_CMD__SSP0_CMD | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + MX28_PAD_SSP0_SCK__SSP0_SCK | + (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* write protect */ + MX28_PAD_SSP1_SCK__GPIO_2_12 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* slot power enable */ + MX28_PAD_PWM3__GPIO_3_28 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + + /* mmc1 */ + MX28_PAD_GPMI_D00__SSP1_D0 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D01__SSP1_D1 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D02__SSP1_D2 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D03__SSP1_D3 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D04__SSP1_D4 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D05__SSP1_D5 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D06__SSP1_D6 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_D07__SSP1_D7 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_RDY1__SSP1_CMD | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), + MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + MX28_PAD_GPMI_WRN__SSP1_SCK | + (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* write protect */ + MX28_PAD_GPMI_RESETN__GPIO_0_28 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), + /* slot power enable */ + MX28_PAD_PWM4__GPIO_3_29 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), }; /* fec */ @@ -159,12 +224,45 @@ error: return -ETIMEDOUT; } +/* mmc */ +static void __init mx28evk_mmc_slot_poweron(int gpio) +{ + int ret; + + ret = gpio_request(gpio, "mmc-slot-power"); + if (ret) { + pr_err("Failed to request gpio mmc-slot-power: %d\n", ret); + return; + } + + ret = gpio_direction_output(gpio, 0); + if (ret) { + pr_err("Failed to drive gpio mmc-slot-power: %d\n", ret); + return; + } +} + +static struct mxs_mmc_platform_data mx28_mmc_pdata[] __initdata = { + { + /* mmc0 */ + .wp_gpio = MX28EVK_MMC0_WRITE_PROTECT, + }, { + /* mmc1 */ + .wp_gpio = MX28EVK_MMC1_WRITE_PROTECT, + }, +}; + static void __init mx28evk_init(void) { mxs_iomux_setup_multiple_pads(mx28evk_pads, ARRAY_SIZE(mx28evk_pads)); mx28_add_duart(); + mx28evk_mmc_slot_poweron(MX28EVK_MMC0_SLOT_POWER); + mx28_add_mmc(0, &mx28_mmc_pdata[0]); + mx28evk_mmc_slot_poweron(MX28EVK_MMC1_SLOT_POWER); + mx28_add_mmc(1, &mx28_mmc_pdata[1]); + if (mx28evk_fec_get_mac()) pr_warn("%s: failed on fec mac setup\n", __func__); -- 1.7.1
next prev parent reply other threads:[~2011-02-13 18:31 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-02-14 2:32 [PATCH v2 0/7] Add mmc driver for i.MX23/28 Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-14 2:32 ` [PATCH v2 1/7] mmc: mxs-mmc: add mmc host " Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-13 19:26 ` Chris Ball 2011-02-13 19:26 ` Chris Ball 2011-02-13 22:35 ` Arnd Bergmann 2011-02-13 22:35 ` Arnd Bergmann 2011-02-14 0:25 ` Chris Ball 2011-02-14 0:25 ` Chris Ball 2011-02-15 21:27 ` Shawn Guo 2011-02-15 21:27 ` Shawn Guo 2011-02-15 21:26 ` Shawn Guo 2011-02-15 21:26 ` Shawn Guo 2011-02-14 15:39 ` Wolfram Sang 2011-02-14 15:39 ` Wolfram Sang 2011-02-15 21:28 ` Shawn Guo 2011-02-15 21:28 ` Shawn Guo 2011-02-14 16:59 ` Wolfram Sang 2011-02-14 16:59 ` Wolfram Sang 2011-02-15 22:39 ` Shawn Guo 2011-02-15 22:39 ` Shawn Guo 2011-02-15 17:13 ` Wolfram Sang 2011-02-15 17:13 ` Wolfram Sang 2011-02-15 17:19 ` Russell King - ARM Linux 2011-02-15 17:19 ` Russell King - ARM Linux 2011-02-15 17:29 ` Wolfram Sang 2011-02-15 17:29 ` Wolfram Sang 2011-02-15 17:32 ` Russell King - ARM Linux 2011-02-15 17:32 ` Russell King - ARM Linux 2011-02-16 20:28 ` Shawn Guo 2011-02-16 20:28 ` Shawn Guo 2011-02-16 15:33 ` Wolfram Sang 2011-02-16 15:33 ` Wolfram Sang 2011-02-17 4:17 ` Shawn Guo 2011-02-17 4:17 ` Shawn Guo 2011-02-17 12:06 ` Wolfram Sang 2011-02-17 12:06 ` Wolfram Sang 2011-02-16 15:59 ` Arnd Bergmann 2011-02-16 15:59 ` Arnd Bergmann 2011-02-17 2:44 ` Shawn Guo 2011-02-17 2:44 ` Shawn Guo 2011-02-14 16:59 ` Russell King - ARM Linux 2011-02-14 16:59 ` Russell King - ARM Linux 2011-02-15 22:03 ` Shawn Guo 2011-02-15 22:03 ` Shawn Guo 2011-02-15 14:13 ` Russell King - ARM Linux 2011-02-15 14:13 ` Russell King - ARM Linux 2011-02-14 2:32 ` [PATCH v2 2/7] ARM: mxs/clock: fix base address missing in name##_set_parent Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-14 2:32 ` [PATCH v2 3/7] ARM: mxs: make ssp error irq definition consistent Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-14 2:32 ` [PATCH v2 4/7] ARM: mxs: dynamically allocate mmc device Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-14 2:32 ` [PATCH v2 5/7] ARM: mxs: fix typo "GPO" in iomux-mx23.h Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-14 2:32 ` [PATCH v2 6/7] ARM: mxs/mx23evk: add mmc device Shawn Guo 2011-02-14 2:32 ` Shawn Guo 2011-02-14 2:32 ` Shawn Guo [this message] 2011-02-14 2:32 ` [PATCH v2 7/7] ARM: mxs/mx28evk: " Shawn Guo 2011-02-14 10:26 ` Wolfram Sang 2011-02-14 10:26 ` Wolfram Sang 2011-02-15 23:11 ` Shawn Guo 2011-02-15 23:11 ` Shawn Guo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1297650746-12841-8-git-send-email-shawn.guo@freescale.com \ --to=shawn.guo@freescale.com \ --cc=LW@KARO-electronics.de \ --cc=arnd@arndb.de \ --cc=cjb@laptop.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-mmc@vger.kernel.org \ --cc=s.hauer@pengutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.