]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mmc: sdhci-pci-o2micro: Fix card detect by dealing with debouncing
authorChevron Li <chevron.li@bayhubtech.com>
Thu, 2 Jun 2022 13:25:43 +0000 (06:25 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Jun 2022 06:58:44 +0000 (08:58 +0200)
commit c7f7bd637467befd1b2597b0a6e220d91d86cd0a upstream.

The result from ->get_cd() may be incorrect as the card detect debouncing
isn't managed correctly. Let's fix it.

Signed-off-by: Chevron Li<chevron.li@bayhubtech.com>
Fixes: ef943f9b7250 ("mmc: sdhci-pci-o2micro: Fix O2 Host data read/write DLL Lock phase shift issue")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20220602132543.596-1-chevron.li@bayhubtech.com
[Ulf: Updated the commit message]
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mmc/host/sdhci-pci-o2micro.c

index 41a2394313dd0faabf7b2f333aa7e77289593c68..3170c19683c49736a30da475637cd0105345f030 100644 (file)
@@ -145,6 +145,8 @@ static int sdhci_o2_get_cd(struct mmc_host *mmc)
 
        if (!(sdhci_readw(host, O2_PLL_DLL_WDT_CONTROL1) & O2_PLL_LOCK_STATUS))
                sdhci_o2_enable_internal_clock(host);
+       else
+               sdhci_o2_wait_card_detect_stable(host);
 
        return !!(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
 }