Re: [PATCH 1/2] DT: bindings: Add cooling cells for idle states

From: Rob Herring
Date: Mon Jan 13 2020 - 11:16:57 EST


On Sat, Jan 11, 2020 at 11:32 AM Daniel Lezcano
<daniel.lezcano@xxxxxxxxxx> wrote:
>
> Hi Rob,
>
>
> On Wed, 8 Jan 2020 at 15:03, Rob Herring <robh@xxxxxxxxxx> wrote:
> >
> > On Thu, Dec 19, 2019 at 11:19:27PM +0100, Daniel Lezcano wrote:
> > > Add DT documentation to add an idle state as a cooling device. The CPU
> > > is actually the cooling device but the definition is already used by
> > > frequency capping. As we need to make cpufreq capping and idle
> > > injection to co-exist together on the system in order to mitigate at
> > > different trip points, the CPU can not be used as the cooling device
> > > for idle injection. The idle state can be seen as an hardware feature
> > > and therefore as a component for the passive mitigation.
> > >
> > > Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
> > > ---
> > > Documentation/devicetree/bindings/arm/idle-states.txt | 11 +++++++++++
> > > 1 file changed, 11 insertions(+)
> >
> > This is now a schema in my tree. Can you rebase on that and I'll pick up
> > the binding change.
>
> Mmh, I'm now having some doubts about this binding because it will
> restrict any improvement of the cooling device for the future.
>
> It looks like adding a node to the CPU for the cooling device is more
> adequate.
> eg:
> CPU0: cpu@300 {
> device_type = "cpu";
> compatible = "arm,cortex-a9";
> reg = <0x300>;
> /* cpufreq controls */
> operating-points = <998400 0
> 800000 0
> 400000 0
> 200000 0>;
> clocks = <&prcmu_clk PRCMU_ARMSS>;
> clock-names = "cpu";
> clock-latency = <20000>;
> #cooling-cells = <2>;
> thermal-idle {
> #cooling-cells = <2>;
> };
> };
>
> [ ... ]
>
> cooling-device = <&{/cpus/cpu@300/thermal-idle}
> THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
>
> A quick test with different configurations combination shows it is much
> more flexible and it is open for future changes.
>
> What do you think?

Why do you need #cooling-cells in both cpu node and a child node? It's
really only 1 device.

Maybe you could add another cell to contain an idle state node if that helps?

Rob