diff options
-rw-r--r-- | drivers/mmc/host/sdhci.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 2ac0b6887ef7..4b97d5265526 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c | |||
@@ -616,6 +616,9 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd) | |||
616 | target_timeout = data->timeout_ns / 1000 + | 616 | target_timeout = data->timeout_ns / 1000 + |
617 | data->timeout_clks / host->clock; | 617 | data->timeout_clks / host->clock; |
618 | 618 | ||
619 | if (host->quirks & SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK) | ||
620 | host->timeout_clk = host->clock / 1000; | ||
621 | |||
619 | /* | 622 | /* |
620 | * Figure out needed cycles. | 623 | * Figure out needed cycles. |
621 | * We do this in steps in order to fit inside a 32 bit int. | 624 | * We do this in steps in order to fit inside a 32 bit int. |
@@ -626,6 +629,7 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd) | |||
626 | * => | 629 | * => |
627 | * (1) / (2) > 2^6 | 630 | * (1) / (2) > 2^6 |
628 | */ | 631 | */ |
632 | BUG_ON(!host->timeout_clk); | ||
629 | count = 0; | 633 | count = 0; |
630 | current_timeout = (1 << 13) * 1000 / host->timeout_clk; | 634 | current_timeout = (1 << 13) * 1000 / host->timeout_clk; |
631 | while (current_timeout < target_timeout) { | 635 | while (current_timeout < target_timeout) { |
@@ -1901,9 +1905,6 @@ int sdhci_add_host(struct sdhci_host *host) | |||
1901 | if (caps & SDHCI_TIMEOUT_CLK_UNIT) | 1905 | if (caps & SDHCI_TIMEOUT_CLK_UNIT) |
1902 | host->timeout_clk *= 1000; | 1906 | host->timeout_clk *= 1000; |
1903 | 1907 | ||
1904 | if (host->quirks & SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK) | ||
1905 | host->timeout_clk = host->clock / 1000; | ||
1906 | |||
1907 | /* | 1908 | /* |
1908 | * Set host parameters. | 1909 | * Set host parameters. |
1909 | */ | 1910 | */ |