Hi Rowboat and Beagle friends,
With 2.6.32, I have fully working SD card interface via 2nd MMC on a
DM3730 board based on Beagle-XM. That is, upon insertion of the SD
card, I see:
mmc1: new SD card at address a95c
mmcblk1: mmc1:a95c SD128 120 MiB
mmcblk1: p1
# mkdir /tmp/b
root@localhost:/# mount /dev/block/mmcblk1p1 /tmp/b
root@localhost:/# find /tmp/b
/tmp/b
/tmp/b/files
<snip>
So everything is happy.
With 2.6.37 on the same setup, I'm not able to talk to 2nd MMC and am
having difficulty figuring out why not. Here's what I see upon
insertion of the SD card:
# [ 42.995117] mmc1: mmc_rescan: trying to init card at 400000 Hz
[ 43.001525] twl4030ldo_set_voltage:343 min=3100000, max=3150000
[ 120.837036] mmc1: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 19 width
0 timing 0
[ 120.861968] mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 19
width 0 timing 0
[ 120.885284] mmc1: starting CMD52 arg 00000c00 flags 00000195
[ 120.885284] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD52, argument 0x00000c00
[ 120.885711] mmc1: req done (CMD52): -110: 00000000 00000000 00000000 00000000
[ 120.885742] mmc1: starting CMD52 arg 80000c08 flags 00000195
[ 120.885772] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD52, argument 0x80000c08
[ 120.886169] mmc1: req done (CMD52): -110: 00000000 00000000 00000000 00000000
[ 120.886199] mmc1: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 19
width 0 timing 0
[ 120.887207] mmc1: starting CMD0 arg 00000000 flags 000000c0
[ 120.887237] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD0, argument 0x00000000
[ 120.887451] mmc1: req done (CMD0): 0: 00000000 00000000 00000000 00000000
[ 120.888458] mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 19
width 0 timing 0
[ 120.889465] mmc1: starting CMD8 arg 000001aa flags 000002f5
[ 120.889495] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD8, argument 0x000001aa
[ 120.889892] mmc1: req done (CMD8): -110: 00000000 00000000 00000000 00000000
[ 120.889923] mmc1: starting CMD5 arg 00000000 flags 000002e1
[ 120.889953] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x00000000
[ 120.890350] mmc1: req failed (CMD5): -110, retrying...
[ 120.890350] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x00000000
[ 120.890777] mmc1: req failed (CMD5): -110, retrying...
[ 120.890777] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x00000000
[ 120.891174] mmc1: req failed (CMD5): -110, retrying...
[ 120.891204] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x00000000
[ 120.891601] mmc1: req done (CMD5): -110: 00000000 00000000 00000000 00000000
[ 120.891632] mmc1: starting CMD55 arg 00000000 flags 000000f5
[ 120.891632] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x00000000
[ 120.892059] mmc1: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 120.892089] mmc1: starting CMD55 arg 00000000 flags 000000f5
[ 120.892089] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x00000000
[ 120.892517] mmc1: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 120.892517] mmc1: starting CMD55 arg 00000000 flags 000000f5
[ 120.892547] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x00000000
[ 120.892944] mmc1: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 120.892974] mmc1: starting CMD55 arg 00000000 flags 000000f5
[ 120.893005] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x00000000
[ 120.893402] mmc1: req done (CMD55): -110: 00000000 00000000 00000000 00000000
[ 120.893432] mmc1: starting CMD1 arg 00000000 flags 000000e1
[ 120.893432] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD1, argument 0x00000000
[ 120.893859] mmc1: req done (CMD1): -110: 00000000 00000000 00000000 00000000
[ 120.893890] mmc1: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
As shown above, mmc1 detection fails. I put debug into the twl4030
regulator code since I suspect that the VMMC2 regulator on the
TPS65950 isn't getting enabled. When I measure the voltage at the
VMMC2 pin of the SD card connector (with 2.6.37 running) and the SD
inserted, I see it reading 0V. With 2.6.32, I see the same pin read as
3.11V. That said, the call to twl4030ldo_set_voltage succeeds and I
don't see any errors reported about regulators or voltage. I've got
regulator debug and mmc debug enabled and still don't see any error
messages. Here's the bootup regulator report on 2.6.37:
[ 0.037567] omap_device: omap_i2c.1: new worst case activate latency 0: 30517
[ 0.045532] omap_i2c omap_i2c.1: bus 1 rev4.0 at 2600 kHz
[ 0.048492] twl4030: PIH (irq 7) chaining IRQs 368..375
[ 0.048522] twl4030: power (irq 373) chaining IRQs 376..383
[ 0.049072] twl4030: gpio (irq 368) chaining IRQs 384..401
[ 0.051818] regulator: VUSB1V5: 1500 mV normal standby
[ 0.052520] regulator: VUSB1V8: 1800 mV normal standby
[ 0.053222] regulator: VUSB3V1: 3100 mV normal standby
[ 0.056610] twl4030_usb twl4030_usb: Initialized TWL4030 USB module
[ 0.057891] regulator: VMMC1: 1850 <--> 3150 mV at 3000 mV normal standby
[ 0.058563] regulator: VDAC: 1800 mV normal standby
[ 0.059265] regulator: VDVI: 1800 mV normal standby
[ 0.060028] regulator: VMMC2: 1850 <--> 3150 mV at 2600 mV normal standby
[ 0.060791] regulator: VSIM: 1800 <--> 3000 mV at 1800 mV normal standby
[ 0.061523] twl4030ldo_set_voltage:343 min=1800000, max=1800000
[ 0.061614] regulator: VAUX3: 1800 mV normal standby
[ 0.062316] twl4030ldo_set_voltage:343 min=1800000, max=1800000
[ 0.062408] regulator: VAUX4: 1800 mV normal standby
All looks fine, just like with 2.6.32, which shows:
i2c_omap i2c_omap.1: bus 1 rev4.0 at 2600 kHz
twl4030: PIH (irq 7) chaining IRQs 368..375
twl4030: power (irq 373) chaining IRQs 376..383
twl4030: gpio (irq 368) chaining IRQs 384..401
regulator: VUSB1V5: 1500 mV normal standby
regulator: VUSB1V8: 1800 mV normal standby
regulator: VUSB3V1: 3100 mV normal standby
twl4030_usb twl4030_usb: Initialized TWL4030 USB module
regulator: VMMC1: 1850 <--> 3150 mV normal standby
regulator: VDAC: 1800 mV normal standby
regulator: VPLL2: 1800 mV normal standby
regulator: VMMC2: 1850 <--> 3150 mV normal standby
regulator: VSIM: 1800 <--> 3000 mV normal standby
regulator: VAUX1: 3000 mV normal standby
i2c_omap i2c_omap.2: bus 2 rev4.0 at 400 kHz
i2c_omap i2c_omap.3: bus 3 rev4.0 at 100 kHz
I'm scratching my head as to where things are going wrong. Here's the
code I'm using on 2.6.37:
static struct omap2_hsmmc_info mmc[] = {
{
.mmc = 1,
.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
.gpio_wp = -EINVAL,
},
#if 1
{
.mmc = 2,
.caps = MMC_CAP_4_BIT_DATA,
.transceiver = true,
.gpio_wp = 108,
.gpio_cd = 107,
},
#endif
#ifdef CONFIG_WL12XX_PLATFORM_DATA
{
.name = "wl1271",
.mmc = 3,
.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
.gpio_wp = -EINVAL,
.gpio_cd = -EINVAL,
.ocr_mask = MMC_VDD_165_195,
.nonremovable = true,
},
#endif
{} /* Terminator */
};
static struct regulator_consumer_supply wiser2_vmmc2_supply = {
.supply = "vmmc",
};
static int wiser2_twl_gpio_setup(struct device *dev,
unsigned gpio, unsigned ngpio)
{
/* gpio + 0 is "mmc0_cd" (input/IRQ) */
mmc[0].gpio_cd = gpio + 0;
omap2_hsmmc_init(mmc);
/* link regulators to MMC adapters */
wiser2_vmmc1_supply.dev = mmc[0].dev;
wiser2_vmmc2_supply.dev = mmc[1].dev;
static struct regulator_init_data wiser2_vmmc2 = {
.constraints = {
.min_uV = 1850000,
.max_uV = 3150000,
.valid_modes_mask = REGULATOR_MODE_NORMAL
> REGULATOR_MODE_STANDBY,
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
> REGULATOR_CHANGE_MODE
> REGULATOR_CHANGE_STATUS,
},
.num_consumer_supplies = 1,
.consumer_supplies = &wiser2_vmmc2_supply,
};
static struct twl4030_platform_data wiser2_twldata = {
.irq_base = TWL4030_IRQ_BASE,
.irq_end = TWL4030_IRQ_END,
/* platform_data for children goes here */
.usb = &wiser2_usb_data,
.gpio = &wiser2_gpio_data,
.codec = &wiser2_codec_data,
.vmmc1 = &wiser2_vmmc1,
.vmmc2 = &wiser2_vmmc2,
.vsim = &wiser2_vsim,
.vdac = &wiser2_vdac,
.vpll2 = &wiser2_vpll2,
.vaux3 = &wiser2_vaux3,
.vaux4 = &wiser2_vaux4,
};
Any advice or debug suggestions would be greatly welcome.
btw, MMC1 (mmc0) and MMC3 (mmc2) work fine on 2.6.37.
[ 4.435211] mmc0: mmc_rescan: trying to init card at 400000 Hz
[ 4.441772] twl4030ldo_set_voltage:343 min=3100000, max=3150000
[ 5.010437] mmc0: new high speed SD card at address 0002
[ 5.016479] mmcblk0: mmc0:0002 00000 1.86 GiB
[ 5.025177] mmcblk0: p1 p2 p3
[ 5.029602] mmc2: mmc_rescan: trying to init card at 400000 Hz
[ 5.155975] mmc2: card claims to support voltages below the defined
range. These will be ignored.
[ 5.204559] mmc2: queuing unknown CIS tuple 0x91 (3 bytes)
[ 5.213623] mmc2: new SDIO card at address 0001
Thanks,
jaya