[PATCH 2/2] thermal: sun8i: add R329 THS

icenowy at outlook.com icenowy at outlook.com
Fri Apr 22 09:11:56 PDT 2022


From: Icenowy Zheng <icenowy at aosc.io>

The thermal sensor controller on R329 is similar to the one on H6, but
with only one sensor. Calibration method is still unknown because no
calibration is implemented in BSP kernel, neither is it documented in
the user manual.

Add its support to sun8i-thermal driver. Calibrating it is now
prevented.

Signed-off-by: Icenowy Zheng <icenowy at aosc.io>
---
 drivers/thermal/sun8i_thermal.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/thermal/sun8i_thermal.c b/drivers/thermal/sun8i_thermal.c
index d9cd23cbb671..3a2f381005b4 100644
--- a/drivers/thermal/sun8i_thermal.c
+++ b/drivers/thermal/sun8i_thermal.c
@@ -312,7 +312,8 @@ static int sun8i_ths_calibrate(struct ths_device *tmdev)
 		goto out;
 	}
 
-	tmdev->chip->calibrate(tmdev, caldata, callen);
+	if (tmdev->chip->calibrate)
+		tmdev->chip->calibrate(tmdev, caldata, callen);
 
 	kfree(caldata);
 out:
@@ -628,6 +629,17 @@ static const struct ths_thermal_chip sun50i_h6_ths = {
 	.calc_temp = sun8i_ths_calc_temp,
 };
 
+static const struct ths_thermal_chip sun50i_r329_ths = {
+	.sensor_num = 1,
+	.has_bus_clk_reset = true,
+	.offset = 188744,
+	.scale = 672,
+	.temp_data_base = SUN50I_H6_THS_TEMP_DATA,
+	.init = sun50i_h6_thermal_init,
+	.irq_ack = sun50i_h6_irq_ack,
+	.calc_temp = sun8i_ths_calc_temp,
+};
+
 static const struct of_device_id of_ths_match[] = {
 	{ .compatible = "allwinner,sun8i-a83t-ths", .data = &sun8i_a83t_ths },
 	{ .compatible = "allwinner,sun8i-h3-ths", .data = &sun8i_h3_ths },
@@ -636,6 +648,7 @@ static const struct of_device_id of_ths_match[] = {
 	{ .compatible = "allwinner,sun50i-a100-ths", .data = &sun50i_a100_ths },
 	{ .compatible = "allwinner,sun50i-h5-ths", .data = &sun50i_h5_ths },
 	{ .compatible = "allwinner,sun50i-h6-ths", .data = &sun50i_h6_ths },
+	{ .compatible = "allwinner,sun50i-r329-ths", .data = &sun50i_r329_ths },
 	{ /* sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, of_ths_match);
-- 
2.35.1




More information about the linux-arm-kernel mailing list