mmc: sdhci: Reset cmd and data circuits after tuning failure
authorAdrian Hunter <adrian.hunter@intel.com>
Wed, 2 Nov 2016 13:49:10 +0000 (15:49 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 7 Nov 2016 12:26:43 +0000 (13:26 +0100)
To prevent subsequent commands failing, ensure the cmd and data circuits
are reset after a tuning timeout.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci.c

index 0dd3c31e23bbc4526a7f163d813b0477d8ebc306..542aabc48032042c0cd78e6cad875f5554147f6a 100644 (file)
@@ -2086,6 +2086,10 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
 
                if (!host->tuning_done) {
                        pr_info(DRIVER_NAME ": Timeout waiting for Buffer Read Ready interrupt during tuning procedure, falling back to fixed sampling clock\n");
+
+                       sdhci_do_reset(host, SDHCI_RESET_CMD);
+                       sdhci_do_reset(host, SDHCI_RESET_DATA);
+
                        ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
                        ctrl &= ~SDHCI_CTRL_TUNED_CLK;
                        ctrl &= ~SDHCI_CTRL_EXEC_TUNING;