Re: [PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock
On 08/01/20 12:56, Baruch Siach wrote: > Hi Stefano, Peng, > > On Wed, Dec 11 2019, Baruch Siach wrote: >> 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 >> >> This fixes SD card and eMMC access on i.MX8MQ based SolidRun >> Hummingboard Pulse. >> >> Tested-by: Baruch Siach > > This patch missed v2020.01 unfortunately. I see it marked as "Awaiting > Upstream" in patchwork (patch 1207464), but I could not find it queued > anywhere. Am I missing anything? I cannot see it, too. I can just pick it up and push it to -master. Stefano > > 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{= >- bar...@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il - > -- = DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de =
Re: [PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock
Hi Stefano, Peng, On Wed, Dec 11 2019, Baruch Siach wrote: > 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 > > This fixes SD card and eMMC access on i.MX8MQ based SolidRun > Hummingboard Pulse. > > Tested-by: Baruch Siach This patch missed v2020.01 unfortunately. I see it marked as "Awaiting Upstream" in patchwork (patch 1207464), but I could not find it queued anywhere. Am I missing anything? 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{= - bar...@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
[PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock
> 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 > Tested-by: Baruch Siach > Tested-by: Fabio Estevam Applied to u-boot-imx, master, thanks ! Best regards, Stefano Babic -- = DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de =
Re: [PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock
Hi Peng, On Wed, Dec 11, 2019 at 3:17 AM 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 Thanks for the fix: Tested-by: Fabio Estevam Stefano, This one is a bug fix for 2020.01 Thanks
Re: [PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock
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 This fixes SD card and eMMC access on i.MX8MQ based SolidRun Hummingboard Pulse. Tested-by: Baruch Siach 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{= - bar...@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
[PATCH] imx: imx8mq: handle ESDHC in mxc_get_clock
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 --- 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) -- 2.16.4