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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Icenowy Zheng <icenowy@xxxxxxx>

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@xxxxxxx>
---
 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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux