diff options
-rw-r--r-- | Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt | 2 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci-esdhc-imx.c | 1 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci.c | 3 | ||||
-rw-r--r-- | drivers/mmc/host/sdhci.h | 3 |
4 files changed, 7 insertions, 2 deletions
diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt index 462c62e3cfc0..483ee95599ef 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt @@ -36,7 +36,7 @@ Optional properties: - fsl,tuning-start-tap: Specify the start dealy cell point when send first CMD19 in tuning procedure. - wifi-host : assigned as a wifi host. - This is required for some WiFi cards to do card detect + This is required for Broadcom BCM WiFi cards to do card detect Examples: diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c index fb8e06d24d7c..c0127016b862 100644 --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1071,6 +1071,7 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev, if (of_get_property(np, "wifi-host", NULL)) { wifi_mmc_host = host->mmc; + host->quirks2 |= SDHCI_QUIRK2_SDIO_IRQ_THREAD; dev_info(mmc_dev(host->mmc), "assigned as wifi host\n"); } diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 1565855b868d..529d9edc3b0b 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -3110,7 +3110,8 @@ int sdhci_add_host(struct sdhci_host *host) host->timeout_clk = override_timeout_clk; mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23; - mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; + if (!(host->quirks2 & SDHCI_QUIRK2_SDIO_IRQ_THREAD)) + mmc->caps2 |= MMC_CAP2_SDIO_IRQ_NOTHREAD; if (host->quirks & SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12) host->flags |= SDHCI_AUTO_CMD12; diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index 7c02ff46c8ac..e934a599340c 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -412,6 +412,9 @@ struct sdhci_host { #define SDHCI_QUIRK2_ACMD23_BROKEN (1<<14) /* Broken Clock divider zero in controller */ #define SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN (1<<15) +/* Host or Card can't support no thread sdio irq */ +#define SDHCI_QUIRK2_SDIO_IRQ_THREAD (1<<16) + int irq; /* Device IRQ */ void __iomem *ioaddr; /* Mapped address */ |