RE: [PATCH 1/3] mmc: sdhci-of-esdhc: Fix timeout checks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux