All of lore.kernel.org
 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; 39+ 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] 39+ 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; 39+ 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] 39+ messages in thread

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

Thread overview: 39+ 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:03       ` kernel test robot
2021-04-15 18:52       ` Ansuel Smith
2021-04-15 18:52         ` Ansuel Smith
2021-04-19  8:58         ` Daniel Lezcano
2021-04-19  8:58           ` Daniel Lezcano
2021-04-19 12:08           ` Ansuel Smith
2021-04-19 12:08             ` Ansuel Smith
2021-04-20  7:16             ` Daniel Lezcano
2021-04-20  7:16               ` Daniel Lezcano
2021-04-20 11:04               ` Ansuel Smith
2021-04-20 11:04                 ` Ansuel Smith
2021-04-20 11:32                 ` Daniel Lezcano
2021-04-20 11:32                   ` Daniel Lezcano
2021-04-20 18:36                   ` Ansuel Smith
2021-04-20 18:36                     ` Ansuel Smith
2021-04-15 20:27     ` kernel test robot
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
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.