On Thu, Jul 30, 2009 at 11:49 AM, John Sarman<johnsarman@xxxxxxxxx> wrote: > I am trying to use mmc3 on the Overo Gumstix board with no luck. I > have patched the kernel with the latest changes and have yet to see a > clk pulse, both before and after the patches. After adding some debugging printks, I have determined the mmc3 fails getting IRQ mmci-omap-hs mmci-omap-hs.0: Failed to get debounce clock REQUEST IRQ = 83 HOST = -812068416 mmci-omap-hs mmci-omap-hs.1: Failed to get debounce clock REQUEST IRQ = 86 HOST = -812067392 mmci-omap-hs mmci-omap-hs.2: Failed to get debounce clock REQUEST IRQ = 83 HOST = -812066368 mmci-omap-hs mmci-omap-hs.2: Unable to grab HSMMC IRQ mmci-omap-hs mmci-omap-hs.2: Probe Failed mmci-omap-hs: probe of mmci-omap-hs.2 failed with error -16 For some reason mmc1 and mmc3 ask for the same interrupt 83 ??? Why would this be assigned the same value? > So far I have reconfigured the pins with uboot to GPIO and tested each > pin to verify that the signals are connected properly. That test > passed. > Then I reconfigured them back to MODE 2(mmc modes) for each pin. I am > confident that the level transceiver(TXS0108ERGYR) is operating > properly. This transceiver is automatic so no external controls are > necessary. > > > <u-boot_snip> > MUX_VAL(CP(ETK_CLK_ES2), (IDIS | PTU | EN | M2)) /*MMC3_CLK*/\ > MUX_VAL(CP(ETK_CTL_ES2), (IEN | PTU | EN | M2)) /*MMC3_CMD*/\ > MUX_VAL(CP(ETK_D3_ES2), (IEN | PTU | EN | M2)) /*MMC3_DAT3*/\ > MUX_VAL(CP(ETK_D4_ES2), (IEN | PTU | EN | M2)) /*MMC3_DAT0*/\ > MUX_VAL(CP(ETK_D5_ES2), (IEN | PTU | EN | M2)) /*MMC3_DAT1*/\ > MUX_VAL(CP(ETK_D6_ES2), (IEN | PTU | EN | M2)) /*MMC3_DAT2*/\ > </u-boot_snip> > > <mmc_params> > // I Switched mmc 2 and 3 in a feeble attempt. Also I removed 2 in an > earlier attempt and the kernel would not boot ??????? > // Also I have tested working gpio connected to CD and WP but not > attempting to tackle that yet. > static struct twl4030_hsmmc_info mmc[] = { > { > .mmc = 1, > .wires = 4, > .gpio_cd = -EINVAL, > .gpio_wp = -EINVAL, > }, > { > .mmc = 3, > .wires = 4, > .gpio_cd = -EINVAL, > .gpio_wp = -EINVAL, > }, > { > .mmc = 2, > .wires = 4, > .gpio_cd = -EINVAL, > .gpio_wp = -EINVAL, > .transceiver = true, > .ocr_mask = 0x00100000, /* 3.3V */ > }, > {} /* Terminator */ > }; > </mmc_params> > > <twl_setup> > > static int overo_twl_gpio_setup(struct device *dev, > unsigned gpio, unsigned ngpio) > { > twl4030_mmc_init(mmc); <-- mmc params passed to init > > overo_vmmc1_supply.dev = mmc[0].dev; > > return 0; > } > static struct twl4030_gpio_platform_data overo_gpio_data = { > .gpio_base = OMAP_MAX_GPIO_LINES, > .irq_base = TWL4030_GPIO_IRQ_BASE, > .irq_end = TWL4030_GPIO_IRQ_END, > .setup = overo_twl_gpio_setup, > <----- setup passed into the twl4030 gpio platform data > }; > > static struct twl4030_platform_data overo_twldata = { > .irq_base = TWL4030_IRQ_BASE, > .irq_end = TWL4030_IRQ_END, > .gpio = &overo_gpio_data, > <--- gpio data passed into twl4030 plat data > .usb = &overo_usb_data, > .power = GENERIC3430_T2SCRIPTS_DATA, > .vmmc1 = &overo_vmmc1, > }; > > static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { > { > I2C_BOARD_INFO("tps65950", 0x48), > .flags = I2C_CLIENT_WAKE, > .irq = INT_34XX_SYS_NIRQ, > .platform_data = &overo_twldata, > }, > }; > > static int __init overo_i2c_init(void) > { > omap_register_i2c_bus(1, 2600, overo_i2c_boardinfo, > ARRAY_SIZE(overo_i2c_boardinfo)); > /* i2c2 pins are used for gpio */ > omap_register_i2c_bus(3, 400, NULL, 0); > return 0; > } > > // i2c_init called first in init. > static void __init overo_init(void) > { > overo_i2c_init(); > ..... > </twl_setup> > > > So the way I see it working is i2c is initialized, which sets up the > twl4030. When the twl4030 configures gpio it initializes the mmc. > mmc0 comes up fine (I have a root File System), but I never get a clk > on mmc3. > > Any help would be greatly appreciated. > > Thanks > John Sarman > -- 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