arm64: dts: imx93: assign usdhc[1..3] root clock to 400MHz
authorHaibo Chen <haibo.chen@nxp.com>
Fri, 19 Apr 2024 03:36:59 +0000 (11:36 +0800)
committerShawn Guo <shawnguo@kernel.org>
Thu, 25 Apr 2024 07:02:09 +0000 (15:02 +0800)
1. Config SDHC1 clock 400MHz to support eMMC HS400ES mode
2. The original usdhc2 and usdhc3 root clock is 200MHz. Then WIFI
on usdhc3 at SDR104 mode can work under 200MHz. But if imx93 work
under Low Drive mode, the usdhc3 pad signal is not good under 200MHz,
SDR104 mode can't work stable. Need to downgrade to 133MHz to let
WIFI work stable. To cover all the cases, for Norminal Drive mode,
keep usdhc root at 400MHz, then card(SD/wifi) can work at SDR104 mode
under 200MHz to get the best performance. For Low Drive mode,
bootloader need override usdhc root clock to 266MHz, and the
card(SD/wifi) work at SDR104 mode under 133MHz, can work stable.

Reviewed-by: Sherry Sun <sherry.sun@nxp.com>
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx93.dtsi

index b6cd73d9105e12e40b4d75aa18f3dc38e863ed5e..330b9518a76f7fb9bdb74ba672efea99510a1364 100644 (file)
                                         <&clk IMX93_CLK_WAKEUP_AXI>,
                                         <&clk IMX93_CLK_USDHC1_GATE>;
                                clock-names = "ipg", "ahb", "per";
+                               assigned-clocks = <&clk IMX93_CLK_USDHC1>;
+                               assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1>;
+                               assigned-clock-rates = <400000000>;
                                bus-width = <8>;
                                fsl,tuning-start-tap = <1>;
                                fsl,tuning-step = <2>;
                                         <&clk IMX93_CLK_WAKEUP_AXI>,
                                         <&clk IMX93_CLK_USDHC2_GATE>;
                                clock-names = "ipg", "ahb", "per";
+                               assigned-clocks = <&clk IMX93_CLK_USDHC2>;
+                               assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1>;
+                               assigned-clock-rates = <400000000>;
                                bus-width = <4>;
                                fsl,tuning-start-tap = <1>;
                                fsl,tuning-step = <2>;
                                         <&clk IMX93_CLK_WAKEUP_AXI>,
                                         <&clk IMX93_CLK_USDHC3_GATE>;
                                clock-names = "ipg", "ahb", "per";
+                               assigned-clocks = <&clk IMX93_CLK_USDHC3>;
+                               assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1>;
+                               assigned-clock-rates = <400000000>;
                                bus-width = <4>;
                                fsl,tuning-start-tap = <1>;
                                fsl,tuning-step = <2>;