Reviewed-by: Yangbo Lu <yangbo.lu@xxxxxxx> > -----Original Message----- > From: Adrian Hunter <adrian.hunter@xxxxxxxxx> > Sent: Monday, December 10, 2018 4:56 PM > To: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > Cc: linux-mmc <linux-mmc@xxxxxxxxxxxxxxx>; Yinbo Zhu > <yinbo.zhu@xxxxxxx>; Laurentiu Tudor <laurentiu.tudor@xxxxxxx>; Y.B. LU > <yangbo.lu@xxxxxxx>; Kishon Vijay Abraham I <kishon@xxxxxx>; Hu Ziji > <huziji@xxxxxxxxxxx>; Zhoujie Wu <zjwu@xxxxxxxxxxx> > Subject: [PATCH 1/3] mmc: sdhci-of-esdhc: Fix timeout checks > > Always check the wait condition before returning timeout. > > Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > drivers/mmc/host/sdhci-of-esdhc.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-of-esdhc.c > b/drivers/mmc/host/sdhci-of-esdhc.c > index 86fc9f022002..d111bf62acd9 100644 > --- a/drivers/mmc/host/sdhci-of-esdhc.c > +++ b/drivers/mmc/host/sdhci-of-esdhc.c > @@ -528,8 +528,12 @@ static void esdhc_clock_enable(struct sdhci_host > *host, bool enable) > /* Wait max 20 ms */ > timeout = ktime_add_ms(ktime_get(), 20); > val = ESDHC_CLOCK_STABLE; > - while (!(sdhci_readl(host, ESDHC_PRSSTAT) & val)) { > - if (ktime_after(ktime_get(), timeout)) { > + while (1) { > + bool timedout = ktime_after(ktime_get(), timeout); > + > + if (sdhci_readl(host, ESDHC_PRSSTAT) & val) > + break; > + if (timedout) { > pr_err("%s: Internal clock never stabilised.\n", > mmc_hostname(host->mmc)); > break; > @@ -594,8 +598,12 @@ static void esdhc_of_set_clock(struct sdhci_host > *host, unsigned int clock) > > /* Wait max 20 ms */ > timeout = ktime_add_ms(ktime_get(), 20); > - while (!(sdhci_readl(host, ESDHC_PRSSTAT) & ESDHC_CLOCK_STABLE)) { > - if (ktime_after(ktime_get(), timeout)) { > + while (1) { > + bool timedout = ktime_after(ktime_get(), timeout); > + > + if (sdhci_readl(host, ESDHC_PRSSTAT) & ESDHC_CLOCK_STABLE) > + break; > + if (timedout) { > pr_err("%s: Internal clock never stabilised.\n", > mmc_hostname(host->mmc)); > return; > -- > 2.17.1