CONFIG_OMAP_BOOT_TAG=y
 # CONFIG_OMAP_BOOT_REASON is not set
 # CONFIG_OMAP_COMPONENT_VERSION is not set
-# CONFIG_OMAP_GPIO_SWITCH is not set
+CONFIG_OMAP_GPIO_SWITCH=y
 CONFIG_OMAP_MUX=y
 # CONFIG_OMAP_MUX_DEBUG is not set
 CONFIG_OMAP_MUX_WARNINGS=y
 
 obj-$(CONFIG_MACH_OMAP_PALMTT)         += board-palmtt.o
 obj-$(CONFIG_MACH_NOKIA770)            += board-nokia770.o
 obj-$(CONFIG_MACH_AMS_DELTA)           += board-ams-delta.o
-obj-$(CONFIG_MACH_SX1)                 += board-sx1.o
+obj-$(CONFIG_MACH_SX1)                 += board-sx1.o board-sx1-mmc.o
 
 ifeq ($(CONFIG_ARCH_OMAP15XX),y)
 # Innovator-1510 FPGA
 
 #include <asm/mach/map.h>
 
 #include <asm/arch/gpio.h>
+#include <asm/arch/gpio-switch.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/irda.h>
 #include <asm/arch/usb.h>
 
 static struct omap_mmc_config sx1_mmc_config __initdata = {
        .mmc [0] = {
-               .enabled        = 1,
+               .enabled        = 1,
                .wire4          = 0,
-               .wp_pin         = -1,
-               .power_pin      = -1, /* power is in Sofia */
-               .switch_pin     = OMAP_MPUIO(3),
        },
 };
 
        { OMAP_TAG_LCD, &sx1_lcd_config },
        { OMAP_TAG_UART,        &sx1_uart_config },
 };
+
+static struct omap_gpio_switch sx1_gpio_switches[] __initdata = {
+       {
+               .name                   = "mmc_slot",
+               .gpio                   = OMAP_MPUIO(3),
+               .type                   = OMAP_GPIO_SWITCH_TYPE_COVER,
+               .debounce_rising        = 100,
+               .debounce_falling       = 0,
+               .notify                 = sx1_mmc_slot_cover_handler,
+               .notify_data            = NULL,
+       },
+};
+
 /*-----------------------------------------*/
 
 extern void __init sx1_mmc_init(void);
        omap_board_config_size = ARRAY_SIZE(sx1_config);
        omap_serial_init();
        omap_register_i2c_bus(1, 100, NULL, 0);
+       sx1_mmc_init();
+       omap_register_gpio_switches(sx1_gpio_switches,
+                                   ARRAY_SIZE(sx1_gpio_switches));
 
        /* turn on USB power */
        /* sx1_setusbpower(1); cant do it here because i2c is not ready */