Message ID | 20220805145729.2491611-12-daniel.lezcano@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Rework the trip points creation | expand |
On Fri, Aug 5, 2022 at 8:28 PM Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > > The thermal framework gives the possibility to register the trip > points with the thermal zone. When that is done, no get_trip_* ops are > needed and they can be removed. > > Convert ops content logic into generic trip points and register them with the > thermal zone. > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Acked-by: Amit Kucheria <amitk@kernel.org> > --- > drivers/thermal/qcom/qcom-spmi-temp-alarm.c | 39 +++++++++------------ > 1 file changed, 17 insertions(+), 22 deletions(-) > > diff --git a/drivers/thermal/qcom/qcom-spmi-temp-alarm.c b/drivers/thermal/qcom/qcom-spmi-temp-alarm.c > index be785ab37e53..127e8c90211c 100644 > --- a/drivers/thermal/qcom/qcom-spmi-temp-alarm.c > +++ b/drivers/thermal/qcom/qcom-spmi-temp-alarm.c > @@ -263,17 +263,17 @@ static int qpnp_tm_update_critical_trip_temp(struct qpnp_tm_chip *chip, > return qpnp_tm_write(chip, QPNP_TM_REG_SHUTDOWN_CTRL1, reg); > } > > -static int qpnp_tm_set_trip_temp(struct thermal_zone_device *tz, int trip, int temp) > +static int qpnp_tm_set_trip_temp(struct thermal_zone_device *tz, int trip_id, int temp) > { > struct qpnp_tm_chip *chip = tz->devdata; > - const struct thermal_trip *trip_points; > + struct thermal_trip trip; > int ret; > > - trip_points = of_thermal_get_trip_points(chip->tz_dev); > - if (!trip_points) > - return -EINVAL; > + ret = thermal_zone_get_trip(chip->tz_dev, trip_id, &trip); > + if (ret) > + return ret; > > - if (trip_points[trip].type != THERMAL_TRIP_CRITICAL) > + if (trip.type != THERMAL_TRIP_CRITICAL) > return 0; > > mutex_lock(&chip->lock); > @@ -299,22 +299,17 @@ static irqreturn_t qpnp_tm_isr(int irq, void *data) > > static int qpnp_tm_get_critical_trip_temp(struct qpnp_tm_chip *chip) > { > - int ntrips; > - const struct thermal_trip *trips; > - int i; > - > - ntrips = of_thermal_get_ntrips(chip->tz_dev); > - if (ntrips <= 0) > - return THERMAL_TEMP_INVALID; > - > - trips = of_thermal_get_trip_points(chip->tz_dev); > - if (!trips) > - return THERMAL_TEMP_INVALID; > - > - for (i = 0; i < ntrips; i++) { > - if (of_thermal_is_trip_valid(chip->tz_dev, i) && > - trips[i].type == THERMAL_TRIP_CRITICAL) > - return trips[i].temperature; > + struct thermal_trip trip; > + int i, ret; > + > + for (i = 0; i < thermal_zone_get_num_trips(chip->tz_dev); i++) { > + > + ret = thermal_zone_get_trip(chip->tz_dev, i, &trip); > + if (ret) > + continue; > + > + if (trip.type == THERMAL_TRIP_CRITICAL) > + return trip.temperature; > } > > return THERMAL_TEMP_INVALID; > -- > 2.25.1 >
diff --git a/drivers/thermal/qcom/qcom-spmi-temp-alarm.c b/drivers/thermal/qcom/qcom-spmi-temp-alarm.c index be785ab37e53..127e8c90211c 100644 --- a/drivers/thermal/qcom/qcom-spmi-temp-alarm.c +++ b/drivers/thermal/qcom/qcom-spmi-temp-alarm.c @@ -263,17 +263,17 @@ static int qpnp_tm_update_critical_trip_temp(struct qpnp_tm_chip *chip, return qpnp_tm_write(chip, QPNP_TM_REG_SHUTDOWN_CTRL1, reg); } -static int qpnp_tm_set_trip_temp(struct thermal_zone_device *tz, int trip, int temp) +static int qpnp_tm_set_trip_temp(struct thermal_zone_device *tz, int trip_id, int temp) { struct qpnp_tm_chip *chip = tz->devdata; - const struct thermal_trip *trip_points; + struct thermal_trip trip; int ret; - trip_points = of_thermal_get_trip_points(chip->tz_dev); - if (!trip_points) - return -EINVAL; + ret = thermal_zone_get_trip(chip->tz_dev, trip_id, &trip); + if (ret) + return ret; - if (trip_points[trip].type != THERMAL_TRIP_CRITICAL) + if (trip.type != THERMAL_TRIP_CRITICAL) return 0; mutex_lock(&chip->lock); @@ -299,22 +299,17 @@ static irqreturn_t qpnp_tm_isr(int irq, void *data) static int qpnp_tm_get_critical_trip_temp(struct qpnp_tm_chip *chip) { - int ntrips; - const struct thermal_trip *trips; - int i; - - ntrips = of_thermal_get_ntrips(chip->tz_dev); - if (ntrips <= 0) - return THERMAL_TEMP_INVALID; - - trips = of_thermal_get_trip_points(chip->tz_dev); - if (!trips) - return THERMAL_TEMP_INVALID; - - for (i = 0; i < ntrips; i++) { - if (of_thermal_is_trip_valid(chip->tz_dev, i) && - trips[i].type == THERMAL_TRIP_CRITICAL) - return trips[i].temperature; + struct thermal_trip trip; + int i, ret; + + for (i = 0; i < thermal_zone_get_num_trips(chip->tz_dev); i++) { + + ret = thermal_zone_get_trip(chip->tz_dev, i, &trip); + if (ret) + continue; + + if (trip.type == THERMAL_TRIP_CRITICAL) + return trip.temperature; } return THERMAL_TEMP_INVALID;
The thermal framework gives the possibility to register the trip points with the thermal zone. When that is done, no get_trip_* ops are needed and they can be removed. Convert ops content logic into generic trip points and register them with the thermal zone. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- drivers/thermal/qcom/qcom-spmi-temp-alarm.c | 39 +++++++++------------ 1 file changed, 17 insertions(+), 22 deletions(-)