Hi , I tested the patch on the OMAP 3 EVM. I still find that the hotplug feature does not work on the OMAP3 EVM. The issue is that if I read the gpio_cd, I am getting the correct value on the gpio pin(INSERT = 0, PLUGOUT = 1) but the interrupts are not generated. The mmc0 interrupts always shows 0. root@xxxxxxxxxxxxx:~# cat /proc/interrupts CPU0 11: 0 INTC prcm 12: 4 INTC DMA 25: 0 INTC dispc 37: 1724 INTC gp timer 56: 267 INTC i2c_omap 57: 0 INTC i2c_omap 61: 0 INTC i2c_omap 72: 178 INTC serial idle, serial 73: 1 INTC serial idle 74: 1 INTC serial idle 83: 43 INTC mmc0 92: 0 INTC musb_hdrc 93: 0 INTC musb_hdrc 335: 0 GPIO ads7846 336: 3565 GPIO eth0 369: 0 twl4030 twl4030_keypad 378: 0 twl4030 twl4030_usb 384: 0 twl4030 mmc0 Err: 0 Regards Mani > -----Original Message----- > From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap- > owner@xxxxxxxxxxxxxxx] On Behalf Of David Brownell > Sent: Thursday, February 05, 2009 4:53 AM > To: OMAP > Subject: [patch/rft 2.6.29-rc3-omap-git] omap3 evm: MMC switch support > > Update OMAP3 EVM board support to support the MMC/SD switches, > when used with the twl4030 based power card. > > Also, less usefully, LEDB as a GPIO LED ... it's on the underside > of the board, so it's probably not very useful to most folk. The > LCD backlight is controlled by LEDA though; more useful, though > its PWM mode might not be practical on this board (I don't know > how that inductor will affect things). > > This is done from schematics, so it needs testing (and maybe some > bugfixes) from folk with an EVM board. > > - Dave > > --- > arch/arm/mach-omap2/board-omap3evm.c | 69 ++++++++++++++++++++++++++------ > arch/arm/mach-omap2/mux.c | 2 > arch/arm/plat-omap/include/mach/mux.h | 1 > 3 files changed, 61 insertions(+), 11 deletions(-) > > --- a/arch/arm/mach-omap2/board-omap3evm.c > +++ b/arch/arm/mach-omap2/board-omap3evm.c > @@ -19,6 +19,7 @@ > #include <linux/err.h> > #include <linux/clk.h> > #include <linux/input.h> > +#include <linux/leds.h> > > #include <linux/spi/spi.h> > #include <linux/spi/ads7846.h> > @@ -31,6 +32,7 @@ > > #include <mach/gpio.h> > #include <mach/board.h> > +#include <mach/mux.h> > #include <mach/usb-musb.h> > #include <mach/usb-ehci.h> > #include <mach/common.h> > @@ -88,10 +90,66 @@ static struct omap_uart_config omap3_evm > .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), > }; > > +static struct twl4030_hsmmc_info mmc[] = { > + { > + .mmc = 1, > + .wires = 4, > + .gpio_cd = -EINVAL, > + .gpio_wp = 63, > + }, > + {} /* Terminator */ > +}; > + > +static struct gpio_led gpio_leds[] = { > + { > + .name = "omap3evm::ledb", > + /* normally not visible (board underside) */ > + .default_trigger = "default-on", > + .gpio = -EINVAL, /* gets replaced */ > + .active_low = true, > + }, > +}; > + > +static struct gpio_led_platform_data gpio_led_info = { > + .leds = gpio_leds, > + .num_leds = ARRAY_SIZE(gpio_leds), > +}; > + > +static struct platform_device leds_gpio = { > + .name = "leds-gpio", > + .id = -1, > + .dev = { > + .platform_data = &gpio_led_info, > + }, > +}; > + > + > +static int omap3evm_twl_gpio_setup(struct device *dev, > + unsigned gpio, unsigned ngpio) > +{ > + /* gpio + 0 is "mmc0_cd" (input/IRQ) */ > + omap_cfg_reg(L8_34XX_GPIO63); > + mmc[0].gpio_cd = gpio + 0; > + twl4030_mmc_init(mmc); > + > + /* Most GPIOs are for USB OTG. Some are mostly sent to > + * the P2 connector; notably LEDA for the LCD backlight. > + */ > + > + /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */ > + gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; > + > + platform_device_register(&leds_gpio); > + > + return 0; > +} > + > static struct twl4030_gpio_platform_data omap3evm_gpio_data = { > .gpio_base = OMAP_MAX_GPIO_LINES, > .irq_base = TWL4030_GPIO_IRQ_BASE, > .irq_end = TWL4030_GPIO_IRQ_END, > + .use_leds = true, > + .setup = omap3evm_twl_gpio_setup, > }; > > static struct twl4030_usb_data omap3evm_usb_data = { > @@ -232,16 +290,6 @@ static struct platform_device *omap3_evm > &omap3evm_smc911x_device, > }; > > -static struct twl4030_hsmmc_info mmc[] __initdata = { > - { > - .mmc = 1, > - .wires = 4, > - .gpio_cd = -EINVAL, > - .gpio_wp = -EINVAL, > - }, > - {} /* Terminator */ > -}; > - > static void __init omap3_evm_init(void) > { > omap3_evm_i2c_init(); > @@ -254,7 +302,6 @@ static void __init omap3_evm_init(void) > ARRAY_SIZE(omap3evm_spi_board_info)); > > omap_serial_init(); > - twl4030_mmc_init(mmc); > usb_musb_init(); > usb_ehci_init(); > omap3evm_flash_init(); > --- a/arch/arm/mach-omap2/mux.c > +++ b/arch/arm/mach-omap2/mux.c > @@ -463,6 +463,8 @@ MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0, > OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) > MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18, > OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) > +MUX_CFG_34XX("L8_34XX_GPIO63", 0x0ce, > + OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT) > MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c, > OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT_PULLUP) > MUX_CFG_34XX("AE6_34XX_GPIO141", 0x16e, > --- a/arch/arm/plat-omap/include/mach/mux.h > +++ b/arch/arm/plat-omap/include/mach/mux.h > @@ -792,6 +792,7 @@ enum omap34xx_index { > J25_34XX_GPIO170, > AF26_34XX_GPIO0, > AF22_34XX_GPIO9, > + L8_34XX_GPIO63, > AF6_34XX_GPIO140_UP, > AE6_34XX_GPIO141, > AF5_34XX_GPIO142, > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html