|
@@ -133,20 +133,21 @@ static void sdhci_dumpregs(struct sdhci_host *host)
|
|
|
|
|
|
static void sdhci_set_card_detection(struct sdhci_host *host, bool enable)
|
|
static void sdhci_set_card_detection(struct sdhci_host *host, bool enable)
|
|
{
|
|
{
|
|
- u32 present, irqs;
|
|
|
|
|
|
+ u32 present;
|
|
|
|
|
|
if ((host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) ||
|
|
if ((host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION) ||
|
|
(host->mmc->caps & MMC_CAP_NONREMOVABLE))
|
|
(host->mmc->caps & MMC_CAP_NONREMOVABLE))
|
|
return;
|
|
return;
|
|
|
|
|
|
- present = sdhci_readl(host, SDHCI_PRESENT_STATE) &
|
|
|
|
- SDHCI_CARD_PRESENT;
|
|
|
|
- irqs = present ? SDHCI_INT_CARD_REMOVE : SDHCI_INT_CARD_INSERT;
|
|
|
|
|
|
+ if (enable) {
|
|
|
|
+ present = sdhci_readl(host, SDHCI_PRESENT_STATE) &
|
|
|
|
+ SDHCI_CARD_PRESENT;
|
|
|
|
|
|
- if (enable)
|
|
|
|
- host->ier |= irqs;
|
|
|
|
- else
|
|
|
|
- host->ier &= ~irqs;
|
|
|
|
|
|
+ host->ier |= present ? SDHCI_INT_CARD_REMOVE :
|
|
|
|
+ SDHCI_INT_CARD_INSERT;
|
|
|
|
+ } else {
|
|
|
|
+ host->ier &= ~(SDHCI_INT_CARD_REMOVE | SDHCI_INT_CARD_INSERT);
|
|
|
|
+ }
|
|
|
|
|
|
sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
|
|
sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
|
|
sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
|
|
sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
|