summaryrefslogtreecommitdiff
path: root/drivers/thermal/armada_thermal.c
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2022-10-03 12:25:47 +0300
committerDaniel Lezcano <daniel.lezcano@kernel.org>2023-01-06 16:14:47 +0300
commiteb2bb3be1384d91b65c7ca956f6fe7bfd5391ee2 (patch)
tree6e388b5fffcd222da339dc08782d206adc8edc9a /drivers/thermal/armada_thermal.c
parent1fa86b0a36927ed13a1505c9ee7b80c66718c733 (diff)
downloadlinux-eb2bb3be1384d91b65c7ca956f6fe7bfd5391ee2.tar.xz
thermal/drivers/armada: Use generic thermal_zone_get_trip() function
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> Link: https://lore.kernel.org/r/20221003092602.1323944-15-daniel.lezcano@linaro.org
Diffstat (limited to 'drivers/thermal/armada_thermal.c')
-rw-r--r--drivers/thermal/armada_thermal.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
index 52d63b3997fe..b28695a55eea 100644
--- a/drivers/thermal/armada_thermal.c
+++ b/drivers/thermal/armada_thermal.c
@@ -785,33 +785,34 @@ static int armada_configure_overheat_int(struct armada_thermal_priv *priv,
int sensor_id)
{
/* Retrieve the critical trip point to enable the overheat interrupt */
- const struct thermal_trip *trips = of_thermal_get_trip_points(tz);
+ struct thermal_trip trip;
int ret;
int i;
- if (!trips)
- return -EINVAL;
+ for (i = 0; i < thermal_zone_get_num_trips(tz); i++) {
- for (i = 0; i < of_thermal_get_ntrips(tz); i++)
- if (trips[i].type == THERMAL_TRIP_CRITICAL)
- break;
+ ret = thermal_zone_get_trip(tz, i, &trip);
+ if (ret)
+ return ret;
- if (i == of_thermal_get_ntrips(tz))
- return -EINVAL;
+ if (trip.type != THERMAL_TRIP_CRITICAL)
+ continue;
- ret = armada_select_channel(priv, sensor_id);
- if (ret)
- return ret;
+ ret = armada_select_channel(priv, sensor_id);
+ if (ret)
+ return ret;
- armada_set_overheat_thresholds(priv,
- trips[i].temperature,
- trips[i].hysteresis);
- priv->overheat_sensor = tz;
- priv->interrupt_source = sensor_id;
+ armada_set_overheat_thresholds(priv, trip.temperature,
+ trip.hysteresis);
+ priv->overheat_sensor = tz;
+ priv->interrupt_source = sensor_id;
- armada_enable_overheat_interrupt(priv);
+ armada_enable_overheat_interrupt(priv);
- return 0;
+ return 0;
+ }
+
+ return -EINVAL;
}
static int armada_thermal_probe(struct platform_device *pdev)