
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(-)
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)

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 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 -

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
participants (4)
-
Baruch Siach
-
Fabio Estevam
-
Peng Fan
-
Stefano Babic