Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

omap4: pandaboard: fix up mmc card detect logic

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@atomide.com>
Cc: Madhusudhan Chikkature <madhu.cr@ti.com>
Cc: Adrian Hunter <adrian.hunter@nokia.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>

Acked-by: Kishore Kadiyala <kishore.kadiyala@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Tested-by: Jarkko Nikula <jhnikula@gmail.com>
Acked-by: Madhusudhan Chikkature <madhu.cr@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Menon, Nishanth and committed by
Samuel Ortiz
bf56f0a6 47dabaee

+12 -3
+12 -3
arch/arm/mach-omap2/board-omap4panda.c
··· 160 160 struct platform_device, dev); 161 161 struct omap_mmc_platform_data *pdata = dev->platform_data; 162 162 163 + if (!pdata) { 164 + dev_err(dev, "%s: NULL platform data\n", __func__); 165 + return -EINVAL; 166 + } 163 167 /* Setting MMC1 Card detect Irq */ 164 - if (pdev->id == 0) 165 - pdata->slots[0].card_detect_irq = TWL6030_IRQ_BASE + 166 - MMCDETECT_INTR_OFFSET; 168 + if (pdev->id == 0) { 169 + ret = twl6030_mmc_card_detect_config(); 170 + if (ret) 171 + dev_err(dev, "%s: Error card detect config(%d)\n", 172 + __func__, ret); 173 + else 174 + pdata->slots[0].card_detect = twl6030_mmc_card_detect; 175 + } 167 176 return ret; 168 177 } 169 178