
For CMD with busy response, the eSDHC driver would poll DAT0 until CMD completion rather than polling IRQSTAT. So, don't set XFERTYP_RSPTYP_48_BUSY to avoid interrupts (DTOE or TC) in IRQSTAT.
Signed-off-by: Yangbo Lu yangbo.lu@nxp.com --- Changes for v2: - None --- drivers/mmc/fsl_esdhc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index a865c7b..b23845d 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -136,8 +136,16 @@ static uint esdhc_xfertyp(struct mmc_cmd *cmd, struct mmc_data *data) xfertyp |= XFERTYP_CICEN; if (cmd->resp_type & MMC_RSP_136) xfertyp |= XFERTYP_RSPTYP_136; - else if (cmd->resp_type & MMC_RSP_BUSY) - xfertyp |= XFERTYP_RSPTYP_48_BUSY; + /* + * For CMD with busy response, the eSDHC driver would poll DAT0 + * until CMD completion rather than polling IRQSTAT. So, don't + * set XFERTYP_RSPTYP_48_BUSY to avoid interrupts (DTOE or TC) + * in IRQSTAT. + * + * Remove: + * else if (cmd->resp_type & MMC_RSP_BUSY) + * xfertyp |= XFERTYP_RSPTYP_48_BUSY; + */ else if (cmd->resp_type & MMC_RSP_PRESENT) xfertyp |= XFERTYP_RSPTYP_48;