imx: imx8mq: handle ESDHC in mxc_get_clock
authorPeng Fan <peng.fan@nxp.com>
Wed, 11 Dec 2019 06:17:12 +0000 (06:17 +0000)
committerStefano Babic <sbabic@denx.de>
Wed, 8 Jan 2020 12:18:55 +0000 (13:18 +0100)
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>
Tested-by: Baruch Siach <baruch@tkos.co.il>
Tested-by: Fabio Estevam <festevam@gmail.com>
arch/arm/mach-imx/imx8m/clock_imx8mq.c

index 2db5bde2116d7eb383134b69dccd390d2546f528..878f2be166f98bc097c52888bfe54b6d27b7cf9d 100644 (file)
@@ -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)