linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v14 0/9] Add support for ipq8064 tsens
@ 2021-04-04 14:48 Ansuel Smith
  2021-04-04 14:48 ` [PATCH v14 1/9] drivers: thermal: tsens: Add VER_0 tsens version Ansuel Smith
                   ` (9 more replies)
  0 siblings, 10 replies; 30+ messages in thread
From: Ansuel Smith @ 2021-04-04 14:48 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: Ansuel Smith, Amit Kucheria, Andy Gross, Bjorn Andersson,
	Zhang Rui, Rob Herring, linux-pm, linux-arm-msm, devicetree,
	linux-kernel

This patchset convert msm8960 to reg_filed, use int_common instead 
of a custom function and fix wrong tsens get_temp function for msm8960.
Ipq8064 SoCs tsens driver is based on 8960 tsens driver. Ipq8064 needs
to be registered as a gcc child as the tsens regs on this platform are
shared with the controller.
This is based on work and code here
https://git.linaro.org/people/amit.kucheria/kernel.git/log/?h=wrk3/tsens-8960-breakage

v14:
* Fix warning reported by Dan Carpenter
v13:
* Simple reword
v12:
* Even more fix reported by Thara
v11:
* Address comments from Thara (thx)
v10:
* Fix wrong tsens init for ver_0 (crit_trips needs to be set in tsens_register)
v9:
* Fix warning from Documentation bot
v8:
* Drop MIN and MAX THRESH and use CRIT_THRESH instead
* Fix broken documentation patch
v7:
* Rework calibrate function to use get_temp_common
* Fix wrong required in the Documentation for ipq8064
* Fix hardware bug in sensor enable function
v6:
* Fix spelling error (can't find the problem with variable misallignment)
* Rework big if-else
* Remove extra comments
* Add description about different interrupts
v5:
* Conver driver to use reg_fiedl
* Use init_common 
* Drop custom set_trip and set_interrupt
* Use common set_trip and set_interrupt
* Fix bad get_temp function
* Add missing hardcoded slope
v4:
* Fix compilation error and warning reported by the bot
v3:
* Change driver to register as child instead of use phandle
v2:
* Fix dt-bindings problems

Ansuel Smith (9):
  drivers: thermal: tsens: Add VER_0 tsens version
  drivers: thermal: tsens: Don't hardcode sensor slope
  drivers: thermal: tsens: Convert msm8960 to reg_field
  drivers: thermal: tsens: Use init_common for msm8960
  drivers: thermal: tsens: Fix bug in sensor enable for msm8960
  drivers: thermal: tsens: Replace custom 8960 apis with generic apis
  drivers: thermal: tsens: Drop unused define for msm8960
  drivers: thermal: tsens: Add support for ipq8064-tsens
  dt-bindings: thermal: tsens: Document ipq8064 bindings

 .../bindings/thermal/qcom-tsens.yaml          |  56 ++++-
 drivers/thermal/qcom/tsens-8960.c             | 233 +++++++++---------
 drivers/thermal/qcom/tsens.c                  | 156 +++++++++---
 drivers/thermal/qcom/tsens.h                  |   4 +-
 4 files changed, 292 insertions(+), 157 deletions(-)

-- 
2.30.2


^ permalink raw reply	[flat|nested] 30+ messages in thread
* [thermal PATCH v15 2/9] drivers: thermal: tsens: Convert msm8960 to reg_field
@ 2021-04-20 18:33 Ansuel Smith
  2021-04-27 19:44 ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
  0 siblings, 1 reply; 30+ messages in thread
From: Ansuel Smith @ 2021-04-20 18:33 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: Ansuel Smith, Thara Gopinath, Amit Kucheria, Andy Gross,
	Bjorn Andersson, Zhang Rui, Rob Herring, linux-pm, linux-arm-msm,
	devicetree, linux-kernel

Convert msm9860 driver to reg_field to use the init_common
function.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
Acked-by: Thara Gopinath <thara.gopinath@linaro.org>
---
 drivers/thermal/qcom/tsens-8960.c | 73 ++++++++++++++++++++++++++++++-
 1 file changed, 71 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c
index 2a28a5af2..0d0c2647d 100644
--- a/drivers/thermal/qcom/tsens-8960.c
+++ b/drivers/thermal/qcom/tsens-8960.c
@@ -51,11 +51,22 @@
 #define MIN_LIMIT_TH		0x0
 #define MAX_LIMIT_TH		0xff
 
-#define S0_STATUS_ADDR		0x3628
 #define INT_STATUS_ADDR		0x363c
 #define TRDY_MASK		BIT(7)
 #define TIMEOUT_US		100
 
+#define S0_STATUS_OFF		0x3628
+#define S1_STATUS_OFF		0x362c
+#define S2_STATUS_OFF		0x3630
+#define S3_STATUS_OFF		0x3634
+#define S4_STATUS_OFF		0x3638
+#define S5_STATUS_OFF		0x3664  /* Sensors 5-10 found on apq8064/msm8960 */
+#define S6_STATUS_OFF		0x3668
+#define S7_STATUS_OFF		0x366c
+#define S8_STATUS_OFF		0x3670
+#define S9_STATUS_OFF		0x3674
+#define S10_STATUS_OFF		0x3678
+
 static int suspend_8960(struct tsens_priv *priv)
 {
 	int ret;
@@ -179,7 +190,7 @@ static int init_8960(struct tsens_priv *priv)
 	 */
 	for (i = 0; i < priv->num_sensors; i++) {
 		if (i >= 5)
-			priv->sensor[i].status = S0_STATUS_ADDR + 40;
+			priv->sensor[i].status = S0_STATUS_OFF + 40;
 		priv->sensor[i].status += i * 4;
 	}
 
@@ -269,6 +280,63 @@ static int get_temp_8960(const struct tsens_sensor *s, int *temp)
 	return -ETIMEDOUT;
 }
 
+static const struct reg_field tsens_8960_regfields[MAX_REGFIELDS] = {
+	/* ----- SROT ------ */
+	/* No VERSION information */
+
+	/* CNTL */
+	[TSENS_EN]     = REG_FIELD(CNTL_ADDR,  0, 0),
+	[TSENS_SW_RST] = REG_FIELD(CNTL_ADDR,  1, 1),
+	/* 8960 has 5 sensors, 8660 has 11, we only handle 5 */
+	[SENSOR_EN]    = REG_FIELD(CNTL_ADDR,  3, 7),
+
+	/* ----- TM ------ */
+	/* INTERRUPT ENABLE */
+	/* NO INTERRUPT ENABLE */
+
+	/* Single UPPER/LOWER TEMPERATURE THRESHOLD for all sensors */
+	[LOW_THRESH_0]   = REG_FIELD(THRESHOLD_ADDR,  0,  7),
+	[UP_THRESH_0]    = REG_FIELD(THRESHOLD_ADDR,  8, 15),
+	/* MIN_THRESH_0 and MAX_THRESH_0 are not present in the regfield
+	 * Recycle CRIT_THRESH_0 and 1 to set the required regs to hardcoded temp
+	 * MIN_THRESH_0 -> CRIT_THRESH_1
+	 * MAX_THRESH_0 -> CRIT_THRESH_0
+	 */
+	[CRIT_THRESH_1]   = REG_FIELD(THRESHOLD_ADDR, 16, 23),
+	[CRIT_THRESH_0]   = REG_FIELD(THRESHOLD_ADDR, 24, 31),
+
+	/* UPPER/LOWER INTERRUPT [CLEAR/STATUS] */
+	/* 1 == clear, 0 == normal operation */
+	[LOW_INT_CLEAR_0]   = REG_FIELD(CNTL_ADDR,  9,  9),
+	[UP_INT_CLEAR_0]    = REG_FIELD(CNTL_ADDR, 10, 10),
+
+	/* NO CRITICAL INTERRUPT SUPPORT on 8960 */
+
+	/* Sn_STATUS */
+	[LAST_TEMP_0]  = REG_FIELD(S0_STATUS_OFF,  0,  7),
+	[LAST_TEMP_1]  = REG_FIELD(S1_STATUS_OFF,  0,  7),
+	[LAST_TEMP_2]  = REG_FIELD(S2_STATUS_OFF,  0,  7),
+	[LAST_TEMP_3]  = REG_FIELD(S3_STATUS_OFF,  0,  7),
+	[LAST_TEMP_4]  = REG_FIELD(S4_STATUS_OFF,  0,  7),
+	[LAST_TEMP_5]  = REG_FIELD(S5_STATUS_OFF,  0,  7),
+	[LAST_TEMP_6]  = REG_FIELD(S6_STATUS_OFF,  0,  7),
+	[LAST_TEMP_7]  = REG_FIELD(S7_STATUS_OFF,  0,  7),
+	[LAST_TEMP_8]  = REG_FIELD(S8_STATUS_OFF,  0,  7),
+	[LAST_TEMP_9]  = REG_FIELD(S9_STATUS_OFF,  0,  7),
+	[LAST_TEMP_10] = REG_FIELD(S10_STATUS_OFF, 0,  7),
+
+	/* No VALID field on 8960 */
+	/* TSENS_INT_STATUS bits: 1 == threshold violated */
+	[MIN_STATUS_0] = REG_FIELD(INT_STATUS_ADDR, 0, 0),
+	[LOWER_STATUS_0] = REG_FIELD(INT_STATUS_ADDR, 1, 1),
+	[UPPER_STATUS_0] = REG_FIELD(INT_STATUS_ADDR, 2, 2),
+	/* No CRITICAL field on 8960 */
+	[MAX_STATUS_0] = REG_FIELD(INT_STATUS_ADDR, 3, 3),
+
+	/* TRDY: 1=ready, 0=in progress */
+	[TRDY] = REG_FIELD(INT_STATUS_ADDR, 7, 7),
+};
+
 static const struct tsens_ops ops_8960 = {
 	.init		= init_8960,
 	.calibrate	= calibrate_8960,
@@ -282,4 +350,5 @@ static const struct tsens_ops ops_8960 = {
 struct tsens_plat_data data_8960 = {
 	.num_sensors	= 11,
 	.ops		= &ops_8960,
+	.fields		= tsens_8960_regfields,
 };
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2021-04-27 19:44 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-04 14:48 [PATCH v14 0/9] Add support for ipq8064 tsens Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 1/9] drivers: thermal: tsens: Add VER_0 tsens version Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 2/9] drivers: thermal: tsens: Don't hardcode sensor slope Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 3/9] drivers: thermal: tsens: Convert msm8960 to reg_field Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-15 18:03     ` kernel test robot
2021-04-15 18:52       ` Ansuel Smith
2021-04-19  8:58         ` Daniel Lezcano
2021-04-19 12:08           ` Ansuel Smith
2021-04-20  7:16             ` Daniel Lezcano
2021-04-20 11:04               ` Ansuel Smith
2021-04-20 11:32                 ` Daniel Lezcano
2021-04-20 18:36                   ` Ansuel Smith
2021-04-15 20:27     ` kernel test robot
2021-04-04 14:48 ` [PATCH v14 4/9] drivers: thermal: tsens: Use init_common for msm8960 Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 5/9] drivers: thermal: tsens: Fix bug in sensor enable " Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 6/9] drivers: thermal: tsens: Replace custom 8960 apis with generic apis Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 7/9] drivers: thermal: tsens: Drop unused define for msm8960 Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 8/9] drivers: thermal: tsens: Add support for ipq8064-tsens Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith
2021-04-04 14:48 ` [PATCH v14 9/9] dt-bindings: thermal: tsens: Document ipq8064 bindings Ansuel Smith
2021-04-15 12:03   ` [thermal: thermal/next] " thermal-bot for Ansuel Smith
2021-04-05 22:57 ` [PATCH v14 0/9] Add support for ipq8064 tsens Daniel Lezcano
  -- strict thread matches above, loose matches on Subject: below --
2021-04-20 18:33 [thermal PATCH v15 2/9] drivers: thermal: tsens: Convert msm8960 to reg_field Ansuel Smith
2021-04-27 19:44 ` [thermal: thermal/next] thermal/drivers/tsens: " thermal-bot for Ansuel Smith

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).