Hi Daniel, Thanks for your work. On 2022-07-10 23:24:07 +0200, Daniel Lezcano wrote: > The thermal OF code has a new API allowing to migrate the OF > initialization to a simpler approach. > > Use this new API. I tested this together with the series it depends on and while temperature monitoring seems to work fine it breaks the emul_temp interface (/sys/class/thermal/thermal_zone2/emul_temp). Before this change I can write a temperature to this file and have it trigger actions, in my test-case changing the cooling state, which I observe in /sys/class/thermal/cooling_device0/cur_state. Likewise before this change I could trip the critical trip-point that would power off the board using the emul_temp interface, this too no longer works, echo 120000 > /sys/class/thermal/thermal_zone2/emul_temp Is this an intention change of the new API? > > Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> > --- > drivers/thermal/rcar_gen3_thermal.c | 16 ++++++++-------- > drivers/thermal/rcar_thermal.c | 13 +++---------- > 2 files changed, 11 insertions(+), 18 deletions(-) > > diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c > index 43eb25b167bc..29946114a8f9 100644 > --- a/drivers/thermal/rcar_gen3_thermal.c > +++ b/drivers/thermal/rcar_gen3_thermal.c > @@ -164,9 +164,9 @@ static int rcar_gen3_thermal_round(int temp) > return result * RCAR3_THERMAL_GRAN; > } > > -static int rcar_gen3_thermal_get_temp(void *devdata, int *temp) > +static int rcar_gen3_thermal_get_temp(struct thermal_zone_device *tz, int *temp) > { > - struct rcar_gen3_thermal_tsc *tsc = devdata; > + struct rcar_gen3_thermal_tsc *tsc = tz->devdata; > int mcelsius, val; > int reg; > > @@ -203,9 +203,9 @@ static int rcar_gen3_thermal_mcelsius_to_temp(struct rcar_gen3_thermal_tsc *tsc, > return INT_FIXPT(val); > } > > -static int rcar_gen3_thermal_set_trips(void *devdata, int low, int high) > +static int rcar_gen3_thermal_set_trips(struct thermal_zone_device *tz, int low, int high) > { > - struct rcar_gen3_thermal_tsc *tsc = devdata; > + struct rcar_gen3_thermal_tsc *tsc = tz->devdata; > u32 irqmsk = 0; > > if (low != -INT_MAX) { > @@ -225,7 +225,7 @@ static int rcar_gen3_thermal_set_trips(void *devdata, int low, int high) > return 0; > } > > -static struct thermal_zone_of_device_ops rcar_gen3_tz_of_ops = { > +static struct thermal_zone_device_ops rcar_gen3_tz_of_ops = { > .get_temp = rcar_gen3_thermal_get_temp, > .set_trips = rcar_gen3_thermal_set_trips, > }; > @@ -504,8 +504,8 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev) > for (i = 0; i < priv->num_tscs; i++) { > struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i]; > > - zone = devm_thermal_zone_of_sensor_register(dev, i, tsc, > - &rcar_gen3_tz_of_ops); > + zone = devm_thermal_of_zone_register(dev, i, tsc, > + &rcar_gen3_tz_of_ops); > if (IS_ERR(zone)) { > dev_err(dev, "Can't register thermal zone\n"); > ret = PTR_ERR(zone); > @@ -556,7 +556,7 @@ static int __maybe_unused rcar_gen3_thermal_resume(struct device *dev) > > priv->thermal_init(tsc); > if (zone->ops->set_trips) > - rcar_gen3_thermal_set_trips(tsc, zone->prev_low_trip, > + rcar_gen3_thermal_set_trips(zone, zone->prev_low_trip, > zone->prev_high_trip); > } > > diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c > index 1d729ed4d685..4df42d70d867 100644 > --- a/drivers/thermal/rcar_thermal.c > +++ b/drivers/thermal/rcar_thermal.c > @@ -271,13 +271,6 @@ static int rcar_thermal_get_current_temp(struct rcar_thermal_priv *priv, > return 0; > } > > -static int rcar_thermal_of_get_temp(void *data, int *temp) > -{ > - struct rcar_thermal_priv *priv = data; > - > - return rcar_thermal_get_current_temp(priv, temp); > -} > - > static int rcar_thermal_get_temp(struct thermal_zone_device *zone, int *temp) > { > struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone); > @@ -323,8 +316,8 @@ static int rcar_thermal_get_trip_temp(struct thermal_zone_device *zone, > return 0; > } > > -static const struct thermal_zone_of_device_ops rcar_thermal_zone_of_ops = { > - .get_temp = rcar_thermal_of_get_temp, > +static struct thermal_zone_device_ops rcar_thermal_zone_of_ops = { > + .get_temp = rcar_thermal_get_temp, > }; > > static struct thermal_zone_device_ops rcar_thermal_zone_ops = { > @@ -534,7 +527,7 @@ static int rcar_thermal_probe(struct platform_device *pdev) > goto error_unregister; > > if (chip->use_of_thermal) { > - priv->zone = devm_thermal_zone_of_sensor_register( > + priv->zone = devm_thermal_of_zone_register( > dev, i, priv, > &rcar_thermal_zone_of_ops); > } else { > -- > 2.25.1 > -- Kind Regards, Niklas Söderlund