[ARM] 3446/1: i.MX: MMC/SD SDHC controller registration for i.MX/MX1 MX1ADS board
authorPavel Pisa <ppisa@pikron.com>
Sun, 2 Apr 2006 15:58:38 +0000 (16:58 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 2 Apr 2006 15:58:38 +0000 (16:58 +0100)
Patch from Pavel Pisa

From: Stefano Fedrigo <aleph@develer.com>

This adds to the MX1ADS platform the needed code to detect
insertion/removal of an MMC/SD card.  Tested on a v1.1 board.

Signed-off-by: Stefano Fedrigo <aleph@develer.com>
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-imx/mx1ads.c

index 8ab1b04..e34d0df 100644 (file)
@@ -25,6 +25,7 @@
 #include <asm/mach-types.h>
 
 #include <asm/mach/arch.h>
+#include <asm/arch/mmc.h>
 #include <linux/interrupt.h>
 #include "generic.h"
 
@@ -51,12 +52,29 @@ static struct platform_device *devices[] __initdata = {
        &cs89x0_device,
 };
 
+#ifdef CONFIG_MMC_IMX
+static int mx1ads_mmc_card_present(void)
+{
+       /* MMC/SD Card Detect is PB 20 on MX1ADS V1.0.7 */
+       return (SSR(1) & (1 << 20) ? 0 : 1);
+}
+
+static struct imxmmc_platform_data mx1ads_mmc_info = {
+       .card_present = mx1ads_mmc_card_present,
+};
+#endif
+
 static void __init
 mx1ads_init(void)
 {
 #ifdef CONFIG_LEDS
        imx_gpio_mode(GPIO_PORTA | GPIO_OUT | 2);
 #endif
+#ifdef CONFIG_MMC_IMX
+       /* SD/MMC card detect */
+       imx_gpio_mode(GPIO_PORTB | GPIO_GIUS | GPIO_IN | 20);
+       imx_set_mmc_info(&mx1ads_mmc_info);
+#endif
        platform_add_devices(devices, ARRAY_SIZE(devices));
 }