Messages in this thread | | | Date | Thu, 19 Dec 2019 14:51:03 -0800 | From | Matthias Kaehlcke <> | Subject | Re: [PATCH 2/2] thermal: cpuidle: Register cpuidle cooling device |
| |
Hi Daniel,
On Thu, Dec 19, 2019 at 11:19:28PM +0100, Daniel Lezcano wrote: > The cpuidle driver can be used as a cooling device by injecting idle > cycles. The DT binding for the idle state added an optional > > When the property is set, register the cpuidle driver with the idle > state node pointer as a cooling device. The thermal framework will do > the association automatically with the thermal zone via the > cooling-device defined in the device tree cooling-maps section. > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > --- > drivers/cpuidle/dt_idle_states.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/cpuidle/dt_idle_states.c b/drivers/cpuidle/dt_idle_states.c > index d06d21a9525d..34bd65197342 100644 > --- a/drivers/cpuidle/dt_idle_states.c > +++ b/drivers/cpuidle/dt_idle_states.c > @@ -8,6 +8,7 @@ > > #define pr_fmt(fmt) "DT idle-states: " fmt > > +#include <linux/cpu_cooling.h> > #include <linux/cpuidle.h> > #include <linux/cpumask.h> > #include <linux/errno.h> > @@ -205,6 +206,13 @@ int dt_init_idle_driver(struct cpuidle_driver *drv, > err = -EINVAL; > break; > } > + > + if (of_find_property(state_node, "#cooling-cells", NULL)) { > + err = cpuidle_of_cooling_register(state_node, drv);
cpuidle_of_cooling_register() returns a struct thermal_cooling_device *, so you probably want to use PTR_ERR() here.
Could it be a problem that the cooling device isn't unregistered even when all associated cores are taken offline?
| |