Message ID | 20191211063554.24132-1-peng.fan@nxp.com |
---|---|
State | Accepted |
Commit | 392a4e6dd33ae76960c382a13b1e437b58b425b6 |
Delegated to: | Stefano Babic |
Headers | show |
Series | imx: imx8mq: handle ESDHC in mxc_get_clock | expand |
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@nxp.com> This fixes SD card and eMMC access on i.MX8MQ based SolidRun Hummingboard Pulse. Tested-by: Baruch Siach <baruch@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@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
Hi Peng, On Wed, Dec 11, 2019 at 3:17 AM Peng Fan <peng.fan@nxp.com> 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@nxp.com> Thanks for the fix: Tested-by: Fabio Estevam <festevam@gmail.com> Stefano, This one is a bug fix for 2020.01 Thanks
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 <peng.fan@nxp.com> > > This fixes SD card and eMMC access on i.MX8MQ based SolidRun > Hummingboard Pulse. > > Tested-by: Baruch Siach <baruch@tkos.co.il> 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------------{= - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
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 <peng.fan@nxp.com> >> >> This fixes SD card and eMMC access on i.MX8MQ based SolidRun >> Hummingboard Pulse. >> >> Tested-by: Baruch Siach <baruch@tkos.co.il> > > 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------------{= > - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il - >
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)
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@nxp.com> --- arch/arm/mach-imx/imx8m/clock_imx8mq.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)