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.

AM3517 MMC Support Broken In Linux Kernel 2.6.33.7 - Waiting for root device /dev/mmcblk0p2

Other Parts Discussed in Thread: AM3517, AM3359

I am using Logic PD AM3517 Experimenter board.

Successfully created and booted MMC/SD card for PSP 04.01.00.00 which uses Kernel 2.6.32 with additions.

I need to get to Kernel 2.6.33.7. When booting from SD card, it successfully uncompresses kernel, loads modules but then hangs with

Waiting for root device /dev/mmcblk0p2...

 

I see a similar bug report on Kernel 2.6.37 at

http://e2e.ti.com:80/support/dsp/omap_applications_processors/f/447/p/109030/385380.aspx#385380

and a comment by Vaibhav that a PSP 04.02.00.07 release which uses Kernel 2.6.37 fixes this problem.

 

How can I fix this problem with Kernel 2.6.33.7 and PSP 04.01.00.00?

Thanks

  • Not sure if I can help you but it would help if you should post the console boot log and your u-boot bootargs. I am confused with the sequence of events. Usually the modules are loaded after the root device is mounted.

     

  • Here it is.

     

    Texas Instruments X-Loader 1.44 (Dec  8 2009 - 22:58:46)

    Starting OS Bootloader...

     

     

    U-Boot 2009.08 (Dec 08 2009 - 23:00:10)

     

    AM35xx-GP ES1.0, L3-165MHz

    am3517evm board + LPDDR/NAND

    I2C:   ready

    DRAM:  256 MB

    NAND:  512 MiB

    *** Warning - bad CRC or NAND, using default environment

     

    In:    serial

    Out:   serial

    Err:   serial

    I2C read: I/O error

    HECC U20: port before = 000000FF

    I2C read: I/O error

    I2C read: I/O error

    HECC U20: programmed CAN_STB low

    I2C read: I/O error

    HECC U20: port after = 000000FF

    Die ID #655a0000000000000155daa60201401e

    Net:   davinci_emac_initialize

    Ethernet PHY: GENERIC @ 0x00

    DaVinci EMAC

    Hit any key to stop autoboot:  0 

    mmc1 is available

    reading boot.scr

     

    ** Unable to read "boot.scr" from mmc 0:1 **

    reading uImage

     

    1702984 bytes read

    Booting from mmc ...

    ## Booting kernel from Legacy Image at 82000000 ...

       Image Name:   Linux-2.6.33.7

       Image Type:   ARM Linux Kernel Image (uncompressed)

       Data Size:    1702920 Bytes =  1.6 MB

       Load Address: 80008000

       Entry Point:  80008000

       Verifying Checksum ... OK

       Loading Kernel Image ... OK

    OK

     

    Starting kernel ...

     

    Uncompressing Linux... done, booting the kernel.

    Linux version 2.6.33.7 (meg@ubuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 Thu Jun 16 13:44:41 CDT 2011

    CPU: ARMv7 Processor [411fc087] revision 7 (ARMv7), cr=10c53c7f

    CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache

    Machine: OMAP3517/AM3517 EVM

    Memory policy: ECC disabled, Data cache writeback

    AM3517 ES1.0 (l2cache iva sgx neon isp )

    SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x100000

    Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024

    Kernel command line: console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait

    PID hash table entries: 1024 (order: 0, 4096 bytes)

    Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

    Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

    Memory: 256MB = 256MB total

    Memory: 256256KB available (2920K code, 275K data, 104K init, 0K highmem)

    Hierarchical RCU implementation.

    NR_IRQS:368

    Clocking rate (Crystal/Core/MPU): 26.0/332/500 MHz

    Reprogramming SDRC clock to 332000000 Hz

    dpll3_m2_clk rate change failed: -22

    GPMC revision 5.0

    IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts

    Total of 96 interrupts on 1 active controller

    OMAP GPIO hardware version 2.5

    OMAP clockevent source: GPTIMER1 at 32768 Hz

    Console: colour dummy device 80x30

    Calibrating delay loop... 499.92 BogoMIPS (lpj=1949696)

    Mount-cache hash table entries: 512

    CPU: Testing write buffer coherency: ok

    NET: Registered protocol family 16

    OMAP DMA hardware revision 4.0

    bio: create slab <bio-0> at 0

    SCSI subsystem initialized

    usbcore: registered new interface driver usbfs

    usbcore: registered new interface driver hub

    usbcore: registered new device driver usb

    Switching to clocksource 32k_counter

    NET: Registered protocol family 2

    IP route cache hash table entries: 2048 (order: 1, 8192 bytes)

    TCP established hash table entries: 8192 (order: 4, 65536 bytes)

    TCP bind hash table entries: 8192 (order: 3, 32768 bytes)

    TCP: Hash tables configured (established 8192 bind 8192)

    TCP reno registered

    UDP hash table entries: 256 (order: 0, 4096 bytes)

    UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

    NET: Registered protocol family 1

    RPC: Registered udp transport module.

    RPC: Registered tcp transport module.

    RPC: Registered tcp NFSv4.1 backchannel transport module.

    NetWinder Floating Point Emulator V0.97 (double precision)

    VFS: Disk quotas dquot_6.5.2

    Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

    msgmni has been set to 500

    alg: No test for stdrng (krng)

    io scheduler noop registered

    io scheduler deadline registered

    io scheduler cfq registered (default)

    Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled

    serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654

    serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654

    serial8250.2: ttyS2 at MMIO 0x49020000 (irq = 74) is a ST16654

    console [ttyS2] enabled

    brd: module loaded

    loop: module loaded

    ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver

    ehci-omap ehci-omap.0: OMAP-EHCI Host Controller

    ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 1

    ehci-omap ehci-omap.0: irq 77, io mem 0x48064800

    ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00

    usb usb1: New USB device found, idVendor=1d6b, idProduct=0002

    usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1

    usb usb1: Product: OMAP-EHCI Host Controller

    usb usb1: Manufacturer: Linux 2.6.33.7 ehci_hcd

    usb usb1: SerialNumber: ehci-omap.0

    hub 1-0:1.0: USB hub found

    hub 1-0:1.0: 3 ports detected

    Initializing USB Mass Storage driver...

    usbcore: registered new interface driver usb-storage

    USB Mass Storage support registered.

    usbcore: registered new interface driver usbhid

    usbhid: USB HID core driver

    TCP cubic registered

    NET: Registered protocol family 17

    NET: Registered protocol family 15

    VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1

    Waiting for root device /dev/mmcblk0p2...

     

     

    Thanks

     

  • Appears U-Boot can see the SD-Card. Its loading the kernel uImage from there. I assume that you intentionally don't have a "boot.scr". And "mmc1" is counting from 1 and all other references are  counting from 0?

    Linux can't seem to see the SD-Card. Could be that MMC support has not been compiled into the kernel. With some of the TI kernels, the MMC driver does not emit any messages.

    Or SD-Card pins are pinmux control and they haven't been configured. Never had to configure the pinmux myself. Check to see if the kernel if doing it. I think it is CONFIG_OMAP_PINMUX or CONFIG_DAVINCI_MUX.

     

  • Did you look at

    http://e2e.ti.com:80/support/dsp/omap_applications_processors/f/447/p/109030/385380.aspx#385380

    and the comment that main-line kernels 2.6.37 and earlier had a problem with MMC?

    I'm guessing that the 04.01.00.00 SDK (03.00.01.06 PSP) fixed this problem in the 2.32 kernel.

    I'm guessing from the comment that 04.02.00.07 PSP fixes the issue in the main-line 2.6.37 kernel that it's a driver problem.

    Do you agree?

    I will look at the configs in the meantime.

     

     

  • You are right. I did see that post. I totally forgot about it. Looks promising. A wireless patch for MMC? Wacky. Hope the patch works smoothly for you.

  • Norman -

    That solution involved going back to kernel 2.6.32 - I need to get to main-line kernel 2.6.33.7.

    Can you contact Vaibhav to see if there is an MMC driver patch I can apply to the main-line 2.6.33.7 kernel?

    Thanks

     

  • I don't any inside line to Vaibhav Hiremath...or anybody at all. Try replying to his post in that thread. He might get an e-mail notification. He notes this PSP

    http://software-dl.ti.com/dsps/dsps_public_sw/psp/LinuxPSP/OMAP_04_02/04_02_00_07/index_FDS.html

    That PSP has a 2.6.37 base. Hopefully you haven't too many board specific mods.

     

  • I've got 2.6.37 kernel detecting my microSD card, by applying this patch.

    ---
     drivers/mmc/host/omap_hsmmc.c |    2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)

    Index: b/drivers/mmc/host/omap_hsmmc.c
    ===================================================================
    --- a/drivers/mmc/host/omap_hsmmc.c
    +++ b/drivers/mmc/host/omap_hsmmc.c
    @@ -206,7 +206,7 @@

            if (mmc->version != MMC_CTRL_VERSION_2)
                    /* NOTE: assumes card detect signal is active-low */
    -               return !gpio_get_value_cansleep(mmc->slots[0].switch_pin);
    +               return gpio_get_value_cansleep(mmc->slots[0].switch_pin);
            else {
                    u32 pstate = 0;
                    u32 enabled = 0;

     

  • rfc2217-

    Thanks for the example.

    Unfortunately the 2.6.33.7 omap_hsmmc.c driver file is significantly different from 2.6.37 and so far can't get it to work.

    Also compared 2.6.32 mmc driver files to 2.6.33.7 and tried some things but so far no luck.

     

    meg

     

  • My problem was, that card detect pin is working inverted on my custom board. So I had to invert it in the driver. The patch for 2.6.32 made the system think the card is always inserted. That's how I came upon an idea to invert the return value.

    The other problem is, that the MMC driver makes no output until it detects a card. Just see where it checks for the card and make some printk() to see what's the cause of failure.

    2.6.33 kernel is not a part of PSP, so it could be that not all of the patches from 2.6.32 have made their way to 2.6.33. Please check this also.

    Why do you really need 2.6.33? What about 2.6.37?

  • hello, i have the same problem when i use sd card to boot the am3359 processer,and the boot log is below:

    U-Boot SPL 2011.09 (Feb 09 2012 - 15:38:59)

    Texas Instruments Revision detection unimplemented

    Could not probe the EEPROM; something fundamentally wrong on the I2C bus.

    read_eeprom() failure

    OMAP SD/MMC: 0

    reading u-boot.img

    reading u-boot.img

     

     

    U-Boot 2011.09 (Feb 09 2012 - 15:11:31)

     

    I2C:   ready

    DRAM:  256 MiB

    WARNING: Caches not enabled

    Could not probe the EEPROM; something fundamentally wrong on the I2C bus.

    NAND:  HW ECC Hamming Code selected

    256 MiB

    MMC:   OMAP SD/MMC: 0

    *** Warning - bad CRC, using default environment

     

    Net:   cpsw

    Hit any key to stop autoboot:  0

    SD/MMC found on device 0

    reading uEnv.txt

     

    ** Unable to read "uEnv.txt" from mmc 0:1 **

    reading uImage

     

    2922160 bytes read

    ## Booting kernel from Legacy Image at 80007fc0 ...

       Image Name:   Arago/3.1.0-psp04.06.00.03.sdk/a

       Image Type:   ARM Linux Kernel Image (uncompressed)

       Data Size:    2922096 Bytes = 2.8 MiB

       Load Address: 80008000

       Entry Point:  80008000

       Verifying Checksum ... OK

       XIP Kernel Image ... OK

    OK

     

    Starting kernel ...

     

    Uncompressing Linux... done, booting the kernel.

    [    0.000000] Linux version 3.1.0 (jenkins@sdit-build01) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #1 Thu Feb 9 14:58:49 CST 2012

    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f

    [    0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache

    [    0.000000] Machine: am335xevm

    [    0.000000] Memory policy: ECC disabled, Data cache writeback

    [    0.000000] AM335X ES1.0 (neon )

    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024

    [    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait ip=none

    [    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)

    [    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)

    [    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)

    [    0.000000] Memory: 256MB = 256MB total

    [    0.000000] Memory: 253724k/253724k available, 8420k reserved, 0K highmem

    [    0.000000] Virtual kernel memory layout:

    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    [    0.000000]     DMA     : 0xffa00000 - 0xffe00000   (   4 MB)

    [    0.000000]     vmalloc : 0xd0800000 - 0xf8000000   ( 632 MB)

    [    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)

    [    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)

    [    0.000000]       .text : 0xc0008000 - 0xc0534000   (5296 kB)

    [    0.000000]       .init : 0xc0534000 - 0xc056d000   ( 228 kB)

    [    0.000000]       .data : 0xc056e000 - 0xc05c2d80   ( 340 kB)

    [    0.000000]        .bss : 0xc05c2da4 - 0xc05fd320   ( 234 kB)

    [    0.000000] NR_IRQS:396

    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts

    [    0.000000] Total of 128 interrupts on 1 active controller

    [    0.000000] OMAP clockevent source: GPTIMER1 at 24000000 Hz

    [    0.000000] OMAP clocksource: GPTIMER2 at 24000000 Hz

    [    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms

    [    0.000000] Console: colour dummy device 80x30

    [    0.000252] Calibrating delay loop... 498.89 BogoMIPS (lpj=2494464)

    [    0.058632] pid_max: default: 32768 minimum: 301

    [    0.058787] Security Framework initialized

    [    0.058911] Mount-cache hash table entries: 512

    [    0.059364] CPU: Testing write buffer coherency: ok

    [    0.064943] print_constraints: dummy:

    [    0.065416] NET: Registered protocol family 16

    [    0.065839] GPMC revision 6.0

    [    0.068434] OMAP GPIO hardware version 0.1

    [    0.071351] omap_l3_smx omap_l3_smx.0: couldn't find resource

    [    0.071983] omap_mux_init: Add partition: #1: core, flags: 0

    [    0.075915]  omap_i2c.1: alias fck already exists

    [    0.077914]  omap2_mcspi.1: alias fck already exists

    [    0.078202]  omap2_mcspi.2: alias fck already exists

    [    0.108230] bio: create slab <bio-0> at 0

    [    0.111092] SCSI subsystem initialized

    [    0.113178] usbcore: registered new interface driver usbfs

    [    0.113610] usbcore: registered new interface driver hub

    [    0.113876] usbcore: registered new device driver usb

    [    0.128784] omap_i2c omap_i2c.1: bus 1 rev4.0 at 100 kHz

    [    0.131430] Advanced Linux Sound Architecture Driver Version 1.0.24.

    [    0.132799] Switching to clocksource gp timer

    [    0.138702] Switched to NOHz mode on CPU #0

    [    0.153967] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)

    [    0.154198] musb-hdrc musb-hdrc.0: dma type: pio

    [    0.155266] musb-hdrc musb-hdrc.0: USB OTG mode controller at d080a000 using PIO, IRQ 18

    [    0.155481] musb-hdrc musb-hdrc.1: dma type: pio

    [    0.156394] musb-hdrc musb-hdrc.1: USB OTG mode controller at d080c800 using PIO, IRQ 19

    [    0.156892] NET: Registered protocol family 2

    [    0.157131] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)

    [    0.157488] TCP established hash table entries: 8192 (order: 4, 65536 bytes)

    [    0.157712] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)

    [    0.157848] TCP: Hash tables configured (established 8192 bind 8192)

    [    0.157864] TCP reno registered

    [    0.157882] UDP hash table entries: 256 (order: 0, 4096 bytes)

    [    0.157914] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

    [    0.158159] NET: Registered protocol family 1

    [    0.158508] RPC: Registered named UNIX socket transport module.

    [    0.158527] RPC: Registered udp transport module.

    [    0.158540] RPC: Registered tcp transport module.

    [    0.158553] RPC: Registered tcp NFSv4.1 backchannel transport module.

    [    0.158828] NetWinder Floating Point Emulator V0.97 (double precision)

    [    0.172829] VFS: Disk quotas dquot_6.5.2

    [    0.172974] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)

    [    0.173738] JFFS2 version 2.2. (NAND) (SUMMARY)  漏 2001-2006 Red Hat, Inc.

    [    0.174130] msgmni has been set to 495

    [    0.175096] io scheduler noop registered

    [    0.175115] io scheduler deadline registered

    [    0.175212] io scheduler cfq registered (default)

    [    0.176327] Could not set LED4 to fully on

    [    0.178344] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled

    [    0.180531] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0

    [    0.659948] console [ttyO0] enabled

    [    0.664342] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1

    [    0.672205] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2

    [    0.680152] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3

    [    0.688026] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4

    [    0.695892] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5

    [    0.715574] brd: module loaded

    [    0.725348] loop: module loaded

    [    0.728881] i2c-core: driver [tsl2550] using legacy suspend method

    [    0.735432] i2c-core: driver [tsl2550] using legacy resume method

    [    0.741921] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write

    [    0.802852] No daughter card found

    [    0.806486] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write

    [    0.872853] AM335X: EVM Config read fail: -110

    [    0.879593] mtdoops: mtd device (mtddev=name/number) must be supplied

    [    0.886727] omap2-nand driver initializing

    [    0.891289] OneNAND driver initializing

    [    0.897234] CAN device driver interface

    [    0.901246] CAN bus driver for Bosch D_CAN controller 1.0

    [    0.907891] usbcore: registered new interface driver cdc_ether

    [    0.914313] usbcore: registered new interface driver cdc_subset

    [    0.920593] Initializing USB Mass Storage driver...

    [    0.925999] usbcore: registered new interface driver usb-storage

    [    0.932316] USB Mass Storage support registered.

    [    0.937259] musb-hdrc musb-hdrc.1: MUSB HDRC host driver

    [    0.942944] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1

    [    0.950863] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002

    [    0.958033] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1

    [    0.965645] usb usb1: Product: MUSB HDRC host driver

    [    0.970865] usb usb1: Manufacturer: Linux 3.1.0 musb-hcd

    [    0.976461] usb usb1: SerialNumber: musb-hdrc.1

    [    0.982217] hub 1-0:1.0: USB hub found

    [    0.986231] hub 1-0:1.0: 1 port detected

    [    0.991672] mousedev: PS/2 mouse device common for all mice

    [    0.998981] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0

    [    1.006021] i2c /dev entries driver

    [    1.012538] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec

    [    1.019577] cpuidle: using governor ladder

    [    1.024586] cpuidle: using governor menu

    [    1.032424] usbcore: registered new interface driver usbhid

    [    1.038347] usbhid: USB HID core driver

    [    1.043631] usbcore: registered new interface driver snd-usb-audio

    [    1.052162] ALSA device list:

    [    1.055352]   No soundcards found.

    [    1.058926] oprofile: hardware counters not available

    [    1.064248] oprofile: using timer interrupt.

    [    1.068767] nf_conntrack version 0.5.0 (3964 buckets, 15856 max)

    [    1.075696] ip_tables: (C) 2000-2006 Netfilter Core Team

    [    1.081426] TCP cubic registered

    [    1.084872] NET: Registered protocol family 17

    [    1.089558] can: controller area network core (rev 20090105 abi 8)

    [    1.096188] NET: Registered protocol family 29

    [    1.100864] can: raw protocol (rev 20090105)

    [    1.105372] can: broadcast manager protocol (rev 20090105 t)

    [    1.111369] Registering the dns_resolver key type

    [    1.116414] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3

    [    1.124499] ThumbEE CPU extension supported.

    [    1.129898] _regulator_get: mpu.0 supply mpu not found, using dummy regulator

    [    1.137559] omap2_set_init_voltage: Fail set voltage-dpll_mpu_ck(f=500000000 v=1100000)on vddmpu

    [    1.146822] omap2_set_init_voltage: unable to set vdd_mpu

    [    1.155345] omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)

    [    1.164733] Waiting for root device /dev/mmcblk0p2...

    please help me !!! thanks!!!!

    my email is :liyuanqi999@live.cn