[PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock

Baruch Siach baruch at tkos.co.il
Wed Dec 11 13:03:22 CET 2019


Hi Peng,

On Wed, Dec 11 2019, Peng Fan wrote:
> fsl_esdhc_imx driver will call "mxc_get_clock(MXC_ESDHC_CLK +
> dev->seq)", however mxc_get_clock wrongly handle MXC_ESDHC_CLK
> as root clk and cause sd card could not be detected in U-Boot proper,
> as below:
> "Loading Environment from MMC... unable to select a mode"
>
> Handle MXC_ESDHC_CLK in mxc_get_clock to fix the issue.
>
> Signed-off-by: Peng Fan <peng.fan at nxp.com>

This fixes SD card and eMMC access on i.MX8MQ based SolidRun
Hummingboard Pulse.

Tested-by: Baruch Siach <baruch at tkos.co.il>

Thanks,
baruch

> ---
>  arch/arm/mach-imx/imx8m/clock_imx8mq.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/mach-imx/imx8m/clock_imx8mq.c b/arch/arm/mach-imx/imx8m/clock_imx8mq.c
> index 2db5bde211..878f2be166 100644
> --- a/arch/arm/mach-imx/imx8m/clock_imx8mq.c
> +++ b/arch/arm/mach-imx/imx8m/clock_imx8mq.c
> @@ -326,16 +326,20 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
>  {
>  	u32 val;
>
> -	if (clk == MXC_ARM_CLK)
> +	switch(clk) {
> +	case MXC_ARM_CLK:
>  		return get_root_clk(ARM_A53_CLK_ROOT);
> -
> -	if (clk == MXC_IPG_CLK) {
> +	case MXC_IPG_CLK:
>  		clock_get_target_val(IPG_CLK_ROOT, &val);
>  		val = val & 0x3;
>  		return get_root_clk(AHB_CLK_ROOT) / (val + 1);
> +	case MXC_ESDHC_CLK:
> +		return get_root_clk(USDHC1_CLK_ROOT);
> +	case MXC_ESDHC2_CLK:
> +		return get_root_clk(USDHC2_CLK_ROOT);
> +	default:
> +		return get_root_clk(clk);
>  	}
> -
> -	return get_root_clk(clk);
>  }
>
>  u32 imx_get_uartclk(void)

--
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -


More information about the U-Boot mailing list