mmc: mmci: Clear busy_status when starting command
authorLinus Walleij <linus.walleij@linaro.org>
Fri, 16 Jun 2023 20:42:19 +0000 (22:42 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 19 Jun 2023 11:14:26 +0000 (13:14 +0200)
If we are starting a command which can generate a busy
response, then clear the variable host->busy_status
if the variant is using a ->busy_complete callback.

We are lucky that the member is zero by default and
hopefully always gets cleared in the ->busy_complete
callback even on errors, but it's just fragile so
make sure it is always initialized to zero.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230405-pl180-busydetect-fix-v7-1-69a7164f2a61@linaro.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/mmci.c

index f724bd0d2a6120e9258c38a96f147a1b6411f572..267f88d9daecbfab53a9e53375d2f8452be13ed3 100644 (file)
@@ -1238,6 +1238,7 @@ mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c)
                        c |= host->variant->cmdreg_srsp;
        }
 
+       host->busy_status = 0;
        if (host->variant->busy_timeout && cmd->flags & MMC_RSP_BUSY) {
                if (!cmd->busy_timeout)
                        cmd->busy_timeout = 10 * MSEC_PER_SEC;