[U-Boot] [PATCH] mmc: dw_mmc: Add RCRC handling

This patch adds check for command response CRC failure. The driver is currently ignoring CRC check failure on command resposes which have CRC atteched to it, which can be potentially dangerous. Even more grueling problem happens when the command response is followed by data transfer though, as in that case, the dwmci_data_transfer() function will spin until it reaches the 240s timeout.
Signed-off-by: Marek Vasut marex@denx.de Cc: Heiko Stuebner heiko@sntech.de Cc: Philipp Tomsich philipp.tomsich@theobroma-systems.com --- drivers/mmc/dw_mmc.c | 4 ++++ include/dwmmc.h | 1 + 2 files changed, 5 insertions(+)
diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c index 3c702b3ed8..7544b84ab6 100644 --- a/drivers/mmc/dw_mmc.c +++ b/drivers/mmc/dw_mmc.c @@ -317,6 +317,10 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, } else if (mask & DWMCI_INTMSK_RE) { debug("%s: Response Error.\n", __func__); return -EIO; + } else if ((cmd->resp_type & MMC_RSP_CRC) && + (mask & DWMCI_INTMSK_RCRC)) { + debug("%s: Response CRC Error.\n", __func__); + return -EIO; }
diff --git a/include/dwmmc.h b/include/dwmmc.h index 0f9d51b557..4ceda5e43c 100644 --- a/include/dwmmc.h +++ b/include/dwmmc.h @@ -56,6 +56,7 @@ #define DWMCI_INTMSK_DTO (1 << 3) #define DWMCI_INTMSK_TXDR (1 << 4) #define DWMCI_INTMSK_RXDR (1 << 5) +#define DWMCI_INTMSK_RCRC (1 << 6) #define DWMCI_INTMSK_DCRC (1 << 7) #define DWMCI_INTMSK_RTO (1 << 8) #define DWMCI_INTMSK_DRTO (1 << 9)

On Tue, Nov 06, 2018 at 11:42:11PM +0100, Marek Vasut wrote:
This patch adds check for command response CRC failure. The driver is currently ignoring CRC check failure on command resposes which have CRC atteched to it, which can be potentially dangerous. Even more grueling problem happens when the command response is followed by data transfer though, as in that case, the dwmci_data_transfer() function will spin until it reaches the 240s timeout.
Signed-off-by: Marek Vasut marex@denx.de Cc: Heiko Stuebner heiko@sntech.de Cc: Philipp Tomsich philipp.tomsich@theobroma-systems.com
Applied to u-boot/master, thanks!
participants (2)
-
Marek Vasut
-
Tom Rini