Message ID | 1493174749-31003-1-git-send-email-yangbo.lu@nxp.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On 26/04/17 05:45, Yangbo Lu wrote: > The loop to poll ESDHC_CLOCK_STABLE bit with mdelay would waste time > because the time to stabilize is much less than 1 ms. This patch is > to use udelay instead to avoid time wasting. > > Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> Acked-by: Adrian Hunter <adrian.hunter@intel.com> > --- > drivers/mmc/host/sdhci-of-esdhc.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c > index 7518360..77dfc59 100644 > --- a/drivers/mmc/host/sdhci-of-esdhc.c > +++ b/drivers/mmc/host/sdhci-of-esdhc.c > @@ -445,7 +445,7 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) > struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); > int pre_div = 1; > int div = 1; > - u32 timeout; > + ktime_t timeout; > u32 temp; > > host->mmc->actual_clock = 0; > @@ -489,15 +489,14 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) > sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); > > /* Wait max 20 ms */ > - timeout = 20; > + timeout = ktime_add_ms(ktime_get(), 20); > while (!(sdhci_readl(host, ESDHC_PRSSTAT) & ESDHC_CLOCK_STABLE)) { > - if (timeout == 0) { > + if (ktime_after(ktime_get(), timeout)) { > pr_err("%s: Internal clock never stabilised.\n", > mmc_hostname(host->mmc)); > return; > } > - timeout--; > - mdelay(1); > + udelay(10); > } > > temp |= ESDHC_CLOCK_SDCLKEN; > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 26 April 2017 at 04:45, Yangbo Lu <yangbo.lu@nxp.com> wrote: > The loop to poll ESDHC_CLOCK_STABLE bit with mdelay would waste time > because the time to stabilize is much less than 1 ms. This patch is > to use udelay instead to avoid time wasting. > > Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> Thanks, applied for next! Kind regards Uffe > --- > drivers/mmc/host/sdhci-of-esdhc.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c > index 7518360..77dfc59 100644 > --- a/drivers/mmc/host/sdhci-of-esdhc.c > +++ b/drivers/mmc/host/sdhci-of-esdhc.c > @@ -445,7 +445,7 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) > struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); > int pre_div = 1; > int div = 1; > - u32 timeout; > + ktime_t timeout; > u32 temp; > > host->mmc->actual_clock = 0; > @@ -489,15 +489,14 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) > sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); > > /* Wait max 20 ms */ > - timeout = 20; > + timeout = ktime_add_ms(ktime_get(), 20); > while (!(sdhci_readl(host, ESDHC_PRSSTAT) & ESDHC_CLOCK_STABLE)) { > - if (timeout == 0) { > + if (ktime_after(ktime_get(), timeout)) { > pr_err("%s: Internal clock never stabilised.\n", > mmc_hostname(host->mmc)); > return; > } > - timeout--; > - mdelay(1); > + udelay(10); > } > > temp |= ESDHC_CLOCK_SDCLKEN; > -- > 2.1.0.27.g96db324 > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c index 7518360..77dfc59 100644 --- a/drivers/mmc/host/sdhci-of-esdhc.c +++ b/drivers/mmc/host/sdhci-of-esdhc.c @@ -445,7 +445,7 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); int pre_div = 1; int div = 1; - u32 timeout; + ktime_t timeout; u32 temp; host->mmc->actual_clock = 0; @@ -489,15 +489,14 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); /* Wait max 20 ms */ - timeout = 20; + timeout = ktime_add_ms(ktime_get(), 20); while (!(sdhci_readl(host, ESDHC_PRSSTAT) & ESDHC_CLOCK_STABLE)) { - if (timeout == 0) { + if (ktime_after(ktime_get(), timeout)) { pr_err("%s: Internal clock never stabilised.\n", mmc_hostname(host->mmc)); return; } - timeout--; - mdelay(1); + udelay(10); } temp |= ESDHC_CLOCK_SDCLKEN;
The loop to poll ESDHC_CLOCK_STABLE bit with mdelay would waste time because the time to stabilize is much less than 1 ms. This patch is to use udelay instead to avoid time wasting. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> --- drivers/mmc/host/sdhci-of-esdhc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)