diff mbox series

mmc: sdhci: Fix SDHCI_QUIRK_BROKEN_CQE

Message ID 20200518120939.1399-1-adrian.hunter@intel.com (mailing list archive)
State New, archived
Headers show
Series mmc: sdhci: Fix SDHCI_QUIRK_BROKEN_CQE | expand

Commit Message

Adrian Hunter May 18, 2020, 12:09 p.m. UTC
Previous to commit 511ce378e16f07 ("mmc: Add MMC host software queue
support"), removing MMC_CAP2_CQE was enough to disable command queuing, but
now the cqe_ops must also be NULL otherwise ->cqe_enable() will be
called. Fix SDHCI_QUIRK_BROKEN_CQE to do that.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Fixes: 511ce378e16f07 ("mmc: Add MMC host software queue support")
---
 drivers/mmc/host/sdhci.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

Ulf Hansson May 18, 2020, 12:46 p.m. UTC | #1
On Mon, 18 May 2020 at 14:09, Adrian Hunter <adrian.hunter@intel.com> wrote:
>
> Previous to commit 511ce378e16f07 ("mmc: Add MMC host software queue
> support"), removing MMC_CAP2_CQE was enough to disable command queuing, but
> now the cqe_ops must also be NULL otherwise ->cqe_enable() will be
> called. Fix SDHCI_QUIRK_BROKEN_CQE to do that.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Fixes: 511ce378e16f07 ("mmc: Add MMC host software queue support")

Applied for fixes, thanks!

Kind regards
Uffe

> ---
>  drivers/mmc/host/sdhci.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index 9864e877e105..682ca8f0be8c 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -4131,9 +4131,6 @@ int sdhci_setup_host(struct sdhci_host *host)
>                        mmc_hostname(mmc), host->version);
>         }
>
> -       if (host->quirks & SDHCI_QUIRK_BROKEN_CQE)
> -               mmc->caps2 &= ~MMC_CAP2_CQE;
> -
>         if (host->quirks & SDHCI_QUIRK_FORCE_DMA)
>                 host->flags |= SDHCI_USE_SDMA;
>         else if (!(host->caps & SDHCI_CAN_DO_SDMA))
> @@ -4662,6 +4659,12 @@ int __sdhci_add_host(struct sdhci_host *host)
>         struct mmc_host *mmc = host->mmc;
>         int ret;
>
> +       if ((mmc->caps2 & MMC_CAP2_CQE) &&
> +           (host->quirks & SDHCI_QUIRK_BROKEN_CQE)) {
> +               mmc->caps2 &= ~MMC_CAP2_CQE;
> +               mmc->cqe_ops = NULL;
> +       }
> +
>         host->complete_wq = alloc_workqueue("sdhci", flags, 0);
>         if (!host->complete_wq)
>                 return -ENOMEM;
> --
> 2.17.1
>
diff mbox series

Patch

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 9864e877e105..682ca8f0be8c 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -4131,9 +4131,6 @@  int sdhci_setup_host(struct sdhci_host *host)
 		       mmc_hostname(mmc), host->version);
 	}
 
-	if (host->quirks & SDHCI_QUIRK_BROKEN_CQE)
-		mmc->caps2 &= ~MMC_CAP2_CQE;
-
 	if (host->quirks & SDHCI_QUIRK_FORCE_DMA)
 		host->flags |= SDHCI_USE_SDMA;
 	else if (!(host->caps & SDHCI_CAN_DO_SDMA))
@@ -4662,6 +4659,12 @@  int __sdhci_add_host(struct sdhci_host *host)
 	struct mmc_host *mmc = host->mmc;
 	int ret;
 
+	if ((mmc->caps2 & MMC_CAP2_CQE) &&
+	    (host->quirks & SDHCI_QUIRK_BROKEN_CQE)) {
+		mmc->caps2 &= ~MMC_CAP2_CQE;
+		mmc->cqe_ops = NULL;
+	}
+
 	host->complete_wq = alloc_workqueue("sdhci", flags, 0);
 	if (!host->complete_wq)
 		return -ENOMEM;