Skip to content
  • Kristina Martsenko's avatar
    mmc: core: fix card detection regression · a31b0c6c
    Kristina Martsenko authored
    Since commit 89168b48 ("mmc: core: restore detect line inversion
    semantics"), the SD card on i.MX28 (and possibly other) devices isn't
    detected and booting stops at:
    
    [    4.120617] Waiting for root device /dev/mmcblk0p3...
    
    This is caused by the MMC_CAP2_CD_ACTIVE_HIGH flag being set incorrectly
    when the host controller doesn't use a GPIO for card detection (but
    instead uses a dedicated pin). In this case mmc_gpiod_request_cd() will
    return before assigning to the gpio_invert variable, leaving the
    variable uninitialized. The variable then gets used to set the flag.
    This patch fixes the issue by making sure gpio_invert is set to false
    when a GPIO isn't used. After this patch, i.MX28 boots fine.
    
    The MMC_CAP2_RO_ACTIVE_HIGH (write protect) flag is also set incorrectly
    for the exact same reason (it uses the same uninitialized variable), so
    this patch fixes that too.
    
    Fixes: 89168b48
    
     ("mmc: core: restore detect line inversion semantics")
    Reported-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: default avatarKristina Martšenko <kristina.martsenko@gmail.com>
    Tested-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    a31b0c6c