mmc: sdhci-xenon: Fix timeout checks
Always check the wait condition before returning timeout. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Zhoujie Wu <zjwu@marvell.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
9f0ea0bda1
commit
0e6e7c2ff3
|
@ -357,9 +357,13 @@ static int xenon_emmc_phy_enable_dll(struct sdhci_host *host)
|
|||
|
||||
/* Wait max 32 ms */
|
||||
timeout = ktime_add_ms(ktime_get(), 32);
|
||||
while (!(sdhci_readw(host, XENON_SLOT_EXT_PRESENT_STATE) &
|
||||
XENON_DLL_LOCK_STATE)) {
|
||||
if (ktime_after(ktime_get(), timeout)) {
|
||||
while (1) {
|
||||
bool timedout = ktime_after(ktime_get(), timeout);
|
||||
|
||||
if (sdhci_readw(host, XENON_SLOT_EXT_PRESENT_STATE) &
|
||||
XENON_DLL_LOCK_STATE)
|
||||
break;
|
||||
if (timedout) {
|
||||
dev_err(mmc_dev(host->mmc), "Wait for DLL Lock time-out\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
|
|
@ -34,9 +34,13 @@ static int xenon_enable_internal_clk(struct sdhci_host *host)
|
|||
sdhci_writel(host, reg, SDHCI_CLOCK_CONTROL);
|
||||
/* Wait max 20 ms */
|
||||
timeout = ktime_add_ms(ktime_get(), 20);
|
||||
while (!((reg = sdhci_readw(host, SDHCI_CLOCK_CONTROL))
|
||||
& SDHCI_CLOCK_INT_STABLE)) {
|
||||
if (ktime_after(ktime_get(), timeout)) {
|
||||
while (1) {
|
||||
bool timedout = ktime_after(ktime_get(), timeout);
|
||||
|
||||
reg = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
|
||||
if (reg & SDHCI_CLOCK_INT_STABLE)
|
||||
break;
|
||||
if (timedout) {
|
||||
dev_err(mmc_dev(host->mmc), "Internal clock never stabilised.\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue