On 01/17/2018 06:44 AM, Benoît Thébaudeau wrote:
> Commit 4f425280fa71 ("mmc: fsl_esdhc: Allow all supported prescaler
> values") made it possible to set SYSCTL.SDCLKFS to 0 in SDR mode on
> i.MX, thus bypassing the SD clock frequency prescaler, in order to be
> able to get higher SD clock frequencies in some contexts. However, that
> commit missed the fact that this value is illegal on the eSDHCv3
> instance of the i.MX53. This seems to be the only exception on i.MX,
> this value being legal even for the eSDHCv2 instances of the i.MX53.
> 
> Fix this issue by changing the minimum prescaler value for the single
> instance of the i.MX53 eSDHCv3 controller.
> 
> Signed-off-by: Benoît Thébaudeau <[email protected]>
> Reviewed-by: Fabio Estevam <[email protected]>

Applied to u-boot-mmc. Thanks!

Best Regards,
Jaehoon Chung

> ---
> Changes for v2:
>  - Surround == with parentheses for clarity (suggested by Stefano).
> ---
>  drivers/mmc/fsl_esdhc.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index 499d622c6d..5b6042c22c 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -528,14 +528,19 @@ out:
>  
>  static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint 
> clock)
>  {
> +     struct fsl_esdhc *regs = priv->esdhc_regs;
>       int div = 1;
>  #ifdef ARCH_MXC
> +#ifdef CONFIG_MX53
> +     /* For i.MX53 eSDHCv3, SYSCTL.SDCLKFS may not be set to 0. */
> +     int pre_div = (regs == (struct fsl_esdhc *)MMC_SDHC3_BASE_ADDR) ? 2 : 1;
> +#else
>       int pre_div = 1;
> +#endif
>  #else
>       int pre_div = 2;
>  #endif
>       int ddr_pre_div = mmc->ddr_mode ? 2 : 1;
> -     struct fsl_esdhc *regs = priv->esdhc_regs;
>       int sdhc_clk = priv->sdhc_clk;
>       uint clk;
>  
> 

_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to