From 12859c2219a61bf4ce8b33de267d2b0e3e11ef37 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 20 Feb 2024 09:38:45 +0100 Subject: [PATCH] mmc: renesas-sdhi: Stop transmission in case tuning block transfer fails The current code uses the state of tuning block received by SCC to determine whether or not to send transmission stop command. This is not correct. Use the state of tuning block transfer to determine whether or not to send transmission stop command instead, because the transmission stop command has to be sent in case the tuning block transfer failed. This requires two changes, separate variable to store and check the state of tuning block received by SCC, and another separate variable to store and check return value from transmission stop command. Signed-off-by: Marek Vasut Reviewed-by: Paul Barker Tested-by: Paul Barker Reviewed-by: Jaehoon Chung --- drivers/mmc/renesas-sdhi.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/mmc/renesas-sdhi.c b/drivers/mmc/renesas-sdhi.c index 4ee8657f79..7f37d7af18 100644 --- a/drivers/mmc/renesas-sdhi.c +++ b/drivers/mmc/renesas-sdhi.c @@ -568,8 +568,8 @@ int renesas_sdhi_execute_tuning(struct udevice *dev, uint opcode) struct mmc *mmc = upriv->mmc; unsigned int tap_num; unsigned int taps = 0; - int i, ret = 0; - u32 caps; + int i, ret = 0, sret; + u32 caps, reg; /* Only supported on Renesas RCar */ if (!(priv->caps & TMIO_SD_CAP_RCAR_UHS)) @@ -612,8 +612,8 @@ int renesas_sdhi_execute_tuning(struct udevice *dev, uint opcode) if (ret == 0) taps |= BIT(i); - ret = renesas_sdhi_compare_scc_data(priv); - if (ret == 0) + reg = renesas_sdhi_compare_scc_data(priv); + if (reg == 0) priv->smpcmp |= BIT(i); mdelay(1); @@ -624,9 +624,9 @@ int renesas_sdhi_execute_tuning(struct udevice *dev, uint opcode) * eMMC. */ if (ret && (opcode == MMC_CMD_SEND_TUNING_BLOCK_HS200)) { - ret = mmc_send_stop_transmission(mmc, false); - if (ret < 0) - dev_dbg(dev, "Tuning abort fail (%d)\n", ret); + sret = mmc_send_stop_transmission(mmc, false); + if (sret < 0) + dev_dbg(dev, "Tuning abort fail (%d)\n", sret); } } -- 2.39.5