Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b6f1e88 authored by Shawn Guo's avatar Shawn Guo Committed by Sascha Hauer
Browse files

ARM: mxs/mx23evk: add mmc device



Signed-off-by: default avatarShawn Guo <shawn.guo@freescale.com>
Acked-by: default avatarWolfram Sang <w.sang@pengutronix.de>
Acked-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
[sha: updated to Uwes v4 version]
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent 47babe69
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ config MACH_MX23EVK
	select SOC_IMX23
	select MXS_HAVE_AMBA_DUART
	select MXS_HAVE_PLATFORM_AUART
	select MXS_HAVE_PLATFORM_MXS_MMC
	select MXS_HAVE_PLATFORM_MXSFB
	default y
	help
+44 −0
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@

#define MX23EVK_LCD_ENABLE	MXS_GPIO_NR(1, 18)
#define MX23EVK_BL_ENABLE	MXS_GPIO_NR(1, 28)
#define MX23EVK_MMC0_WRITE_PROTECT	MXS_GPIO_NR(1, 30)
#define MX23EVK_MMC0_SLOT_POWER		MXS_GPIO_NR(1, 29)

static const iomux_cfg_t mx23evk_pads[] __initconst = {
	/* duart */
@@ -73,6 +75,36 @@ static const iomux_cfg_t mx23evk_pads[] __initconst = {
	MX23_PAD_LCD_RESET__GPIO_1_18 | MXS_PAD_CTRL,
	/* backlight control */
	MX23_PAD_PWM2__GPIO_1_28 | MXS_PAD_CTRL,

	/* mmc */
	MX23_PAD_SSP1_DATA0__SSP1_DATA0 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_SSP1_DATA1__SSP1_DATA1 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_SSP1_DATA2__SSP1_DATA2 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_SSP1_DATA3__SSP1_DATA3 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_GPMI_D08__SSP1_DATA4 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_GPMI_D09__SSP1_DATA5 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_GPMI_D10__SSP1_DATA6 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_GPMI_D11__SSP1_DATA7 |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_SSP1_CMD__SSP1_CMD |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_PULLUP),
	MX23_PAD_SSP1_DETECT__SSP1_DETECT |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL),
	MX23_PAD_SSP1_SCK__SSP1_SCK |
		(MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL),
	/* write protect */
	MX23_PAD_PWM4__GPIO_1_30 |
		(MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL),
	/* slot power enable */
	MX23_PAD_PWM3__GPIO_1_29 |
		(MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_NOPULL),
};

/* mxsfb (lcdif) */
@@ -101,6 +133,11 @@ static const struct mxsfb_platform_data mx23evk_mxsfb_pdata __initconst = {
	.ld_intf_width	= STMLCDIF_24BIT,
};

static struct mxs_mmc_platform_data mx23evk_mmc_pdata __initdata = {
	.wp_gpio = MX23EVK_MMC0_WRITE_PROTECT,
	.flags = SLOTF_8_BIT_CAPABLE,
};

static void __init mx23evk_init(void)
{
	int ret;
@@ -110,6 +147,13 @@ static void __init mx23evk_init(void)
	mx23_add_duart();
	mx23_add_auart0();

	/* power on mmc slot by writing 0 to the gpio */
	ret = gpio_request_one(MX23EVK_MMC0_SLOT_POWER, GPIOF_DIR_OUT,
			       "mmc0-slot-power");
	if (ret)
		pr_warn("failed to request gpio mmc0-slot-power: %d\n", ret);
	mx23_add_mxs_mmc(0, &mx23evk_mmc_pdata);

	ret = gpio_request_one(MX23EVK_LCD_ENABLE, GPIOF_DIR_OUT, "lcd-enable");
	if (ret)
		pr_warn("failed to request gpio lcd-enable: %d\n", ret);