Skip to contentSkip to conversation

HSMMC: Fix boot crash on boards without gpio_cd set

PATCH New Grazvydas Ignotas 4 participants 7 messages Nov 14, 2008

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 HSMMC: Fix boot crash on boards without gpio_cd set

If .gpio_cd is -EINVAL, twl_mmc_late_init() is not called and hsmmc[x].mmc is not set, so don't use it in twl_mmc*_set_power().

---
 arch/arm/mach-omap2/mmc-twl4030.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
arch/arm/mach-omap2/mmc-twl4030.c +4 -3
index 0ea6ba6..626d668 100644
@@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
 	u32 reg;
 	int ret = 0;
 	struct twl_mmc_controller *c = &hsmmc[0];
+	struct omap_mmc_platform_data *mmc = dev->platform_data;
 
 	if (power_on) {
 		if (cpu_is_omap2430()) {
@@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
 			omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1);
 		}
 
-		if (c->mmc->slots[0].internal_clock) {
+		if (mmc->slots[0].internal_clock) {
 			reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
 			reg |= OMAP2_MMCSDIO1ADPCLKISEL;
 			omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0);
@@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on,
 static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vdd)
 {
 	int ret;
-
 	struct twl_mmc_controller *c = &hsmmc[1];
+	struct omap_mmc_platform_data *mmc = dev->platform_data;
 
 	if (power_on) {
-		if (c->mmc->slots[0].internal_clock) {
+		if (mmc->slots[0].internal_clock) {
 			u32 reg;
 
 			reg = omap_ctrl_readl(control_devconf1_offset);
Signature · 1 line
1.5.4.3
#1 lore raw

PATCH 1/1 HSMMC: Add MMC configuration for pandora

This patch enables both SD slots with support of card detect and write protect switch on OMAP3 Pandora.

---
 arch/arm/mach-omap2/board-omap3pandora.c |   41 ++++++++++++++++++++++--------
 1 files changed, 30 insertions(+), 11 deletions(-)
arch/arm/mach-omap2/board-omap3pandora.c +30 -11
index 48f7d26..69517a5 100644
@@ -144,14 +144,44 @@ static void __init omap3pandora_flash_init(void)
 	}
 }
 
+static struct twl4030_hsmmc_info omap3pandora_mmc[] = {
+	{
+		.mmc		= 1,
+		.wires		= 4,
+		.gpio_cd	= -EINVAL,
+		.gpio_wp	= 126,
+		.ext_clock	= 0,
+	},
+	{
+		.mmc		= 2,
+		.wires		= 4,
+		.gpio_cd	= -EINVAL,
+		.gpio_wp	= 127,
+		.ext_clock	= 1,
+	},
+	{}	/* Terminator */
+};
+
 static struct omap_uart_config omap3pandora_uart_config __initdata = {
 	.enabled_uarts	= (1 << 2), /* UART3 */
 };
 
+static int omap3pandora_twl_gpio_setup(struct device *dev,
+		unsigned gpio, unsigned ngpio)
+{
+	/* gpio + {0,1} is "mmc{0,1}_cd" (input/IRQ) */
+	omap3pandora_mmc[0].gpio_cd = gpio + 0;
+	omap3pandora_mmc[1].gpio_cd = gpio + 1;
+	hsmmc_init(omap3pandora_mmc);
+
+	return 0;
+}
+
 static struct twl4030_gpio_platform_data omap3pandora_gpio_data = {
 	.gpio_base	= OMAP_MAX_GPIO_LINES,
 	.irq_base	= TWL4030_GPIO_IRQ_BASE,
 	.irq_end	= TWL4030_GPIO_IRQ_END,
+	.setup		= omap3pandora_twl_gpio_setup,
 };
 
 static struct twl4030_usb_data omap3pandora_usb_data = {
@@ -257,16 +287,6 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
 	&omap3pandora_lcd_device,
 };
 
-static struct twl4030_hsmmc_info mmc[] __initdata = {
-	{
-		.mmc		= 1,
-		.wires		= 4,
-		.gpio_cd	= -EINVAL,
-		.gpio_wp	= -EINVAL,
-	},
-	{}	/* Terminator */
-};
-
 static void __init omap3pandora_init(void)
 {
 	omap3pandora_i2c_init();
@@ -277,7 +297,6 @@ static void __init omap3pandora_init(void)
 	omap_serial_init();
 	spi_register_board_info(omap3pandora_spi_board_info,
 			ARRAY_SIZE(omap3pandora_spi_board_info));
-	hsmmc_init(mmc);
 	usb_musb_init();
 	usb_ehci_init();
 	omap3pandora_flash_init();
Signature · 1 line
1.5.4.3
#2 lore raw

Re: [PATCH] HSMMC: Add MMC configuration for pandora

Quoted 2 lines · Grazvydas Ignotas

This patch enables both SD slots with support of card detect and write protect switch on OMAP3 Pandora.

Nice milestone for a Friday. :)

Weren't you working on getting the SDIO WLAN adapter on the third slot to behave too?

- Dave

#3 lore raw

Re: [PATCH] HSMMC: Add MMC configuration for pandora

Quoted 5 lines · David Brownell
Quoted 2 lines · Grazvydas Ignotas

This patch enables both SD slots with support of card detect and write protect switch on OMAP3 Pandora.

Nice milestone for a Friday. :)

May be, but it still needs some nasty hack in the host driver to work. The driver relies on voltage setting in the host controller register, but that is fixed to 1.8V for MMC2 and doesn't represent real voltage used for the card.

Quoted 2 lines

Weren't you working on getting the SDIO WLAN adapter on the third slot to behave too?

yeah, not much progress with that yet, though..

#4 lore raw

Re: [PATCH] HSMMC: Add MMC configuration for pandora

Quoted 6 lines · Grazvydas Ignotas
Quoted 5 lines · David Brownell
Quoted 2 lines · Grazvydas Ignotas

This patch enables both SD slots with support of card detect and write protect switch on OMAP3 Pandora.

Nice milestone for a Friday. :)

