Thread (15 messages) 15 messages, 4 authors, 2017-09-01

Re: [PATCH v2 2/4] thermal: mediatek: add Mediatek thermal driver for mt2712

From: Zhang Rui <rui.zhang@intel.com>
Date: 2017-08-31 13:10:38
Also in: linux-pm

On Fri, 2017-08-25 at 11:39 +0800, Dawei Chien wrote:
On Fri, 2017-08-25 at 11:23 +0800, Zhang Rui wrote:
quoted
Hi, Dawei,


On Fri, 2017-08-25 at 11:10 +0800, Dawei Chien wrote:
quoted
On Fri, 2017-08-25 at 10:30 +0800, Zhang Rui wrote:
quoted

On Tue, 2017-08-08 at 21:23 +0800, Zhang Rui wrote:
quoted

On Tue, 2017-08-01 at 15:28 +0800, Louis Yu wrote:
quoted


This patch adds support for mt2712 chip to mtk_thermal,
and integrate mt2712 into the same mediatek thermal driver.
MT2712 has only 1 bank and 4 sensors.

Signed-off-by: Louis Yu <redacted>
---
 drivers/thermal/mtk_thermal.c | 70
++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 66 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/mtk_thermal.c
b/drivers/thermal/mtk_thermal.c
index 7737f14..e35d28d 100644
--- a/drivers/thermal/mtk_thermal.c
+++ b/drivers/thermal/mtk_thermal.c
@@ -3,6 +3,7 @@
  * Author: Hanyi Wu [off-list ref]
  *         Sascha Hauer [off-list ref]
  *         Dawei Chien [off-list ref]
+ *         Louis Yu [off-list ref]
I need the feedback from the previous authors for the changes
in
all
this patch set.
Hanyi, Sascha and Dawei,

can you please review this patch and let me know your opinion?

thanks,
rui
Hi Rui,
In my opinion, I agree this patch set for supporting MT2712
thermal
sensor.

Reviewed-by: Dawei Chien <redacted>
thanks for reviewing.
quoted
quoted
quoted
quoted


  *
  * This program is free software; you can redistribute it
and/or
modify
  * it under the terms of the GNU General Public License
version 2
as
@@ -111,9 +112,10 @@
 
 /*
  * Layout of the fuses providing the calibration data
- * These macros could be used for both MT8173 and MT2701.
+ * These macros could be used for both MT8173, MT2701, and
MT2712.
  * MT8173 has five sensors and need five VTS calibration
data,
- * and MT2701 has three sensors and need three VTS
calibration
data.
+ * and MT2701 has three sensors and need three VTS
calibration
data,
+ * and MT2712 has four sensors and need four VTS
calibration
data.
  */
why bother change these comments again in patch 3/4?

thanks,
rui
Hi Rui,
May we know your opinion if this patch set need merge patch2/3/4
what do you mean? If you're okay with this, I will merge the full
patch
set.

thanks,
rui
Hi Rui,
It's okay to me. Since we saw your comment "why bother change these
comments again in patch 3/4?", so I think you might suggest to merge
patch2/patch3/patch4 to one patch.
I will take patch 2, 3 and 4 as separate patches.
BTW, is it okay for me to add your Reviewed-by for all the patch
series?

thanks,
rui
BR,
Dawei
quoted
quoted
quoted
quoted
quoted


 #define MT8173_CALIB_BUF0_VALID		BIT(0)
 #define MT8173_CALIB_BUF1_ADC_GE(x)	(((x) >> 22) &
0x3ff)
@@ -136,11 +138,26 @@
 /* The total number of temperature sensors in the MT2701
*/
 #define MT2701_NUM_SENSORS	3
 
-#define THERMAL_NAME    "mtk-thermal"
-
 /* The number of sensing points per bank */
 #define MT2701_NUM_SENSORS_PER_ZONE	3
 
