[REGRESSION] Re: [PATCH v2 16/24] clk: imx: Convert clock-osc-* back to osc_*

Marek Vasut marex at denx.de
Thu Apr 17 01:47:01 CEST 2025


On 4/17/25 1:35 AM, Adam Ford wrote:

[...]

>          if (!parent)
> @@ -113,6 +114,9 @@ int clk_mux_fetch_parent_index(struct clk *clk,
> struct clk *parent)
>          for (i = 0; i < mux->num_parents; i++) {
>                  if (!strcmp(parent->dev->name, mux->parent_names[i]))
>                          return i;
> +               dev_read_string_index(parent->dev,
> "clock-output-names", i, &name);

You are not supposed to use "clock-output-names" for clock look up.
You are supposed to use "clocks"/"clock-names" DT properties and then 
resolve the remote clock from information in those.

> +               if (!strcmp(name, mux->parent_names[i]))
> +                       return i;
>                  if (!strcmp(parent->dev->name,
>                              clk_resolve_parent_clk(clk->dev,
>                                                     mux->parent_names[i])))
clk_resolve_parent_clk() is meant to look up the clocks in local DT node 
"clock-names" property by name, and based on that, figure out which 
phandle to use in local DT node "clocks" property to access those clock:

For example, in dts/upstream/src/arm64/freescale/imx8mp.dtsi

  745 clk: clock-controller at 30380000 {
  746         compatible = "fsl,imx8mp-ccm";
  747         reg = <0x30380000 0x10000>;
  748         interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
  749                      <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  750         #clock-cells = <1>;
  751         clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>,
                                    ^^^^^^^^
  752                  <&clk_ext3>, <&clk_ext4>;
  753         clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2",
                                        ^^^^^^^
                 This "osc_24m" is also the same osc_24m referenced in
                 drivers/clk/imx/clk-imx8mp.c imx8mp_a53_sels[] and co.

Is then resolved to these clock:

  188         osc_24m: clock-osc-24m {
  189                 compatible = "fixed-clock";
  190                 #clock-cells = <0>;
  191                 clock-frequency = <24000000>;
  192                 clock-output-names = "osc_24m";
                                            ^^^^^^^ Ignore this
  193         };


More information about the U-Boot mailing list