Quoted 8 lines

May be, but it still needs some nasty hack in the host driver to work. The driver relies on voltage setting in the host controller register, but that is fixed to 1.8V for MMC2 and doesn't represent real voltage used for the card.

Quoted 2 lines

Weren't you working on getting the SDIO WLAN adapter on the third slot to behave too?

yeah, not much progress with that yet, though..

Which adapter are you using? I've got the libertas_sdio driver working on mmc2.

Steve

#5 lore raw

Re: [PATCH] HSMMC: Add MMC configuration for pandora

Quoted 6 lines · Steve Sakoman
Quoted 4 lines
Quoted 2 lines

Weren't you working on getting the SDIO WLAN adapter on the third slot to behave too?

yeah, not much progress with that yet, though..

Which adapter are you using?  I've got the libertas_sdio driver working on mmc2.

The issue I referred to was the way mmc3 isn't yet supported at all in that code ...

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

maintainer
#6 lore raw

Re: [PATCH] HSMMC: Add MMC configuration for pandora

In reply to Grazvydas Ignotas
Quoted 6 lines · Grazvydas Ignotas
Quoted 5 lines · David Brownell
Quoted 2 lines · Grazvydas Ignotas

This patch enables both SD slots with support of card detect and write protect switch on OMAP3 Pandora.

Nice milestone for a Friday. :)

Quoted 8 lines

May be, but it still needs some nasty hack in the host driver to work. The driver relies on voltage setting in the host controller register, but that is fixed to 1.8V for MMC2 and doesn't represent real voltage used for the card.

Quoted 2 lines

Weren't you working on getting the SDIO WLAN adapter on the third slot to behave too?

yeah, not much progress with that yet, though..

Pushed both.

Tony