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 |
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 --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;
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(-)