On Tue, Dec 6, 2022 at 11:15 AM Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> wrote: > > On 11/11/2022 17:27, Rob Herring wrote: > > The reference by path (&{/cpus/cpu@101/thermal-idle}) in the example causes > > an error with new version of dtc: > > > > FATAL ERROR: Can't generate fixup for reference to path &{/cpus/cpu@100/thermal-idle} > > > > This is because the examples are built as an overlay and absolute paths > > are not valid as references must be by label. The path was also not > > resolvable because, by default, examples are placed under 'example-N' > > nodes. > > > > As the example contains top-level nodes, the root node must be explicit for > > the example to be extracted as-is. This changes the indentation for the > > whole example, but the existing indentation is a mess of of random amounts. > > Clean this up to be 4 spaces everywhere. > > > > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> > > --- > > The dtc update is in my tree, so I'd prefer to take this via the DT > > tree. > > > > .../bindings/thermal/thermal-idle.yaml | 154 +++++++++--------- > > 1 file changed, 80 insertions(+), 74 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > > index cc938d7ad1f3..72d85eb64247 100644 > > --- a/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > > +++ b/Documentation/devicetree/bindings/thermal/thermal-idle.yaml > > @@ -48,99 +48,105 @@ additionalProperties: false > > > > examples: > > - | > > - #include <dt-bindings/thermal/thermal.h> > > + /{ > > + #include <dt-bindings/thermal/thermal.h> > > > > - // Example: Combining idle cooling device on big CPUs with cpufreq cooling device > > - cpus { > > + compatible = "foo"; > > + model = "foo"; > > + #address-cells = <1>; > > + #size-cells = <1>; > > + > > + // Example: Combining idle cooling device on big CPUs with cpufreq cooling device > > + cpus { > > #address-cells = <2>; > > #size-cells = <0>; > > > > /* ... */ > > > > - cpu_b0: cpu@100 { > > - device_type = "cpu"; > > - compatible = "arm,cortex-a72"; > > - reg = <0x0 0x100>; > > - enable-method = "psci"; > > - capacity-dmips-mhz = <1024>; > > - dynamic-power-coefficient = <436>; > > - #cooling-cells = <2>; /* min followed by max */ > > - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > - thermal-idle { > > - #cooling-cells = <2>; > > - duration-us = <10000>; > > - exit-latency-us = <500>; > > - }; > > + cpu_b0: cpu@100 { > > + device_type = "cpu"; > > + compatible = "arm,cortex-a72"; > > + reg = <0x0 0x100>; > > + enable-method = "psci"; > > + capacity-dmips-mhz = <1024>; > > + dynamic-power-coefficient = <436>; > > + #cooling-cells = <2>; /* min followed by max */ > > + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > + thermal-idle { > > + #cooling-cells = <2>; > > + duration-us = <10000>; > > + exit-latency-us = <500>; > > + }; > > + }; > > + > > + cpu_b1: cpu@101 { > > + device_type = "cpu"; > > + compatible = "arm,cortex-a72"; > > + reg = <0x0 0x101>; > > + enable-method = "psci"; > > + capacity-dmips-mhz = <1024>; > > + dynamic-power-coefficient = <436>; > > + #cooling-cells = <2>; /* min followed by max */ > > + cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > + thermal-idle { > > + #cooling-cells = <2>; > > + duration-us = <10000>; > > + exit-latency-us = <500>; > > }; > > + }; > > > > - cpu_b1: cpu@101 { > > - device_type = "cpu"; > > - compatible = "arm,cortex-a72"; > > - reg = <0x0 0x101>; > > - enable-method = "psci"; > > - capacity-dmips-mhz = <1024>; > > - dynamic-power-coefficient = <436>; > > - #cooling-cells = <2>; /* min followed by max */ > > - cpu-idle-states = <&CPU_SLEEP>, <&CLUSTER_SLEEP>; > > - thermal-idle { > > - #cooling-cells = <2>; > > - duration-us = <10000>; > > - exit-latency-us = <500>; > > - }; > > - }; > > - > > - /* ... */ > > + /* ... */ > > > > - }; > > + }; > > > > - /* ... */ > > + /* ... */ > > > > - thermal_zones { > > - cpu_thermal: cpu { > > + thermal_zones { > > + cpu_thermal: cpu { > > polling-delay-passive = <100>; > > polling-delay = <1000>; > > > > /* ... */ > > > > trips { > > - cpu_alert0: cpu_alert0 { > > - temperature = <65000>; > > - hysteresis = <2000>; > > - type = "passive"; > > - }; > > - > > - cpu_alert1: cpu_alert1 { > > - temperature = <70000>; > > - hysteresis = <2000>; > > - type = "passive"; > > - }; > > - > > - cpu_alert2: cpu_alert2 { > > - temperature = <75000>; > > - hysteresis = <2000>; > > - type = "passive"; > > - }; > > - > > - cpu_crit: cpu_crit { > > - temperature = <95000>; > > - hysteresis = <2000>; > > - type = "critical"; > > - }; > > + cpu_alert0: cpu_alert0 { > > + temperature = <65000>; > > + hysteresis = <2000>; > > + type = "passive"; > > + }; > > + > > + cpu_alert1: cpu_alert1 { > > + temperature = <70000>; > > + hysteresis = <2000>; > > + type = "passive"; > > + }; > > + > > + cpu_alert2: cpu_alert2 { > > + temperature = <75000>; > > + hysteresis = <2000>; > > + type = "passive"; > > + }; > > + > > + cpu_crit: cpu_crit { > > + temperature = <95000>; > > + hysteresis = <2000>; > > + type = "critical"; > > + }; > > }; > > > > cooling-maps { > > - map0 { > > - trip = <&cpu_alert1>; > > - cooling-device = <&{/cpus/cpu@100/thermal-idle} 0 15 >, > > - <&{/cpus/cpu@101/thermal-idle} 0 15>; > > - }; > > - > > - map1 { > > - trip = <&cpu_alert2>; > > - cooling-device = > > - <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, > > - <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; > > - }; > > + map0 { > > + trip = <&cpu_alert1>; > > + cooling-device = <&cpu_b0 0 15 >, > > + <&cpu_b1 0 15>; > > This is pointing to the DVFS cooling device, not the idle cooling > device. Should it be <&cpu_b0_idle 0 15> and that label defined in > thermal_idle ? Ah, yes indeed. I'll fix that up with a label to the correct node. And note that 'thermal-idle' needs to be added to cpu node schema. That one currently allows anything extra which I'm working on addressing. Rob