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 <marek.vasut+rene...@mailbox.org>
---
Cc: Hai Pham <hai.pham...@renesas.com>
Cc: Jaehoon Chung <jh80.ch...@samsung.com>
Cc: Nobuhiro Iwamatsu <iwama...@nigauri.org>
Cc: Paul Barker <paul.barker...@bp.renesas.com>
Cc: Peng Fan <peng....@nxp.com>
Cc: Sean Anderson <sean...@gmail.com>
Cc: Tom Rini <tr...@konsulko.com>
Cc: Yoshihiro Shimoda <yoshihiro.shimoda...@renesas.com>
---
 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 316b75b35fe..c4d0733b621 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.43.0

Reply via email to