+/* MT2712 thermal sensors */
+#define MT2712_TS1	0
+#define MT2712_TS2	1
+#define MT2712_TS3	2
+#define MT2712_TS4	3
+
+/* AUXADC channel 11 is used for the temperature sensors
*/
+#define MT2712_TEMP_AUXADC_CHANNEL	11
+
+/* The total number of temperature sensors in the MT2712
*/
+#define MT2712_NUM_SENSORS	4
+
+/* The number of sensing points per bank */
+#define MT2712_NUM_SENSORS_PER_ZONE	4
+
+#define THERMAL_NAME    "mtk-thermal"
+
 struct mtk_thermal;
 
 struct thermal_bank_cfg {
@@ -215,6 +232,21 @@ struct mtk_thermal {
 
 static const int mt2701_mux_values[MT2701_NUM_SENSORS] = {
0,
1,
16
};
 
+/* MT2712 thermal sensor data */
+static const int mt2712_bank_data[MT2712_NUM_SENSORS] = {
+	MT2712_TS1, MT2712_TS2, MT2712_TS3, MT2712_TS4
+};
+
+static const int mt2712_msr[MT2712_NUM_SENSORS_PER_ZONE] =
{
+	TEMP_MSR0, TEMP_MSR1, TEMP_MSR2, TEMP_MSR3
+};
+
+static const int
mt2712_adcpnp[MT2712_NUM_SENSORS_PER_ZONE] =
{
+	TEMP_ADCPNP0, TEMP_ADCPNP1, TEMP_ADCPNP2,
TEMP_ADCPNP3
+};
+
+static const int mt2712_mux_values[MT2712_NUM_SENSORS] = {
0,
1,
2,
3 };
+
 /**
  * The MT8173 thermal controller has four banks. Each bank
can
read
up to
  * four temperature sensors simultaneously. The MT8173 has
a
total
of 5
@@ -278,6 +310,31 @@ struct mtk_thermal {
 };
 
 /**
+ * The MT2712 thermal controller has one bank, which can
read
up
to
+ * four temperature sensors simultaneously. The MT2712 has
a
total
of 4
+ * temperature sensors.
+ *
+ * The thermal core only gets the maximum temperature of
this
one
bank,
+ * so the bank concept wouldn't be necessary here.
However,
the
SVS
(Smart
+ * Voltage Scaling) unit makes its decisions based on the
same
bank
+ * data.
+ */
+static const struct mtk_thermal_data mt2712_thermal_data =
{
+	.auxadc_channel = MT2712_TEMP_AUXADC_CHANNEL,
+	.num_banks = 1,
+	.num_sensors = MT2712_NUM_SENSORS,
+	.bank_data = {
+		{
+			.num_sensors = 4,
+			.sensors = mt2712_bank_data,
+		},
+	},
+	.msr = mt2712_msr,
+	.adcpnp = mt2712_adcpnp,
+	.sensor_mux_values = mt2712_mux_values,
+};
+
+/**
  * raw_to_mcelsius - convert a raw ADC value to mcelsius
  * @mt:		The thermal controller
  * @raw:	raw ADC value
@@ -571,6 +628,10 @@ static int
mtk_thermal_get_calibration_data(struct device *dev,
 	{
 		.compatible = "mediatek,mt2701-thermal",
 		.data = (void *)&mt2701_thermal_data,
+	},
+	{
+		.compatible = "mediatek,mt2712-thermal",
+		.data = (void *)&mt2712_thermal_data,
 	}, {
 	},
 };
@@ -705,6 +766,7 @@ static int mtk_thermal_remove(struct
platform_device *pdev)
 
 module_platform_driver(mtk_thermal_driver);
 
+MODULE_AUTHOR("Louis Yu [off-list ref]");
 MODULE_AUTHOR("Dawei Chien [off-list ref]");
 MODULE_AUTHOR("Sascha Hauer [off-list ref]");
 MODULE_AUTHOR("Hanyi Wu [off-list ref]");
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help