I want to work SD card interface MMC3 2nd MMC on a DM3730 board based on 
beagle-xm .but I dont know how to do. i know you have finished it.please 
tell me you how to do it. thank you very much . 

On Thursday, May 10, 2012 11:52:45 PM UTC+8, Jaya Kumar wrote:
>
> 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 
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to