This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
I am trying to get an embedded eMMC device communicating with our Linux host running on a DM365 custom hardware. The chip is on-board and not within an SD card. We started with LSP 2.10.00.14 (DVSDK 2.10.01.18). I guess the original LSP distribution did nopt support SDHC cards (4G or greater), but I found the following patch'
http://processors.wiki.ti.com/index.php/How_to_use_SDHC_on_DM365_with_MontaVista_5.0
I applied the kernel patch stated, and seem to be having the same old issues. The MMCBLK0 device never shows up in the /dev directory, and the driver seems to be polling as shown in my DMESG log. It should be noted that I do see a 200KHz CLK on MMCSD0_CLK and also data on MMCSD0_CMD lines.
I need help diagnosing this problem.
Thanks
# dmesg
[ 6.400000] io scheduler noop registered
<6>[ 6.400000] io scheduler anticipatory registered (default)
<7>[ 6.410000] <vpbe_encoder_getmode>
<7>[ 6.410000] <vpbe_encoder_getmode/>
<7>[ 6.420000] <vpbe_encoder_getmode>
<7>[ 6.420000] <vpbe_encoder_getmode/>
<4>[ 6.420000] davincifb davincifb.0: dm_osd0_fb: Initial window configuratio
n is invalid.
<6>[ 6.420000] davincifb davincifb.0: dm_osd0_fb: 720x576x16@0,0 with framebu
ffer size 2025KB
<6>[ 6.430000] davincifb davincifb.0: dm_vid0_fb: 0x0x16@0,0 with framebuffer
size 1020KB
<7>[ 6.430000] <vpbe_encoder_getmode>
<7>[ 6.430000] <vpbe_encoder_getmode/>
<7>[ 6.430000] <vpbe_encoder_getmode>
<7>[ 6.430000] <vpbe_encoder_getmode/>
<6>[ 6.440000] davincifb davincifb.0: dm_osd1_fb: 720x480x4@0,0 with framebuf
fer size 675KB
<6>[ 6.440000] davincifb davincifb.0: dm_vid1_fb: 0x0x16@0,0 with framebuffer
size 1020KB
<6>[ 6.450000] DAVINCI-WDT: DaVinci Watchdog Timer: heartbeat 60 sec
<5>[ 6.450000] imp serializer initialized
<5>[ 6.450000] davinci_previewer initialized
<5>[ 6.450000] davinci_resizer initialized
<6>[ 6.450000] Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ shari
ng disabled
<6>[ 6.460000] serial8250.0: ttyS0 at MMIO map 0x1c20000 mem 0xfbc20000 (irq
= 40) is a 16550A
<6>[ 6.470000] serial8250.0: ttyS1 at MMIO map 0x1d06000 mem 0xfbd06000 (irq
= 41) is a 16550A
<6>[ 6.490000] Linux video capture interface: v2.00
<5>[ 6.490000] vpfe_init
<4>[ 6.490000] MUX: initialized VIN_CAM_WEN
<7>[ 6.500000]
<4>[ 6.500000] starting ccdc_reset...<7>
<4>[ 6.500000] End of ccdc_reset...<5>vpfe_probe
<5>[ 6.510000] vpfe ccdc capture vpfe ccdc capture.1: vpif_register_decoder:
decoder = adv7180
<7>[ 6.520000] <davinci_display_init>
<5>[ 6.520000] Trying to register davinci display video device.
<5>[ 6.530000] layer=c09fcc00,layer->video_dev=c09fcd60
<5>[ 6.530000] Trying to register davinci display video device.
<5>[ 6.540000] layer=c09fca00,layer->video_dev=c09fcb60
<5>[ 6.550000] davinci_init:DaVinci V4L2 Display Driver V1.0 loaded
<7>[ 6.550000] </davinci_init>
<6>[ 6.550000] af major#: 251, minor# 0
<3>[ 6.560000] AF Driver initialized
<6>[ 6.560000] aew major#: 250, minor# 0
<5>[ 6.570000] AEW Driver initialized
<6>[ 6.570000] i2c /dev entries driver
<6>[ 6.590000] dm_spi.0: davinci SPI Controller driver at 0xc5810000 (irq = 4
2) use_dma=0
<6>[ 6.600000] Initializing USB Mass Storage driver...
<6>[ 6.600000] usbcore: registered new driver usb-storage
<6>[ 6.610000] USB Mass Storage support registered.
<6>[ 6.610000] pegasus: v0.6.13 (2005/11/13), Pegasus/Pegasus II USB Ethernet
driver
<6>[ 6.620000] usbcore: registered new driver pegasus
<6>[ 6.630000] musb_hdrc: version 6.0, cppi-dma, host, debug=0
<6>[ 6.650000] musb_hdrc musb_hdrc: No DMA interrupt line
<7>[ 6.650000] musb_hdrc: ConfigData=0x06 (UTMI-8, dyn FIFOs, SoftConn)
<7>[ 6.650000] musb_hdrc: MHDRC RTL version 1.500
<7>[ 6.650000] musb_hdrc: setup fifo_mode 2
<7>[ 6.650000] musb_hdrc: 8/9 max ep, 3392/4096 memory
<7>[ 6.650000] musb_hdrc: hw_ep 0shared, max 64
<7>[ 6.650000] musb_hdrc: hw_ep 1tx, max 512
<7>[ 6.650000] musb_hdrc: hw_ep 1rx, max 512
<7>[ 6.650000] musb_hdrc: hw_ep 2tx, max 512
<7>[ 6.650000] musb_hdrc: hw_ep 2rx, max 512
<7>[ 6.650000] musb_hdrc: hw_ep 3tx, max 512
<7>[ 6.650000] musb_hdrc: hw_ep 3rx, max 512
<7>[ 6.650000] musb_hdrc: hw_ep 4shared, max 256
<6>[ 6.650000] musb_hdrc: USB Host mode controller at c5812000 using DMA, IRQ
12
<6>[ 6.660000] musb_hdrc musb_hdrc: MUSB HDRC host driver
<6>[ 6.670000] musb_hdrc musb_hdrc: new USB bus registered, assigned bus numb
er 1
<6>[ 6.680000] usb usb1: configuration #1 chosen from 1 choice
<6>[ 6.680000] hub 1-0:1.0: USB hub found
<6>[ 6.690000] hub 1-0:1.0: 1 port detected
<6>[ 6.800000] dummy_hcd dummy_hcd: USB Host+Gadget Emulator, driver 02 May 2
005
<6>[ 6.810000] dummy_hcd dummy_hcd: Dummy host controller
<6>[ 6.810000] dummy_hcd dummy_hcd: new USB bus registered, assigned bus numb
er 2
<6>[ 6.820000] usb usb2: configuration #1 chosen from 1 choice
<6>[ 6.830000] hub 2-0:1.0: USB hub found
<6>[ 6.840000] hub 2-0:1.0: 1 port detected
<7>[ 6.950000] dummy_udc dummy_udc: binding gadget driver 'ether'
<4>[ 6.950000] ether gadget: using random self ethernet address
<4>[ 6.950000] ether gadget: using random host ethernet address
<6>[ 6.960000] usb0: Ethernet Gadget, version: May Day 2005
<6>[ 6.970000] usb0: using dummy_udc, OUT ep-b IN ep-a STATUS ep-c
<6>[ 6.970000] usb0: MAC de:a9:87:94:d5:17
<6>[ 6.980000] usb0: HOST MAC 5e:7c:19:56:90:a1
<6>[ 6.980000] usb0: RNDIS ready
<7>[ 6.990000] dummy_hcd dummy_hcd: port status 0x00010101 has changes
<7>[ 6.990000] dummy_hcd dummy_hcd: port status 0x00010101 has changes
<6>[ 6.990000] davinci-mmc davinci-mmc.0: Supporting 4-bit mode
<7>[ 6.990000] davinci-mmc davinci-mmc.0: max_phys_segs=2
<7>[ 6.990000] davinci-mmc davinci-mmc.0: max_hw_segs=2
<7>[ 6.990000] davinci-mmc davinci-mmc.0: max_sect=256
<7>[ 7.000000] davinci-mmc davinci-mmc.0: max_seg_size=131072
<6>[ 7.000000] davinci-mmc davinci-mmc.0: Using DMA mode
<7>[ 7.000000] mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
<7>[ 7.000000] davinci-mmc davinci-mmc.0: clock 0Hz busmode 1 powermode 0 V
dd 0.00
<7>[ 7.000000] davinci-mmc davinci-mmc.0:
<4>[ 7.000000] Enabling 1 bit mode
<7>[ 7.000000] mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 20 width 0
<7>[ 7.010000] davinci-mmc davinci-mmc.0: clock 0Hz busmode 1 powermode 1 V
dd 0.20
<7>[ 7.010000] davinci-mmc davinci-mmc.0:
<4>[ 7.010000] Enabling 1 bit mode
<6>[ 7.010000] TCP bic registered
<6>[ 7.010000] NET: Registered protocol family 1
<6>[ 7.020000] NET: Registered protocol family 17
<4>[ 7.020000] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
<6>[ 7.030000] Time: timer0_1 clocksource has been installed.
<6>[ 7.030000] Clock event device timer0_0 configured with caps set: 08
<6>[ 7.030000] Switched to high resolution mode on CPU 0
<7>[ 7.030000] mmc0: clock 312500Hz busmode 1 powermode 2 cs 0 Vdd 20 width 0
<7>[ 7.030000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 1 powermode
2 Vdd 0.20
<7>[ 7.030000] davinci-mmc davinci-mmc.0:
<4>[ 7.030000] Enabling 1 bit mode
<6>[ 7.030000] Freeing init memory: 156K
<7>[ 7.050000] mmc0: clock 312500Hz busmode 1 powermode 2 cs 1 Vdd 20 width 0
<7>[ 7.050000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 1 powermode
2 Vdd 0.20
<7>[ 7.050000] davinci-mmc davinci-mmc.0:
<4>[ 7.050000] Enabling 1 bit mode
<7>[ 7.070000] mmc0: starting CMD0 arg 00000000 flags 00000040
<7>[ 7.070000] mmc0: req done (CMD0): 0/0/0: 00000000 00000000 00000000 00000
000
<7>[ 7.090000] mmc0: clock 312500Hz busmode 1 powermode 2 cs 0 Vdd 20 width 0
<7>[ 7.090000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 1 powermode
2 Vdd 0.20
<7>[ 7.090000] davinci-mmc davinci-mmc.0:
<4>[ 7.090000] Enabling 1 bit mode
<7>[ 7.110000] mmc0: starting CMD8 arg 000001aa flags 00000075
<7>[ 7.110000] davinci-mmc davinci-mmc.0: MMCSD: Command t
imeout, CMD8 and status i
s 10
<7>[ 7.110000] mmc0: req done (CMD8): 1/0/0: 00000000 00000000 00000000 00000
000
<7>[ 7.110000] mmc0: starting CMD55 arg 00000000 flags 00000015
<7>[ 7.110000] davinci-mmc davinci-mmc.0: MMCSD: Command t
imeout, CMD55 and status i
s 10
<7>[ 7.110000] mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 0000
0000
<7>[ 7.110000] mmc0: starting CMD55 arg 00000000 flags 00000015
<7>[ 7.110000] davinci-mmc davinci-mmc.0: MMCSD: Command t
imeout, CMD55 and status i
s 10
<7>[ 7.110000] mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 0000
0000
<7>[ 7.110000] mmc0: starting CMD55 arg 00000000 flags 00000015
<7>[ 7.110000] davinci-mmc davinci-mmc.0: MMCSD: Command t
imeout, CMD55 and status i
s 10
<7>[ 7.110000] mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 0000
0000
<7>[ 7.110000] mmc0: starting CMD55 arg 00000000 flags 00000015
<7>[ 7.110000] davinci-mmc davinci-mmc.0: MMCSD: Command t
imeout, CMD55 and status i
s 10
<7>[ 7.110000] mmc0: req done (CMD55): 1/0/0: 00000000 00000000 00000000 0000
0000
<7>[ 7.110000] mmc0: starting CMD1 arg 00000000 flags 00000061
<7>[ 7.110000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.110000] mmc0: clock 312500Hz busmode 1 powermode 2 cs 0 Vdd 20 width 0
<7>[ 7.120000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 1 powermode
2 Vdd 0.20
<7>[ 7.120000] davinci-mmc davinci-mmc.0:
<4>[ 7.120000] Enabling 1 bit mode
<7>[ 7.120000] mmc0: clock 312500Hz busmode 1 powermode 2 cs 1 Vdd 20 width 0
<7>[ 7.120000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 1 powermode
2 Vdd 0.20
<7>[ 7.120000] davinci-mmc davinci-mmc.0:
<4>[ 7.120000] Enabling 1 bit mode
<7>[ 7.140000] mmc0: starting CMD0 arg 00000000 flags 00000040
<7>[ 7.140000] mmc0: req done (CMD0): 0/0/0: 00000000 00000000 00000000 00000
000
<7>[ 7.160000] mmc0: clock 312500Hz busmode 1 powermode 2 cs 0 Vdd 20 width 0
<7>[ 7.160000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 1 powermode
2 Vdd 0.20
<7>[ 7.160000] davinci-mmc davinci-mmc.0:
<4>[ 7.160000] Enabling 1 bit mode
<7>[ 7.180000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.180000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.200000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.200000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.210000] dummy_hcd dummy_hcd: port status 0x00100503 has changes
<7>[ 7.220000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.220000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.240000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.240000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.260000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.260000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<6>[ 7.270000] usb 2-1: new high speed USB device using dummy_hcd and address
2
<7>[ 7.280000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.280000] mmc0: req done (CMD1): 0/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.300000] mmc0: starting CMD1 arg 00100000 flags 00000061
<7>[ 7.300000] davinci-mmc davinci-mmc.0: MMCSD: Command t
imeout, CMD1 and status i
s 10
<7>[ 7.300000] mmc0: req done (CMD1): 1/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.300000] mmc0: starting CMD2 arg 00000000 flags 00000067
<7>[ 7.300000] mmc0: req done (CMD2): 1/0/0: 00ff8080 00000000 00000000 00000
000
<7>[ 7.300000] mmc0: clock 312500Hz busmode 2 powermode 2 cs 0 Vdd 20 width 0
<7>[ 7.300000] davinci-mmc davinci-mmc.0: clock 312500Hz busmode 2 powermode
2 Vdd 0.20
<7>[ 7.300000] davinci-mmc davinci-mmc.0:
<4>[ 7.300000] Enabling 1 bit mode
<7>[ 7.300000] mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
<7>[ 7.300000] davinci-mmc davinci-mmc.0: clock 0Hz busmode 1 powermode 0 V
dd 0.00
<7>[ 7.300000] davinci-mmc davinci-mmc.0:
<4>[ 7.300000] Enabling 1 bit mode
<7>[ 7.340000] dummy_hcd dummy_hcd: port status 0x00100503 has changes
<7>[ 7.410000] dummy_udc dummy_udc: set_address = 2
<6>[ 7.510000] usb 2-1: rejected 2 configurations due to insufficient availab
le bus power
<4>[ 7.510000] usb 2-1: no configuration chosen from 2 choices
<4>[ 7.530000] usb 2-1: 100mA is over 8mA budget for port 1!
<4>[ 7.530000] hub 2-0:1.0: 92mA over power budget!
<7>[ 8.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 9.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<6>[ 9.550000] CMEMK module: built on Nov 18 2010 at 09:04:19
<6>[ 9.550000] Reference Linux version 2.6.18
<6>[ 9.560000] File /home/harris/work/tvp-baseline/modules/cmemk.c
<4>[ 9.570000] ioremap_nocache(0x85000000, 50331648)=0xc6000000
<6>[ 9.570000] allocated heap buffer 0xc6000000 of size 0x134000
<6>[ 9.590000] cmem initialized 20 pools between 0x85000000 and 0x88000000
<4>[ 9.590000] CMEM Range Overlaps Kernel Physical - allowing overlap
<4>[ 9.590000] CMEM phys_start (0x1000) overlaps kernel (0x80000000 -> 0x8500
0000)
<4>[ 9.610000] ioremap_nocache(0x1000, 28672)=0xc5818000
<6>[ 9.610000] no remaining memory for heap, no heap created for memory block
1
<6>[ 9.610000] cmem initialized 1 pools between 0x1000 and 0x8000
<6>[ 9.680000] IRQK module: built on Nov 18 2010 at 09:04:19
<6>[ 9.690000] Reference Linux version 2.6.18
<6>[ 9.690000] File /home/harris/work/tvp-baseline/modules/irqk.c
<6>[ 9.700000] irqk initialized
<6>[ 9.760000] EDMAK module: built on Nov 18 2010 at 09:04:20
<6>[ 9.780000] Reference Linux version 2.6.18
<6>[ 9.780000] File /home/harris/work/tvp-baseline/modules/edmak.c
<7>[ 10.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 11.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<7>[ 12.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 13.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<7>[ 14.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 15.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<7>[ 16.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 17.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<7>[ 18.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 19.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<7>[ 20.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 21.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
<7>[ 22.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd55
<7>[ 23.000000] davinci-mmc davinci-mmc.0: MMC-Probing mmc with cmd1
An interesting NOTE is that we send CMD0 to reset the MMC card, then 8 CMD1's before a CMD2 is sent. It looks as if the driver is polling CMD55 & CMD1s for potential card removal? If this is working as intended, when would I expect to see a /dev/mmcblk0 device created?