On 7/19/24 16:13, Fabio Estevam wrote:
Hi Sébastien,

On Fri, Jul 19, 2024 at 11:00 AM Sébastien Szymanski
<sebastien.szyman...@armadeus.com> wrote:

+&A55_0 {
+     clocks = <&clk IMX93_CLK_ARM_PLL>;

Why IMX93_CLK_ARM_PLL and not IMX93_CLK_A55_SEL ?

IMX93_CLK_A55_SEL is a mux that can select between a55_alt versus arm_pll.

The real CPU clock is IMX93_CLK_ARM_PLL, so this one better represents it.

Ok, thank for the explanation.


This is also consistent with the other i.MX8M SoCs.

Take imx8mm.dtsi for example:

A53_0: cpu@0 {
....
      clocks = <&clk IMX8MM_CLK_ARM>;

This also uses the "real" CPU clock, not the mux one (imx8mm_a53_sels).

I also plan to upstream this clock change to the Linux devicetree.

I did look at imx8mm.dtsi but the clock IMX8MM_CLK_ARM is not defined in U-Boot and in Linux it's defined as:

hws[IMX8MM_CLK_ARM] = imx_clk_hw_cpu("arm", "arm_a53_core",
                                     hws[IMX8MM_CLK_A53_CORE]->clk,
                                     hws[IMX8MM_CLK_A53_CORE]->clk,
                                     hws[IMX8MM_ARM_PLL_OUT]->clk,
                                     hws[IMX8MM_CLK_A53_DIV]->clk);

So in Linux for the i.MX93, the clocks property in the device tree has to be IMX93_CLK_A55_CORE:

clks[IMX93_CLK_A55_CORE] = imx_clk_hw_cpu("a55_core", "a55_sel",
                                        clks[IMX93_CLK_A55_SEL]->clk,
                                        clks[IMX93_CLK_A55_SEL]->clk,
                                        clks[IMX93_CLK_ARM_PLL]->clk,
                                        clks[IMX93_CLK_A55_GATE]->clk);

?

Regards,


Thanks

--
Sébastien Szymanski, Armadeus Systems
Software engineer

Reply via email to