OSDN Git Service

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 2fce051..cfb53d7 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);
 }