• Jonathan Neuschäfer's avatar
    mmc: spi: Fix card detection during probe · c9bd505d
    Jonathan Neuschäfer authored
    When using the mmc_spi driver with a card-detect pin, I noticed that the
    card was not detected immediately after probe, but only after it was
    unplugged and plugged back in (and the CD IRQ fired).
    
    The call tree looks something like this:
    
    mmc_spi_probe
      mmc_add_host
        mmc_start_host
          _mmc_detect_change
            mmc_schedule_delayed_work(&host->detect, 0)
              mmc_rescan
                host->bus_ops->detect(host)
                  mmc_detect
                    _mmc_detect_card_removed
                      host->ops->get_cd(host)
                        mmc_gpio_get_cd -> -ENOSYS (ctx->cd_gpio not set)
      mmc_gpiod_request_cd
        ctx->cd_gpio = desc
    
    To fix this issue, call mmc_detect_change after the card-detect GPIO/IRQ
    is registered.
    Signed-off-by: default avatarJonathan Neuschäfer <j.neuschaefer@gmx.net>
    Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    c9bd505d
mmc_spi.c 42 KB