Re: [PATCH v3 3/4] mmc: renesas_sdhi: Fix sampling clock position selecting

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

 



On Tue, Jul 17, 2018 at 04:52:15PM +0200, Niklas Söderlund wrote:
> When tuning each tap is issued CMD19 twice and the result of both runs
> recorded in host->taps. If the result is different between the two runs
> the wrong sampling clock position was selected. Fix this by merging the
> two runs and only keep the result for each tap if it was good in both
> sets.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>

Reviewed-by: Simon Horman <horms+renesas@xxxxxxxxxxxx>

> 
> ---
> 
> * Changes since v2
> - Rewrote the change to use a less clumsy loop.  The patch is now
>   completely changed from Hayakawa-sans version and therefor I have also
>   claimed authorship.
> - Fixed spelling in comment as suggested by Geert.
> 
> * Changes since v1
> - Updated commit message after discussion with Wolfram.
> - Expanded comment in code to better explain why the results are merged.
> ---
>  drivers/mmc/host/renesas_sdhi_core.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/mmc/host/renesas_sdhi_core.c b/drivers/mmc/host/renesas_sdhi_core.c
> index 384ae6cfa289e22c..777e32b0e410e850 100644
> --- a/drivers/mmc/host/renesas_sdhi_core.c
> +++ b/drivers/mmc/host/renesas_sdhi_core.c
> @@ -384,6 +384,18 @@ static int renesas_sdhi_select_tuning(struct tmio_mmc_host *host)
>  	/* Clear SCC_RVSREQ */
>  	sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_RVSREQ, 0);
>  
> +	/*
> +	 * When tuning CMD19 is issued twice for each tap, merge the
> +	 * result requiring the tap to be good in both runs before
> +	 * considering it for tuning selection.
> +	 */
> +	for (i = 0; i < host->tap_num * 2; i++) {
> +		int offset = host->tap_num * (i < host->tap_num ? 1 : -1);
> +
> +		if (!test_bit(i, host->taps))
> +			clear_bit(i + offset, host->taps);
> +	}
> +
>  	/*
>  	 * Find the longest consecutive run of successful probes.  If that
>  	 * is more than SH_MOBILE_SDHI_MAX_TAP probes long then use the
> -- 
> 2.18.0
> 



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux