Warnings/Errors while using MMC2 interface in am335x processor

I am using mmc2 interface on am335x processor for SD card.

During device boot up below warning messages are observed.

[    1.408233] _regulator_get: omap_hsmmc.2 supply vmmc not found, using dummy regulator

[    1.416503] _regulator_get: omap_hsmmc.2 supply vmmc_aux not found, using dummy regulator

[    1.430633] omap_hsmmc omap_hsmmc.2: could not set regulator OCR (-22)

[    1.442993] ------------[ cut here ]------------

[    1.447845] WARNING: at drivers/regulator/core.c:1446 _regulator_disable+0x104/0x16c()

[    1.456085] unbalanced disables for dummy

[    1.460266] Modules linked in:

[    1.463470] Backtrace:

[    1.466033] [<c0017978>] (dump_backtrace+0x0/0x110) from [<c0439fdc>] (dump_stack+0x18/0x1c)

[    1.474853]  r6:c06129dc r5:000005a6 r4:ce81dda0 r3:c06e9a08

[    1.480773] [<c0439fc4>] (dump_stack+0x0/0x1c) from [<c003d584>] (warn_slowpath_common+0x5c/0x6c)

 

Please let me know what is the cause and how to resolve these warning.

  • I know this is a little old, but I think the problem is in the hsmmc file during the pdata_init.  The code was probably originally for some other board, so mmc bus "3" (or MMC2) does not get fully initialized.  Below is the diff output from my board changes.  Note that it could break old code, so maybe it would be better to prevent the fallthrough in the case statement and do a separate check for cpu_is_am33xx() in case 3.  I haven't had a chance to confirm it working with wl1271 or an SD card...

    Index: arch/arm/mach-omap2/hsmmc.c
    ===================================================================
    --- arch/arm/mach-omap2/hsmmc.c (revision 11)
    +++ arch/arm/mach-omap2/hsmmc.c (working copy)
    @@ -402,6 +402,8 @@
                    }
                    break;
            case 2:
    +               /* FALLTHROUGH */
    +       case 3:
                    if (cpu_is_omap3517() || cpu_is_omap3505())
                            mmc->slots[0].set_power = am35x_hsmmc2_set_power;
     
    @@ -414,8 +416,7 @@
                            c->caps &= ~MMC_CAP_8_BIT_DATA;
                            c->caps |= MMC_CAP_4_BIT_DATA;
                    }
    -               /* FALLTHROUGH */
    -       case 3:
    +
                    if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
                            /* off-chip level shifting, or none */
                            mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;

  • In reply to David Paden:

    Thanks David.

    This fixed the issue.

  • In reply to Manjunath GR:

    Hello Manjunath,

    I am also using MMC2 interface for WL1271 on am335x based board, but i am getting an error 

    Host doesnot support card's voltage

    Error -22 while intializing SDIO card.

    If you can help me in solving it would be very helpful.

    Thanks 

    Rakesh Kadian

  • In reply to Rakesh Kadian1:

    Hi rakesh

    Are you able to solve the issue with mmc2

    Sunil 

  • In reply to SUNIL KOTTARY:

    Hi Sunil,

    No we could not find anything by which we can made this work.

    At last we have to shift to mmc1 only to make it work properly.

    Thanks,

    Rakesh Kadian