[PATCH v2] omap4: pandaboard: fix up mmc card detect logic

Nishanth Menon nm at ti.com
Tue Oct 19 10:50:25 EDT 2010

From: Menon, Nishanth <nm at ti.com>

For MMC1 Controller, card detect interrupt source is
twl6030 which is non-gpio. The card detect call back function provides
card present/absent status by reading MMC Control register present
on twl6030. This functionality was introduced in mfd tree on
track to kernel.org

Sync pandaboard to the same and make mmc work.

Cc: Tony Lindgren <tony at atomide.com>
Cc: Madhusudhan Chikkature <madhu.cr at ti.com>
Cc: Adrian Hunter <adrian.hunter at nokia.com>
Cc: Samuel Ortiz <sameo at linux.intel.com>

Acked-by: Kishore Kadiyala <kishore.kadiyala at ti.com>
Signed-off-by: Nishanth Menon <nm at ti.com>
Tested-by: Jarkko Nikula <jhnikula at gmail.com>
Acked-by: Madhusudhan Chikkature <madhu.cr at ti.com>
Acked-by: Tony Lindgren <tony at atomide.com>
v2: reposting to l-a, l-o
Depends on 

 arch/arm/mach-omap2/board-omap4panda.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 702f2a6..1ecd0a6 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -160,10 +160,19 @@ static int omap4_twl6030_hsmmc_late_init(struct device *dev)
 				struct platform_device, dev);
 	struct omap_mmc_platform_data *pdata = dev->platform_data;
+	if (!pdata) {
+		dev_err(dev, "%s: NULL platform data\n", __func__);
+		return -EINVAL;
+	}
 	/* Setting MMC1 Card detect Irq */
-	if (pdev->id == 0)
-		pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE +
+	if (pdev->id == 0) {
+		ret = twl6030_mmc_card_detect_config();
+		 if (ret)
+			dev_err(dev, "%s: Error card detect config(%d)\n",
+				__func__, ret);
+		 else
+			pdata->slots[0].card_detect = twl6030_mmc_card_detect;
+	}
 	return ret;

More information about the linux-arm-kernel mailing list