mmc: tmio: when resetting, reset DMA controller, too
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Fri, 6 Nov 2020 07:25:47 +0000 (08:25 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 10 Nov 2020 12:58:01 +0000 (13:58 +0100)
When applying a revert, the assumption that DMA only needs to be cleared
in specific cases was wrong. We want to reset the DMA controller every
time the rest of the HW gets reset, too.

Fixes: 34e3211e5492 ("Revert "mmc: tmio: fix reset operation"")
Reported-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20201106072549.1495-2-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/tmio_mmc_core.c

index 2fce0518632d6c71b748cde46b73b192f1c01d59..cfb53d7c63d7674c7bfdd46f564a802a1973d64c 100644 (file)
@@ -175,6 +175,8 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)
        if (host->reset)
                host->reset(host);
 
+       tmio_mmc_abort_dma(host);
+
        if (host->pdata->flags & TMIO_MMC_SDIO_IRQ) {
                sd_ctrl_write16(host, CTL_SDIO_IRQ_MASK, host->sdio_irq_mask);
                sd_ctrl_write16(host, CTL_TRANSACTION_CTL, 0x0001);
@@ -223,8 +225,6 @@ static void tmio_mmc_reset_work(struct work_struct *work)
 
        /* Ready for new calls */
        host->mrq = NULL;
-
-       tmio_mmc_abort_dma(host);
        mmc_request_done(host->mmc, mrq);
 }