mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 14:44:10 +08:00
mmc: renesas_sdhi_internal_dmac: mask DMAC interrupts
I have encountered an interrupt storm during the eMMC chip probing (and
the chip finally didn't get detected). It turned out that U-Boot left
the SDHI DMA interrupts enabled while the Linux driver didn't use those.
Masking those interrupts in renesas_sdhi_internal_dmac_request_dma() gets
rid of both issues...
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Fixes: 2a68ea7896
("mmc: renesas-sdhi: add support for R-Car Gen3 SDHI DMAC")
Cc: stable@vger.kernel.org # v4.14+
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
9faf870e55
commit
d2332f887d
@ -49,10 +49,12 @@
|
||||
|
||||
/* DM_CM_INFO1 and DM_CM_INFO1_MASK */
|
||||
#define INFO1_CLEAR 0
|
||||
#define INFO1_MASK_CLEAR GENMASK_ULL(31, 0)
|
||||
#define INFO1_DTRANEND1 BIT(17)
|
||||
#define INFO1_DTRANEND0 BIT(16)
|
||||
|
||||
/* DM_CM_INFO2 and DM_CM_INFO2_MASK */
|
||||
#define INFO2_MASK_CLEAR GENMASK_ULL(31, 0)
|
||||
#define INFO2_DTRANERR1 BIT(17)
|
||||
#define INFO2_DTRANERR0 BIT(16)
|
||||
|
||||
@ -252,6 +254,12 @@ renesas_sdhi_internal_dmac_request_dma(struct tmio_mmc_host *host,
|
||||
{
|
||||
struct renesas_sdhi *priv = host_to_priv(host);
|
||||
|
||||
/* Disable DMAC interrupts, we don't use them */
|
||||
renesas_sdhi_internal_dmac_dm_write(host, DM_CM_INFO1_MASK,
|
||||
INFO1_MASK_CLEAR);
|
||||
renesas_sdhi_internal_dmac_dm_write(host, DM_CM_INFO2_MASK,
|
||||
INFO2_MASK_CLEAR);
|
||||
|
||||
/* Each value is set to non-zero to assume "enabling" each DMA */
|
||||
host->chan_rx = host->chan_tx = (void *)0xdeadbeaf;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user