Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

thermal/drivers/tsens: Allow configuring min and max trips

IPQ8074 and IPQ6018 dont support negative trip temperatures and support
up to 204 degrees C as the max trip temperature.

So, instead of always setting the -40 as min and 120 degrees C as max
allow it to be configured as part of the features.

Signed-off-by: Robert Marko <robimarko@gmail.com>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220818220245.338396-3-robimarko@gmail.com
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

authored by

Robert Marko and committed by
Daniel Lezcano
f63baced 4360af35

+14 -2
+2
drivers/thermal/qcom/tsens-8960.c
··· 273 273 .adc = 1, 274 274 .srot_split = 0, 275 275 .max_sensors = 11, 276 + .trip_min_temp = -40000, 277 + .trip_max_temp = 120000, 276 278 }; 277 279 278 280 struct tsens_plat_data data_8960 = {
+2
drivers/thermal/qcom/tsens-v0_1.c
··· 543 543 .adc = 1, 544 544 .srot_split = 1, 545 545 .max_sensors = 11, 546 + .trip_min_temp = -40000, 547 + .trip_max_temp = 120000, 546 548 }; 547 549 548 550 static const struct reg_field tsens_v0_1_regfields[MAX_REGFIELDS] = {
+2
drivers/thermal/qcom/tsens-v1.c
··· 306 306 .adc = 1, 307 307 .srot_split = 1, 308 308 .max_sensors = 11, 309 + .trip_min_temp = -40000, 310 + .trip_max_temp = 120000, 309 311 }; 310 312 311 313 static const struct reg_field tsens_v1_regfields[MAX_REGFIELDS] = {
+2
drivers/thermal/qcom/tsens-v2.c
··· 35 35 .adc = 0, 36 36 .srot_split = 1, 37 37 .max_sensors = 16, 38 + .trip_min_temp = -40000, 39 + .trip_max_temp = 120000, 38 40 }; 39 41 40 42 static const struct reg_field tsens_v2_regfields[MAX_REGFIELDS] = {
+2 -2
drivers/thermal/qcom/tsens.c
··· 573 573 dev_dbg(dev, "[%u] %s: proposed thresholds: (%d:%d)\n", 574 574 hw_id, __func__, low, high); 575 575 576 - cl_high = clamp_val(high, -40000, 120000); 577 - cl_low = clamp_val(low, -40000, 120000); 576 + cl_high = clamp_val(high, priv->feat->trip_min_temp, priv->feat->trip_max_temp); 577 + cl_low = clamp_val(low, priv->feat->trip_min_temp, priv->feat->trip_max_temp); 578 578 579 579 high_val = tsens_mC_to_hw(s, cl_high); 580 580 low_val = tsens_mC_to_hw(s, cl_low);
+4
drivers/thermal/qcom/tsens.h
··· 499 499 * with SROT only being available to secure boot firmware? 500 500 * @has_watchdog: does this IP support watchdog functionality? 501 501 * @max_sensors: maximum sensors supported by this version of the IP 502 + * @trip_min_temp: minimum trip temperature supported by this version of the IP 503 + * @trip_max_temp: maximum trip temperature supported by this version of the IP 502 504 */ 503 505 struct tsens_features { 504 506 unsigned int ver_major; ··· 510 508 unsigned int srot_split:1; 511 509 unsigned int has_watchdog:1; 512 510 unsigned int max_sensors; 511 + int trip_min_temp; 512 + int trip_max_temp; 513 513 }; 514 514 515 515 /**