From: mtk13858 <[email protected]>
it needs to wait for dma stop done after set dma stop.
Signed-off-by: mtk13858 <[email protected]>
---
drivers/mmc/host/mtk-sd.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
index 4dfc246c5f95..1dfd2842471b 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
@@ -2339,6 +2339,8 @@ static void msdc_cqe_disable(struct mmc_host *mmc, bool recovery)
if (recovery) {
sdr_set_field(host->base + MSDC_DMA_CTRL,
MSDC_DMA_CTRL_STOP, 1);
+ while (readl(host->base + MSDC_DMA_CFG) & MSDC_DMA_CFG_STS)
+ cpu_relax();
msdc_reset_hw(host);
}
}
--
2.18.0
Thanks for your patch.
On 06/08/2021 04:30, Derong Liu wrote:
> From: mtk13858 <[email protected]>
>
> it needs to wait for dma stop done after set dma stop.
>
Please provide a better commit message. Which bug do you see on which SoC? Are
you sure you can apply that to all SoC without breaking stuff?
> Signed-off-by: mtk13858 <[email protected]>
Full name please.
Regards,
Matthias
> ---
> drivers/mmc/host/mtk-sd.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
> index 4dfc246c5f95..1dfd2842471b 100644
> --- a/drivers/mmc/host/mtk-sd.c
> +++ b/drivers/mmc/host/mtk-sd.c
> @@ -2339,6 +2339,8 @@ static void msdc_cqe_disable(struct mmc_host *mmc, bool recovery)
> if (recovery) {
> sdr_set_field(host->base + MSDC_DMA_CTRL,
> MSDC_DMA_CTRL_STOP, 1);
> + while (readl(host->base + MSDC_DMA_CFG) & MSDC_DMA_CFG_STS)
> + cpu_relax();
> msdc_reset_hw(host);
> }
> }
>