All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/16] Another round of tsens cleanups
@ 2018-09-12  9:52 Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 01/16] thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address space Amit Kucheria
                   ` (17 more replies)
  0 siblings, 18 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David S. Miller, Andrew Morton,
	Arnd Bergmann, Daniel Lezcano, Greg Kroah-Hartman,
	Mauro Carvalho Chehab, devicetree, linux-pm, linux-soc

This is another series of tsens cleanups before we add interrupt support. This applies on top of 4.19-rc2.

Patches [1-6] can directly be applied by Eduardo.
Patches [9-16] can directly be applied by Andy.
Patches [7-8] introduce a new check and needs review and can then be
applied completely separately by Eduardo. 

There is a *dependency* however. Patch 1 should be applied to the tree
before the DT changes in patches 9 and 10.

In this series, I've collected all outstanding tsens patches by combining
the patches from the v2 posting with 3 DT patches for sdm845 thermal zones
and msm8916 camera and gpu thermal zones. Details are as follows:

- splitup 8916 and 8974 register address spaces for SROT and TM
- cleanups: move to spdx, dead code removal, removal of id field
- Add support to map the SROT address space for DTs that list it separately
- Check if TSENS IP is enabled in firmware by querying the SROT space
- Add myself as maintainer of tsens
- Add one-off patches adding sdm845 thermal zones and msm8916 gpu and
  camera thermal zones to this series.

Changes since v2:
- Split up changes to code and dt and within dt, split into arm and arm64
  patches
- Rearrange the sequence of patches so that the thermal maintainer can pick
  up the first part and the platform maintainer can pick up the latter part
  of the series
- Drop patch 09/11 because it causes some issues on systems with
  non-contiguous enabled sensors e.g. db410c
- Drop patch 10/11 because reg-name property isn't encouraged
- Fix a bug on msm8916 to check if IP is enabled in firmware. This was due
  to the register being at a different offset on msm8916. Fixed by coding
  this information as private data.

Changes since v1:
- Split up changes that split the address space and added qcom,sensors
  property into two separate patches
- Remove brackets in typo correction patch

Amit Kucheria (16):
  thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address
    space
  thermal: tsens: Add SPDX license identifiers
  thermal: tsens: Get rid of dead code
  thermal: tsens: Rename map field in order to add a second address map
  thermal: tsens: Add the SROT address map
  MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers
  thermal: tsens: Pass register offsets as private data
  thermal: tsens: Check if the IP is correctly enabled by firmware
  arm: dts: msm8974: thermal: split address space into two
  arm64: dts: msm8916: thermal: split address space into two
  arm: dts: msm8974: thermal: Add "qcom,sensors" property
  arm64: dts: msm8916: thermal: Add "qcom,sensors" property
  dt-bindings: thermal: Fix a typo in documentation
  arm64: dts: msm8916: Add gpu thermal zone
  arm64: dts: msm8916: Add camera thermal zone
  arm64: dts: sdm845: enable tsens thermal zones

 .../devicetree/bindings/thermal/thermal.txt   |   2 +-
 MAINTAINERS                                   |   7 +
 arch/arm/boot/dts/qcom-msm8974.dtsi           |   6 +-
 arch/arm64/boot/dts/qcom/msm8916.dtsi         |  47 ++++-
 arch/arm64/boot/dts/qcom/sdm845.dtsi          | 170 ++++++++++++++++++
 drivers/thermal/qcom/tsens-8916.c             |  12 +-
 drivers/thermal/qcom/tsens-8960.c             |  41 ++---
 drivers/thermal/qcom/tsens-8974.c             |  12 +-
 drivers/thermal/qcom/tsens-common.c           |  62 ++++---
 drivers/thermal/qcom/tsens-v2.c               |   8 +-
 drivers/thermal/qcom/tsens.c                  |  19 +-
 drivers/thermal/qcom/tsens.h                  |  23 +--
 12 files changed, 309 insertions(+), 100 deletions(-)

-- 
2.17.1

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

* [PATCH v3 01/16] thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address space
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 02/16] thermal: tsens: Add SPDX license identifiers Amit Kucheria
                   ` (16 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

We've already converted over the devicetree of platforms using v2
version of the TSENS IP to use two address spaces. Now prepare to
convert over the 8916 and 8974 platforms to use separate SROT and TM
address spaces.

This patch will work with device trees with one or two address spaces
because we set the tm_offset in commit 5b1283984fa3 ("thermal: tsens:
Add support to split up register address space into two").

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
---
 drivers/thermal/qcom/tsens-common.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 6207d8d92351..478739543bbc 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -21,7 +21,7 @@
 #include <linux/regmap.h>
 #include "tsens.h"
 
-#define S0_ST_ADDR		0x1030
+#define STATUS_OFFSET		0x30
 #define SN_ADDR_OFFSET		0x4
 #define SN_ST_TEMP_MASK		0x3ff
 #define CAL_DEGC_PT1		30
@@ -107,8 +107,9 @@ int get_temp_common(struct tsens_device *tmdev, int id, int *temp)
 	unsigned int status_reg;
 	int last_temp = 0, ret;
 
-	status_reg = S0_ST_ADDR + s->hw_id * SN_ADDR_OFFSET;
+	status_reg = tmdev->tm_offset + STATUS_OFFSET + s->hw_id * SN_ADDR_OFFSET;
 	ret = regmap_read(tmdev->map, status_reg, &code);
+
 	if (ret)
 		return ret;
 	last_temp = code & SN_ST_TEMP_MASK;
-- 
2.17.1

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

* [PATCH v3 02/16] thermal: tsens: Add SPDX license identifiers
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 01/16] thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address space Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 03/16] thermal: tsens: Get rid of dead code Amit Kucheria
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

The TSENS drivers use a GPL-2.0 license. Replace with equivalent SPDX
tags and delete the full license text.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/thermal/qcom/tsens-8916.c   | 11 +----------
 drivers/thermal/qcom/tsens-8960.c   | 11 +----------
 drivers/thermal/qcom/tsens-8974.c   | 11 +----------
 drivers/thermal/qcom/tsens-common.c | 11 +----------
 drivers/thermal/qcom/tsens.c        | 11 +----------
 drivers/thermal/qcom/tsens.h        | 11 ++---------
 6 files changed, 7 insertions(+), 59 deletions(-)

diff --git a/drivers/thermal/qcom/tsens-8916.c b/drivers/thermal/qcom/tsens-8916.c
index fdf561b8b81d..c4955c85e922 100644
--- a/drivers/thermal/qcom/tsens-8916.c
+++ b/drivers/thermal/qcom/tsens-8916.c
@@ -1,15 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  */
 
 #include <linux/platform_device.h>
diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c
index 0451277d3a8f..4af76de7dc2e 100644
--- a/drivers/thermal/qcom/tsens-8960.c
+++ b/drivers/thermal/qcom/tsens-8960.c
@@ -1,15 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  */
 
 #include <linux/platform_device.h>
diff --git a/drivers/thermal/qcom/tsens-8974.c b/drivers/thermal/qcom/tsens-8974.c
index 9baf77e8cbe3..7e149edbfeb6 100644
--- a/drivers/thermal/qcom/tsens-8974.c
+++ b/drivers/thermal/qcom/tsens-8974.c
@@ -1,15 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  */
 
 #include <linux/platform_device.h>
diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 478739543bbc..303e3fdaca98 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -1,15 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  */
 
 #include <linux/err.h>
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index a2c9bfae3d86..90bb431cf740 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -1,15 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  */
 
 #include <linux/err.h>
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 14331eb45a86..8207610f326a 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -1,15 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
  */
+
 #ifndef __QCOM_TSENS_H__
 #define __QCOM_TSENS_H__
 
-- 
2.17.1

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

* [PATCH v3 03/16] thermal: tsens: Get rid of dead code
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 01/16] thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address space Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 02/16] thermal: tsens: Add SPDX license identifiers Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 04/16] thermal: tsens: Rename map field in order to add a second address map Amit Kucheria
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

hw_id is dynamically allocated but not used anywhere. Get rid of dead
code.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/thermal/qcom/tsens.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 90bb431cf740..9a8e8f7b4ae1 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -80,11 +80,6 @@ static int tsens_register(struct tsens_device *tmdev)
 {
 	int i;
 	struct thermal_zone_device *tzd;
-	u32 *hw_id, n = tmdev->num_sensors;
-
-	hw_id = devm_kcalloc(tmdev->dev, n, sizeof(u32), GFP_KERNEL);
-	if (!hw_id)
-		return -ENOMEM;
 
 	for (i = 0;  i < tmdev->num_sensors; i++) {
 		tmdev->sensor[i].tmdev = tmdev;
-- 
2.17.1

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

* [PATCH v3 04/16] thermal: tsens: Rename map field in order to add a second address map
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (2 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 03/16] thermal: tsens: Get rid of dead code Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 05/16] thermal: tsens: Add the SROT " Amit Kucheria
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

The TSENS driver currently only uses a limited set of registers from the TM
address space. So it was ok to map just that set of registers and call it
"map".

We'd now like to map a second set: SROT registers to introduce new
functionality. Rename the "map" field to a more appropriate "tm_map".

The 8960 doesn't have a clear split between TM and SROT registers. To avoid
complicating the data structure, it will switchover to using tm_map for its
maps.

There is no functional change with this patch.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/thermal/qcom/tsens-8960.c   | 30 ++++++++++++++---------------
 drivers/thermal/qcom/tsens-common.c | 17 ++++++++--------
 drivers/thermal/qcom/tsens-v2.c     |  6 +++---
 drivers/thermal/qcom/tsens.h        |  2 +-
 4 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c
index 4af76de7dc2e..0f0adb302a7b 100644
--- a/drivers/thermal/qcom/tsens-8960.c
+++ b/drivers/thermal/qcom/tsens-8960.c
@@ -60,7 +60,7 @@ static int suspend_8960(struct tsens_device *tmdev)
 {
 	int ret;
 	unsigned int mask;
-	struct regmap *map = tmdev->map;
+	struct regmap *map = tmdev->tm_map;
 
 	ret = regmap_read(map, THRESHOLD_ADDR, &tmdev->ctx.threshold);
 	if (ret)
@@ -85,7 +85,7 @@ static int suspend_8960(struct tsens_device *tmdev)
 static int resume_8960(struct tsens_device *tmdev)
 {
 	int ret;
-	struct regmap *map = tmdev->map;
+	struct regmap *map = tmdev->tm_map;
 
 	ret = regmap_update_bits(map, CNTL_ADDR, SW_RST, SW_RST);
 	if (ret)
@@ -117,12 +117,12 @@ static int enable_8960(struct tsens_device *tmdev, int id)
 	int ret;
 	u32 reg, mask;
 
-	ret = regmap_read(tmdev->map, CNTL_ADDR, &reg);
+	ret = regmap_read(tmdev->tm_map, CNTL_ADDR, &reg);
 	if (ret)
 		return ret;
 
 	mask = BIT(id + SENSOR0_SHIFT);
-	ret = regmap_write(tmdev->map, CNTL_ADDR, reg | SW_RST);
+	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg | SW_RST);
 	if (ret)
 		return ret;
 
@@ -131,7 +131,7 @@ static int enable_8960(struct tsens_device *tmdev, int id)
 	else
 		reg |= mask | SLP_CLK_ENA_8660 | EN;
 
-	ret = regmap_write(tmdev->map, CNTL_ADDR, reg);
+	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg);
 	if (ret)
 		return ret;
 
@@ -148,7 +148,7 @@ static void disable_8960(struct tsens_device *tmdev)
 	mask <<= SENSOR0_SHIFT;
 	mask |= EN;
 
-	ret = regmap_read(tmdev->map, CNTL_ADDR, &reg_cntl);
+	ret = regmap_read(tmdev->tm_map, CNTL_ADDR, &reg_cntl);
 	if (ret)
 		return;
 
@@ -159,7 +159,7 @@ static void disable_8960(struct tsens_device *tmdev)
 	else
 		reg_cntl &= ~SLP_CLK_ENA_8660;
 
-	regmap_write(tmdev->map, CNTL_ADDR, reg_cntl);
+	regmap_write(tmdev->tm_map, CNTL_ADDR, reg_cntl);
 }
 
 static int init_8960(struct tsens_device *tmdev)
@@ -167,8 +167,8 @@ static int init_8960(struct tsens_device *tmdev)
 	int ret, i;
 	u32 reg_cntl;
 
-	tmdev->map = dev_get_regmap(tmdev->dev, NULL);
-	if (!tmdev->map)
+	tmdev->tm_map = dev_get_regmap(tmdev->dev, NULL);
+	if (!tmdev->tm_map)
 		return -ENODEV;
 
 	/*
@@ -184,14 +184,14 @@ static int init_8960(struct tsens_device *tmdev)
 	}
 
 	reg_cntl = SW_RST;
-	ret = regmap_update_bits(tmdev->map, CNTL_ADDR, SW_RST, reg_cntl);
+	ret = regmap_update_bits(tmdev->tm_map, CNTL_ADDR, SW_RST, reg_cntl);
 	if (ret)
 		return ret;
 
 	if (tmdev->num_sensors > 1) {
 		reg_cntl |= SLP_CLK_ENA | (MEASURE_PERIOD << 18);
 		reg_cntl &= ~SW_RST;
-		ret = regmap_update_bits(tmdev->map, CONFIG_ADDR,
+		ret = regmap_update_bits(tmdev->tm_map, CONFIG_ADDR,
 					 CONFIG_MASK, CONFIG);
 	} else {
 		reg_cntl |= SLP_CLK_ENA_8660 | (MEASURE_PERIOD << 16);
@@ -200,12 +200,12 @@ static int init_8960(struct tsens_device *tmdev)
 	}
 
 	reg_cntl |= GENMASK(tmdev->num_sensors - 1, 0) << SENSOR0_SHIFT;
-	ret = regmap_write(tmdev->map, CNTL_ADDR, reg_cntl);
+	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg_cntl);
 	if (ret)
 		return ret;
 
 	reg_cntl |= EN;
-	ret = regmap_write(tmdev->map, CNTL_ADDR, reg_cntl);
+	ret = regmap_write(tmdev->tm_map, CNTL_ADDR, reg_cntl);
 	if (ret)
 		return ret;
 
@@ -252,12 +252,12 @@ static int get_temp_8960(struct tsens_device *tmdev, int id, int *temp)
 
 	timeout = jiffies + usecs_to_jiffies(TIMEOUT_US);
 	do {
-		ret = regmap_read(tmdev->map, INT_STATUS_ADDR, &trdy);
+		ret = regmap_read(tmdev->tm_map, INT_STATUS_ADDR, &trdy);
 		if (ret)
 			return ret;
 		if (!(trdy & TRDY_MASK))
 			continue;
-		ret = regmap_read(tmdev->map, s->status, &code);
+		ret = regmap_read(tmdev->tm_map, s->status, &code);
 		if (ret)
 			return ret;
 		*temp = code_to_mdegC(code, s);
diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 303e3fdaca98..0585084630b3 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -99,8 +99,7 @@ int get_temp_common(struct tsens_device *tmdev, int id, int *temp)
 	int last_temp = 0, ret;
 
 	status_reg = tmdev->tm_offset + STATUS_OFFSET + s->hw_id * SN_ADDR_OFFSET;
-	ret = regmap_read(tmdev->map, status_reg, &code);
-
+	ret = regmap_read(tmdev->tm_map, status_reg, &code);
 	if (ret)
 		return ret;
 	last_temp = code & SN_ST_TEMP_MASK;
@@ -118,7 +117,7 @@ static const struct regmap_config tsens_config = {
 
 int __init init_common(struct tsens_device *tmdev)
 {
-	void __iomem *base;
+	void __iomem *tm_base;
 	struct resource *res;
 	struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);
 
@@ -134,13 +133,13 @@ int __init init_common(struct tsens_device *tmdev)
 	}
 
 	res = platform_get_resource(op, IORESOURCE_MEM, 0);
-	base = devm_ioremap_resource(&op->dev, res);
-	if (IS_ERR(base))
-		return PTR_ERR(base);
+	tm_base = devm_ioremap_resource(&op->dev, res);
+	if (IS_ERR(tm_base))
+		return PTR_ERR(tm_base);
 
-	tmdev->map = devm_regmap_init_mmio(tmdev->dev, base, &tsens_config);
-	if (IS_ERR(tmdev->map))
-		return PTR_ERR(tmdev->map);
+	tmdev->tm_map = devm_regmap_init_mmio(tmdev->dev, tm_base, &tsens_config);
+	if (IS_ERR(tmdev->tm_map))
+		return PTR_ERR(tmdev->tm_map);
 
 	return 0;
 }
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 44da02f594ac..1bdef92e4521 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -21,7 +21,7 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp)
 	int ret;
 
 	status_reg = tmdev->tm_offset + STATUS_OFFSET + s->hw_id * 4;
-	ret = regmap_read(tmdev->map, status_reg, &code);
+	ret = regmap_read(tmdev->tm_map, status_reg, &code);
 	if (ret)
 		return ret;
 	last_temp = code & LAST_TEMP_MASK;
@@ -29,7 +29,7 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp)
 		goto done;
 
 	/* Try a second time */
-	ret = regmap_read(tmdev->map, status_reg, &code);
+	ret = regmap_read(tmdev->tm_map, status_reg, &code);
 	if (ret)
 		return ret;
 	if (code & STATUS_VALID_BIT) {
@@ -40,7 +40,7 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp)
 	}
 
 	/* Try a third/last time */
-	ret = regmap_read(tmdev->map, status_reg, &code);
+	ret = regmap_read(tmdev->tm_map, status_reg, &code);
 	if (ret)
 		return ret;
 	if (code & STATUS_VALID_BIT) {
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 8207610f326a..58e98c4d3a8b 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -69,7 +69,7 @@ struct tsens_context {
 struct tsens_device {
 	struct device			*dev;
 	u32				num_sensors;
-	struct regmap			*map;
+	struct regmap			*tm_map;
 	u32				tm_offset;
 	struct tsens_context		ctx;
 	const struct tsens_ops		*ops;
-- 
2.17.1

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

* [PATCH v3 05/16] thermal: tsens: Add the SROT address map
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (3 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 04/16] thermal: tsens: Rename map field in order to add a second address map Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 06/16] MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers Amit Kucheria
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

On platforms whose device trees specify two address spaces for TSENS, the
second one points to the SROT registers. Initialise the SROT map on those
platforms.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/thermal/qcom/tsens-common.c | 14 ++++++++++++--
 drivers/thermal/qcom/tsens.h        |  1 +
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 0585084630b3..0b8a793f15f4 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -117,16 +117,26 @@ static const struct regmap_config tsens_config = {
 
 int __init init_common(struct tsens_device *tmdev)
 {
-	void __iomem *tm_base;
+	void __iomem *tm_base, *srot_base;
 	struct resource *res;
 	struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);
 
 	if (!op)
 		return -EINVAL;
 
-	/* The driver only uses the TM register address space for now */
 	if (op->num_resources > 1) {
+		/* DT with separate SROT and TM address space */
 		tmdev->tm_offset = 0;
+		res = platform_get_resource(op, IORESOURCE_MEM, 1);
+		srot_base = devm_ioremap_resource(&op->dev, res);
+		if (IS_ERR(srot_base))
+			return PTR_ERR(srot_base);
+
+		tmdev->srot_map = devm_regmap_init_mmio(tmdev->dev,
+							srot_base, &tsens_config);
+		if (IS_ERR(tmdev->srot_map))
+			return PTR_ERR(tmdev->srot_map);
+
 	} else {
 		/* old DTs where SROT and TM were in a contiguous 2K block */
 		tmdev->tm_offset = 0x1000;
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index 58e98c4d3a8b..b9c4bcf255fa 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -70,6 +70,7 @@ struct tsens_device {
 	struct device			*dev;
 	u32				num_sensors;
 	struct regmap			*tm_map;
+	struct regmap			*srot_map;
 	u32				tm_offset;
 	struct tsens_context		ctx;
 	const struct tsens_ops		*ops;
-- 
2.17.1

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

* [PATCH v3 06/16] MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (4 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 05/16] thermal: tsens: Add the SROT " Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 07/16] thermal: tsens: Pass register offsets as private data Amit Kucheria
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David S. Miller,
	Mauro Carvalho Chehab, Greg Kroah-Hartman, Andrew Morton,
	Arnd Bergmann

Create an entry for the TSENS drivers and mark them as maintained

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Acked-by: Rajendra Nayak <rnayak@codeaurora.org>
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 MAINTAINERS | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 9ad052aeac39..df6c5ce18b03 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12076,6 +12076,13 @@ L:	linux-arm-msm@vger.kernel.org
 S:	Maintained
 F:	drivers/iommu/qcom_iommu.c
 
+QUALCOMM TSENS THERMAL DRIVER
+M:	Amit Kucheria <amit.kucheria@linaro.org>
+L:	linux-pm@vger.kernel.org
+L:	linux-arm-msm@vger.kernel.org
+S:	Maintained
+F:	drivers/thermal/qcom/
+
 QUALCOMM VENUS VIDEO ACCELERATOR DRIVER
 M:	Stanimir Varbanov <stanimir.varbanov@linaro.org>
 L:	linux-media@vger.kernel.org
-- 
2.17.1

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

* [PATCH v3 07/16] thermal: tsens: Pass register offsets as private data
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (5 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 06/16] MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-18 19:34   ` Bjorn Andersson
  2018-09-12  9:52 ` [PATCH v3 08/16] thermal: tsens: Check if the IP is correctly enabled by firmware Amit Kucheria
                   ` (10 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

Registers have moved around across TSENS generations. For example, the
CTRL register was at offset 0x0 in the SROT region on msm8916 but is at
offset 0x4 in newer v2 based TSENS HW blocks.

Allow passing offsets of important registers so that we can continue to
use common functions.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
---
 drivers/thermal/qcom/tsens-8916.c | 1 +
 drivers/thermal/qcom/tsens-8974.c | 1 +
 drivers/thermal/qcom/tsens-v2.c   | 2 ++
 drivers/thermal/qcom/tsens.c      | 3 +++
 drivers/thermal/qcom/tsens.h      | 9 +++++++++
 5 files changed, 16 insertions(+)

diff --git a/drivers/thermal/qcom/tsens-8916.c b/drivers/thermal/qcom/tsens-8916.c
index c4955c85e922..c6dd620ac029 100644
--- a/drivers/thermal/qcom/tsens-8916.c
+++ b/drivers/thermal/qcom/tsens-8916.c
@@ -100,5 +100,6 @@ static const struct tsens_ops ops_8916 = {
 const struct tsens_data data_8916 = {
 	.num_sensors	= 5,
 	.ops		= &ops_8916,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x0 },
 	.hw_ids		= (unsigned int []){0, 1, 2, 4, 5 },
 };
diff --git a/drivers/thermal/qcom/tsens-8974.c b/drivers/thermal/qcom/tsens-8974.c
index 7e149edbfeb6..3d3fda3d731b 100644
--- a/drivers/thermal/qcom/tsens-8974.c
+++ b/drivers/thermal/qcom/tsens-8974.c
@@ -232,4 +232,5 @@ static const struct tsens_ops ops_8974 = {
 const struct tsens_data data_8974 = {
 	.num_sensors	= 11,
 	.ops		= &ops_8974,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x0 },
 };
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 1bdef92e4521..381a212872bf 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -68,10 +68,12 @@ static const struct tsens_ops ops_generic_v2 = {
 
 const struct tsens_data data_tsens_v2 = {
 	.ops            = &ops_generic_v2,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x4 },
 };
 
 /* Kept around for backward compatibility with old msm8996.dtsi */
 const struct tsens_data data_8996 = {
 	.num_sensors	= 13,
 	.ops		= &ops_generic_v2,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x4 },
 };
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 9a8e8f7b4ae1..f1ec9bbe4717 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -144,6 +144,9 @@ static int tsens_probe(struct platform_device *pdev)
 		else
 			tmdev->sensor[i].hw_id = i;
 	}
+	for (i = 0; i < REG_ARRAY_SIZE; i++) {
+		tmdev->reg_offsets[i] = data->reg_offsets[i];
+	}
 
 	if (!tmdev->ops || !tmdev->ops->init || !tmdev->ops->get_temp)
 		return -EINVAL;
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index b9c4bcf255fa..7b7feee5dc46 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -48,15 +48,23 @@ struct tsens_ops {
 	int (*get_trend)(struct tsens_device *, int, enum thermal_trend *);
 };
 
+enum reg_list {
+	SROT_CTRL_OFFSET,
+
+	REG_ARRAY_SIZE,
+};
+
 /**
  * struct tsens_data - tsens instance specific data
  * @num_sensors: Max number of sensors supported by platform
  * @ops: operations the tsens instance supports
  * @hw_ids: Subset of sensors ids supported by platform, if not the first n
+ * @reg_offsets: Register offsets for commonly used registers
  */
 struct tsens_data {
 	const u32		num_sensors;
 	const struct tsens_ops	*ops;
+	const u16		reg_offsets[REG_ARRAY_SIZE];
 	unsigned int		*hw_ids;
 };
 
@@ -72,6 +80,7 @@ struct tsens_device {
 	struct regmap			*tm_map;
 	struct regmap			*srot_map;
 	u32				tm_offset;
+	u16				reg_offsets[REG_ARRAY_SIZE];
 	struct tsens_context		ctx;
 	const struct tsens_ops		*ops;
 	struct tsens_sensor		sensor[0];
-- 
2.17.1

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

* [PATCH v3 08/16] thermal: tsens: Check if the IP is correctly enabled by firmware
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (6 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 07/16] thermal: tsens: Pass register offsets as private data Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 09/16] arm: dts: msm8974: thermal: split address space into two Amit Kucheria
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

The SROT registers are initialised by the secure firmware at boot. We
don't have write access to the registers. Check if the block is enabled
before continuing.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/thermal/qcom/tsens-common.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c
index 0b8a793f15f4..3be4be2e0465 100644
--- a/drivers/thermal/qcom/tsens-common.c
+++ b/drivers/thermal/qcom/tsens-common.c
@@ -12,6 +12,10 @@
 #include <linux/regmap.h>
 #include "tsens.h"
 
+/* SROT */
+#define TSENS_EN		BIT(0)
+
+/* TM */
 #define STATUS_OFFSET		0x30
 #define SN_ADDR_OFFSET		0x4
 #define SN_ST_TEMP_MASK		0x3ff
@@ -119,7 +123,10 @@ int __init init_common(struct tsens_device *tmdev)
 {
 	void __iomem *tm_base, *srot_base;
 	struct resource *res;
+	u32 code;
+	int ret;
 	struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);
+	u16 ctrl_offset = tmdev->reg_offsets[SROT_CTRL_OFFSET];
 
 	if (!op)
 		return -EINVAL;
@@ -151,5 +158,15 @@ int __init init_common(struct tsens_device *tmdev)
 	if (IS_ERR(tmdev->tm_map))
 		return PTR_ERR(tmdev->tm_map);
 
+	if (tmdev->srot_map) {
+		ret = regmap_read(tmdev->srot_map, ctrl_offset, &code);
+		if (ret)
+			return ret;
+		if (!(code & TSENS_EN)) {
+			dev_err(tmdev->dev, "tsens device is not enabled\n");
+			return -ENODEV;
+		}
+	}
+
 	return 0;
 }
-- 
2.17.1

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

* [PATCH v3 09/16] arm: dts: msm8974: thermal: split address space into two
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (7 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 08/16] thermal: tsens: Check if the IP is correctly enabled by firmware Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-20 18:57   ` Andy Gross
  2018-09-12  9:52 ` [PATCH v3 10/16] arm64: dts: msm8916: " Amit Kucheria
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

We've earlier added support to split the register address space into TM
and SROT regions. Split up the regmap address space into two for msm8974
that has a similar register layout.

Since tsens-common.c/init_common() currently only registers one address
space, the order is important (TM before SROT).  This is OK since the
code doesn't really use the SROT functionality yet.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
---
 arch/arm/boot/dts/qcom-msm8974.dtsi | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index d9019a49b292..56dbbf788d15 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -427,9 +427,10 @@
 			};
 		};
 
-		tsens: thermal-sensor@fc4a8000 {
+		tsens: thermal-sensor@fc4a9000 {
 			compatible = "qcom,msm8974-tsens";
-			reg = <0xfc4a8000 0x2000>;
+			reg = <0xfc4a9000 0x1000>, /* TM */
+			      <0xfc4a8000 0x1000>; /* SROT */
 			nvmem-cells = <&tsens_calib>, <&tsens_backup>;
 			nvmem-cell-names = "calib", "calib_backup";
 			#thermal-sensor-cells = <1>;
-- 
2.17.1

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

* [PATCH v3 10/16] arm64: dts: msm8916: thermal: split address space into two
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (8 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 09/16] arm: dts: msm8974: thermal: split address space into two Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-20 18:57   ` Andy Gross
  2018-09-12  9:52 ` [PATCH v3 11/16] arm: dts: msm8974: thermal: Add "qcom,sensors" property Amit Kucheria
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

We've earlier added support to split the register address space into TM
and SROT regions. Split up the regmap address space into two for msm8916
that has a similar register layout.

Since tsens-common.c/init_common() currently only registers one address
space, the order is important (TM before SROT).  This is OK since the
code doesn't really use the SROT functionality yet.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index 7b32b8990d62..6a277fce3333 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -761,9 +761,10 @@
 			};
 		};
 
-		tsens: thermal-sensor@4a8000 {
+		tsens: thermal-sensor@4a9000 {
 			compatible = "qcom,msm8916-tsens";
-			reg = <0x4a8000 0x2000>;
+			reg = <0x4a9000 0x1000>, /* TM */
+			      <0x4a8000 0x1000>; /* SROT */
 			nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
 			nvmem-cell-names = "calib", "calib_sel";
 			#thermal-sensor-cells = <1>;
-- 
2.17.1

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

* [PATCH v3 11/16] arm: dts: msm8974: thermal: Add "qcom,sensors" property
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (9 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 10/16] arm64: dts: msm8916: " Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-20 18:58   ` Andy Gross
  2018-09-12  9:52 ` [PATCH v3 12/16] arm64: dts: msm8916: " Amit Kucheria
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

This new property allows the number of sensors to be configured from DT
instead of being hardcoded in platform data. Use it.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 arch/arm/boot/dts/qcom-msm8974.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index 56dbbf788d15..3c4b81c29798 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -433,6 +433,7 @@
 			      <0xfc4a8000 0x1000>; /* SROT */
 			nvmem-cells = <&tsens_calib>, <&tsens_backup>;
 			nvmem-cell-names = "calib", "calib_backup";
+			#qcom,sensors = <11>;
 			#thermal-sensor-cells = <1>;
 		};
 
-- 
2.17.1

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

* [PATCH v3 12/16] arm64: dts: msm8916: thermal: Add "qcom,sensors" property
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (10 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 11/16] arm: dts: msm8974: thermal: Add "qcom,sensors" property Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-20 18:58   ` Andy Gross
  2018-09-12  9:52 ` [PATCH v3 13/16] dt-bindings: thermal: Fix a typo in documentation Amit Kucheria
                   ` (5 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

This new property allows the number of sensors to be configured from DT
instead of being hardcoded in platform data. Use it.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index 6a277fce3333..be27d8dc9e6b 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -767,6 +767,7 @@
 			      <0x4a8000 0x1000>; /* SROT */
 			nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
 			nvmem-cell-names = "calib", "calib_sel";
+			#qcom,sensors = <5>;
 			#thermal-sensor-cells = <1>;
 		};
 
-- 
2.17.1

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

* [PATCH v3 13/16] dt-bindings: thermal: Fix a typo in documentation
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (11 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 12/16] arm64: dts: msm8916: " Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 14/16] arm64: dts: msm8916: Add gpu thermal zone Amit Kucheria
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano,
	Rob Herring, Mark Rutland, linux-pm, devicetree

c(1) + x(1) was actually meant to be c(1) * x(1).

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 Documentation/devicetree/bindings/thermal/thermal.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/thermal/thermal.txt b/Documentation/devicetree/bindings/thermal/thermal.txt
index eb7ee91556a5..ca14ba959e0d 100644
--- a/Documentation/devicetree/bindings/thermal/thermal.txt
+++ b/Documentation/devicetree/bindings/thermal/thermal.txt
@@ -152,7 +152,7 @@ Optional property:
   Elem size: one cell	the sensors listed in the thermal-sensors property.
   Elem type: signed	Coefficients defaults to 1, in case this property
 			is not specified. A simple linear polynomial is used:
-			Z = c0 * x0 + c1 + x1 + ... + c(n-1) * x(n-1) + cn.
+			Z = c0 * x0 + c1 * x1 + ... + c(n-1) * x(n-1) + cn.
 
 			The coefficients are ordered and they match with sensors
 			by means of sensor ID. Additional coefficients are
-- 
2.17.1

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

* [PATCH v3 14/16] arm64: dts: msm8916: Add gpu thermal zone
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (12 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 13/16] dt-bindings: thermal: Fix a typo in documentation Amit Kucheria
@ 2018-09-12  9:52 ` Amit Kucheria
  2018-09-20 18:59   ` Andy Gross
  2018-09-12  9:53 ` [PATCH v3 15/16] arm64: dts: msm8916: Add camera " Amit Kucheria
                   ` (3 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

Initialise the gpu thermal zone to export temperature to userspace.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index be27d8dc9e6b..62f079ae9ba3 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -237,6 +237,26 @@
 			};
 		};
 
+		gpu-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 2>;
+
+			trips {
+				gpu_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				gpu_crit: trip1 {
+					temperature = <95000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
 	};
 
 	cpu_opp_table: cpu_opp_table {
-- 
2.17.1

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

* [PATCH v3 15/16] arm64: dts: msm8916: Add camera thermal zone
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (13 preceding siblings ...)
  2018-09-12  9:52 ` [PATCH v3 14/16] arm64: dts: msm8916: Add gpu thermal zone Amit Kucheria
@ 2018-09-12  9:53 ` Amit Kucheria
  2018-09-20 19:00   ` Andy Gross
  2018-09-12  9:53 ` [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones Amit Kucheria
                   ` (2 subsequent siblings)
  17 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:53 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

Initialise the camera thermal zone to export temperature to userspace.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index 62f079ae9ba3..3dc8b8aa76c7 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -257,6 +257,27 @@
 			};
 		};
 
+		camera-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 1>;
+
+			trips {
+				cam_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cam_crit: trip1 {
+					temperature = <95000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+
+		};
+
 	};
 
 	cpu_opp_table: cpu_opp_table {
-- 
2.17.1

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

* [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (14 preceding siblings ...)
  2018-09-12  9:53 ` [PATCH v3 15/16] arm64: dts: msm8916: Add camera " Amit Kucheria
@ 2018-09-12  9:53 ` Amit Kucheria
  2018-09-20 19:01   ` Andy Gross
  2018-10-25 19:25   ` Matthias Kaehlcke
  2018-09-18 15:01   ` Amit Kucheria
  2018-09-20 19:02 ` Andy Gross
  17 siblings, 2 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-12  9:53 UTC (permalink / raw)
  To: linux-kernel
  Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
	andy.gross, dianders, mka, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

One thermal zone per cpu is defined

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Tested-by: Matthias Kaehlcke <mka@chromium.org>
---
 arch/arm64/boot/dts/qcom/sdm845.dtsi | 170 +++++++++++++++++++++++++++
 1 file changed, 170 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 0c9a2aa6a1b5..eb801922f6bb 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -1104,4 +1104,174 @@
 			};
 		};
 	};
+
+	thermal-zones {
+		cpu0-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 1>;
+
+			trips {
+				cpu_alert0: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit0: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu1-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 2>;
+
+			trips {
+				cpu_alert1: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit1: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu2-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 3>;
+
+			trips {
+				cpu_alert2: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit2: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu3-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 4>;
+
+			trips {
+				cpu_alert3: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit3: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu4-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 7>;
+
+			trips {
+				cpu_alert4: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit4: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu5-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 8>;
+
+			trips {
+				cpu_alert5: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit5: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu6-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 9>;
+
+			trips {
+				cpu_alert6: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit6: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu7-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 10>;
+
+			trips {
+				cpu_alert7: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit7: trip1 {
+					temperature = <110000>;
+					hysteresis = <1000>;
+					type = "critical";
+				};
+			};
+		};
+	};
 };
-- 
2.17.1

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

* Re: [PATCH v3 00/16] Another round of tsens cleanups
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
@ 2018-09-18 15:01   ` Amit Kucheria
  2018-09-12  9:52 ` [PATCH v3 02/16] thermal: tsens: Add SPDX license identifiers Amit Kucheria
                     ` (16 subsequent siblings)
  17 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-18 15:01 UTC (permalink / raw)
  To: LKML
  Cc: Rajendra Nayak, linux-arm-msm, Bjorn Andersson, Eduardo Valentin,
	smohanad, Andy Gross, Douglas Anderson, Matthias Kaehlcke,
	David S. Miller, Andrew Morton, Arnd Bergmann, Daniel Lezcano,
	gregkh, mchehab+samsung,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Linux PM list, open list:ARM/QUALCOMM SUPPORT

Hi Eduardo, Andy,

On Wed, Sep 12, 2018 at 2:53 AM Amit Kucheria <amit.kucheria@linaro.org> wrote:
>
> This is another series of tsens cleanups before we add interrupt support. This applies on top of 4.19-rc2.
>
> Patches [1-6] can directly be applied by Eduardo.
> Patches [9-16] can directly be applied by Andy.
> Patches [7-8] introduce a new check and needs review and can then be
> applied completely separately by Eduardo.
>
> There is a *dependency* however. Patch 1 should be applied to the tree
> before the DT changes in patches 9 and 10.

To clarify here, it might be easier if Eduardo acks patches 9 and 10
so that they can be merged through Andy's tree before the rest of the
DT patches. That would remove the need to create any immutable trees
or having to worry about the ordering of the patches.

Just a suggestion.

> In this series, I've collected all outstanding tsens patches by combining
> the patches from the v2 posting with 3 DT patches for sdm845 thermal zones
> and msm8916 camera and gpu thermal zones. Details are as follows:
>
> - splitup 8916 and 8974 register address spaces for SROT and TM
> - cleanups: move to spdx, dead code removal, removal of id field
> - Add support to map the SROT address space for DTs that list it separately
> - Check if TSENS IP is enabled in firmware by querying the SROT space
> - Add myself as maintainer of tsens
> - Add one-off patches adding sdm845 thermal zones and msm8916 gpu and
>   camera thermal zones to this series.
>
> Changes since v2:
> - Split up changes to code and dt and within dt, split into arm and arm64
>   patches
> - Rearrange the sequence of patches so that the thermal maintainer can pick
>   up the first part and the platform maintainer can pick up the latter part
>   of the series
> - Drop patch 09/11 because it causes some issues on systems with
>   non-contiguous enabled sensors e.g. db410c
> - Drop patch 10/11 because reg-name property isn't encouraged
> - Fix a bug on msm8916 to check if IP is enabled in firmware. This was due
>   to the register being at a different offset on msm8916. Fixed by coding
>   this information as private data.
>
> Changes since v1:
> - Split up changes that split the address space and added qcom,sensors
>   property into two separate patches
> - Remove brackets in typo correction patch
>
> Amit Kucheria (16):
>   thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address
>     space
>   thermal: tsens: Add SPDX license identifiers
>   thermal: tsens: Get rid of dead code
>   thermal: tsens: Rename map field in order to add a second address map
>   thermal: tsens: Add the SROT address map
>   MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers
>   thermal: tsens: Pass register offsets as private data
>   thermal: tsens: Check if the IP is correctly enabled by firmware
>   arm: dts: msm8974: thermal: split address space into two
>   arm64: dts: msm8916: thermal: split address space into two
>   arm: dts: msm8974: thermal: Add "qcom,sensors" property
>   arm64: dts: msm8916: thermal: Add "qcom,sensors" property
>   dt-bindings: thermal: Fix a typo in documentation
>   arm64: dts: msm8916: Add gpu thermal zone
>   arm64: dts: msm8916: Add camera thermal zone
>   arm64: dts: sdm845: enable tsens thermal zones
>
>  .../devicetree/bindings/thermal/thermal.txt   |   2 +-
>  MAINTAINERS                                   |   7 +
>  arch/arm/boot/dts/qcom-msm8974.dtsi           |   6 +-
>  arch/arm64/boot/dts/qcom/msm8916.dtsi         |  47 ++++-
>  arch/arm64/boot/dts/qcom/sdm845.dtsi          | 170 ++++++++++++++++++
>  drivers/thermal/qcom/tsens-8916.c             |  12 +-
>  drivers/thermal/qcom/tsens-8960.c             |  41 ++---
>  drivers/thermal/qcom/tsens-8974.c             |  12 +-
>  drivers/thermal/qcom/tsens-common.c           |  62 ++++---
>  drivers/thermal/qcom/tsens-v2.c               |   8 +-
>  drivers/thermal/qcom/tsens.c                  |  19 +-
>  drivers/thermal/qcom/tsens.h                  |  23 +--
>  12 files changed, 309 insertions(+), 100 deletions(-)
>
> --
> 2.17.1
>

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

* Re: [PATCH v3 00/16] Another round of tsens cleanups
@ 2018-09-18 15:01   ` Amit Kucheria
  0 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-18 15:01 UTC (permalink / raw)
  To: LKML
  Cc: Rajendra Nayak, linux-arm-msm, Bjorn Andersson, Eduardo Valentin,
	smohanad, Andy Gross, Douglas Anderson, Matthias Kaehlcke,
	David S. Miller, Andrew Morton, Arnd Bergmann, Daniel Lezcano,
	gregkh, mchehab+samsung,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Linux PM list, open list:ARM/QUALCOMM SUPPORT

Hi Eduardo, Andy,

On Wed, Sep 12, 2018 at 2:53 AM Amit Kucheria <amit.kucheria@linaro.org> wrote:
>
> This is another series of tsens cleanups before we add interrupt support. This applies on top of 4.19-rc2.
>
> Patches [1-6] can directly be applied by Eduardo.
> Patches [9-16] can directly be applied by Andy.
> Patches [7-8] introduce a new check and needs review and can then be
> applied completely separately by Eduardo.
>
> There is a *dependency* however. Patch 1 should be applied to the tree
> before the DT changes in patches 9 and 10.

To clarify here, it might be easier if Eduardo acks patches 9 and 10
so that they can be merged through Andy's tree before the rest of the
DT patches. That would remove the need to create any immutable trees
or having to worry about the ordering of the patches.

Just a suggestion.

> In this series, I've collected all outstanding tsens patches by combining
> the patches from the v2 posting with 3 DT patches for sdm845 thermal zones
> and msm8916 camera and gpu thermal zones. Details are as follows:
>
> - splitup 8916 and 8974 register address spaces for SROT and TM
> - cleanups: move to spdx, dead code removal, removal of id field
> - Add support to map the SROT address space for DTs that list it separately
> - Check if TSENS IP is enabled in firmware by querying the SROT space
> - Add myself as maintainer of tsens
> - Add one-off patches adding sdm845 thermal zones and msm8916 gpu and
>   camera thermal zones to this series.
>
> Changes since v2:
> - Split up changes to code and dt and within dt, split into arm and arm64
>   patches
> - Rearrange the sequence of patches so that the thermal maintainer can pick
>   up the first part and the platform maintainer can pick up the latter part
>   of the series
> - Drop patch 09/11 because it causes some issues on systems with
>   non-contiguous enabled sensors e.g. db410c
> - Drop patch 10/11 because reg-name property isn't encouraged
> - Fix a bug on msm8916 to check if IP is enabled in firmware. This was due
>   to the register being at a different offset on msm8916. Fixed by coding
>   this information as private data.
>
> Changes since v1:
> - Split up changes that split the address space and added qcom,sensors
>   property into two separate patches
> - Remove brackets in typo correction patch
>
> Amit Kucheria (16):
>   thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address
>     space
>   thermal: tsens: Add SPDX license identifiers
>   thermal: tsens: Get rid of dead code
>   thermal: tsens: Rename map field in order to add a second address map
>   thermal: tsens: Add the SROT address map
>   MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers
>   thermal: tsens: Pass register offsets as private data
>   thermal: tsens: Check if the IP is correctly enabled by firmware
>   arm: dts: msm8974: thermal: split address space into two
>   arm64: dts: msm8916: thermal: split address space into two
>   arm: dts: msm8974: thermal: Add "qcom,sensors" property
>   arm64: dts: msm8916: thermal: Add "qcom,sensors" property
>   dt-bindings: thermal: Fix a typo in documentation
>   arm64: dts: msm8916: Add gpu thermal zone
>   arm64: dts: msm8916: Add camera thermal zone
>   arm64: dts: sdm845: enable tsens thermal zones
>
>  .../devicetree/bindings/thermal/thermal.txt   |   2 +-
>  MAINTAINERS                                   |   7 +
>  arch/arm/boot/dts/qcom-msm8974.dtsi           |   6 +-
>  arch/arm64/boot/dts/qcom/msm8916.dtsi         |  47 ++++-
>  arch/arm64/boot/dts/qcom/sdm845.dtsi          | 170 ++++++++++++++++++
>  drivers/thermal/qcom/tsens-8916.c             |  12 +-
>  drivers/thermal/qcom/tsens-8960.c             |  41 ++---
>  drivers/thermal/qcom/tsens-8974.c             |  12 +-
>  drivers/thermal/qcom/tsens-common.c           |  62 ++++---
>  drivers/thermal/qcom/tsens-v2.c               |   8 +-
>  drivers/thermal/qcom/tsens.c                  |  19 +-
>  drivers/thermal/qcom/tsens.h                  |  23 +--
>  12 files changed, 309 insertions(+), 100 deletions(-)
>
> --
> 2.17.1
>

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

* Re: [PATCH v3 07/16] thermal: tsens: Pass register offsets as private data
  2018-09-12  9:52 ` [PATCH v3 07/16] thermal: tsens: Pass register offsets as private data Amit Kucheria
@ 2018-09-18 19:34   ` Bjorn Andersson
       [not found]     ` <cover.1537547011.git.amit.kucheria@linaro.org>
  0 siblings, 1 reply; 35+ messages in thread
From: Bjorn Andersson @ 2018-09-18 19:34 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, edubezval, smohanad,
	andy.gross, dianders, mka, Zhang Rui, Daniel Lezcano, linux-pm

On Wed 12 Sep 02:52 PDT 2018, Amit Kucheria wrote:
> diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
> index 9a8e8f7b4ae1..f1ec9bbe4717 100644
> --- a/drivers/thermal/qcom/tsens.c
> +++ b/drivers/thermal/qcom/tsens.c
> @@ -144,6 +144,9 @@ static int tsens_probe(struct platform_device *pdev)
>  		else
>  			tmdev->sensor[i].hw_id = i;
>  	}
> +	for (i = 0; i < REG_ARRAY_SIZE; i++) {
> +		tmdev->reg_offsets[i] = data->reg_offsets[i];
> +	}

Unnecessary {}

>  
>  	if (!tmdev->ops || !tmdev->ops->init || !tmdev->ops->get_temp)
>  		return -EINVAL;
> diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
> index b9c4bcf255fa..7b7feee5dc46 100644
> --- a/drivers/thermal/qcom/tsens.h
> +++ b/drivers/thermal/qcom/tsens.h
> @@ -48,15 +48,23 @@ struct tsens_ops {
>  	int (*get_trend)(struct tsens_device *, int, enum thermal_trend *);
>  };
>  
> +enum reg_list {
> +	SROT_CTRL_OFFSET,
> +
> +	REG_ARRAY_SIZE,
> +};
> +
>  /**
>   * struct tsens_data - tsens instance specific data
>   * @num_sensors: Max number of sensors supported by platform
>   * @ops: operations the tsens instance supports
>   * @hw_ids: Subset of sensors ids supported by platform, if not the first n
> + * @reg_offsets: Register offsets for commonly used registers

Order doesn't match struct.

>   */
>  struct tsens_data {
>  	const u32		num_sensors;
>  	const struct tsens_ops	*ops;
> +	const u16		reg_offsets[REG_ARRAY_SIZE];
>  	unsigned int		*hw_ids;
>  };

Except of that you have my:

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>

Regards,
Bjorn

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

* Re: [PATCH v3 09/16] arm: dts: msm8974: thermal: split address space into two
  2018-09-12  9:52 ` [PATCH v3 09/16] arm: dts: msm8974: thermal: split address space into two Amit Kucheria
@ 2018-09-20 18:57   ` Andy Gross
  0 siblings, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 18:57 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:22:54PM +0530, Amit Kucheria wrote:
> We've earlier added support to split the register address space into TM
> and SROT regions. Split up the regmap address space into two for msm8974
> that has a similar register layout.
> 
> Since tsens-common.c/init_common() currently only registers one address
> space, the order is important (TM before SROT).  This is OK since the
> code doesn't really use the SROT functionality yet.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
> ---

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 10/16] arm64: dts: msm8916: thermal: split address space into two
  2018-09-12  9:52 ` [PATCH v3 10/16] arm64: dts: msm8916: " Amit Kucheria
@ 2018-09-20 18:57   ` Andy Gross
  0 siblings, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 18:57 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:22:55PM +0530, Amit Kucheria wrote:
> We've earlier added support to split the register address space into TM
> and SROT regions. Split up the regmap address space into two for msm8916
> that has a similar register layout.
> 
> Since tsens-common.c/init_common() currently only registers one address
> space, the order is important (TM before SROT).  This is OK since the
> code doesn't really use the SROT functionality yet.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
> ---

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 11/16] arm: dts: msm8974: thermal: Add "qcom,sensors" property
  2018-09-12  9:52 ` [PATCH v3 11/16] arm: dts: msm8974: thermal: Add "qcom,sensors" property Amit Kucheria
@ 2018-09-20 18:58   ` Andy Gross
  0 siblings, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 18:58 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:22:56PM +0530, Amit Kucheria wrote:
> This new property allows the number of sensors to be configured from DT
> instead of being hardcoded in platform data. Use it.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
>  arch/arm/boot/dts/qcom-msm8974.dtsi | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
> index 56dbbf788d15..3c4b81c29798 100644
> --- a/arch/arm/boot/dts/qcom-msm8974.dtsi

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 12/16] arm64: dts: msm8916: thermal: Add "qcom,sensors" property
  2018-09-12  9:52 ` [PATCH v3 12/16] arm64: dts: msm8916: " Amit Kucheria
@ 2018-09-20 18:58   ` Andy Gross
  0 siblings, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 18:58 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:22:57PM +0530, Amit Kucheria wrote:
> This new property allows the number of sensors to be configured from DT
> instead of being hardcoded in platform data. Use it.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8916.dtsi | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> index 6a277fce3333..be27d8dc9e6b 100644
> --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 14/16] arm64: dts: msm8916: Add gpu thermal zone
  2018-09-12  9:52 ` [PATCH v3 14/16] arm64: dts: msm8916: Add gpu thermal zone Amit Kucheria
@ 2018-09-20 18:59   ` Andy Gross
  0 siblings, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 18:59 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:22:59PM +0530, Amit Kucheria wrote:
> Initialise the gpu thermal zone to export temperature to userspace.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8916.dtsi | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> index be27d8dc9e6b..62f079ae9ba3 100644
> --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 15/16] arm64: dts: msm8916: Add camera thermal zone
  2018-09-12  9:53 ` [PATCH v3 15/16] arm64: dts: msm8916: Add camera " Amit Kucheria
@ 2018-09-20 19:00   ` Andy Gross
  0 siblings, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 19:00 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:23:00PM +0530, Amit Kucheria wrote:
> Initialise the camera thermal zone to export temperature to userspace.
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8916.dtsi | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> index 62f079ae9ba3..3dc8b8aa76c7 100644
> --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones
  2018-09-12  9:53 ` [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones Amit Kucheria
@ 2018-09-20 19:01   ` Andy Gross
  2018-10-25 19:25   ` Matthias Kaehlcke
  1 sibling, 0 replies; 35+ messages in thread
From: Andy Gross @ 2018-09-20 19:01 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David Brown, Rob Herring, Mark Rutland,
	linux-soc, devicetree

On Wed, Sep 12, 2018 at 03:23:01PM +0530, Amit Kucheria wrote:
> One thermal zone per cpu is defined
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
> Tested-by: Matthias Kaehlcke <mka@chromium.org>
> ---
>  arch/arm64/boot/dts/qcom/sdm845.dtsi | 170 +++++++++++++++++++++++++++
>  1 file changed, 170 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> index 0c9a2aa6a1b5..eb801922f6bb 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi

Acked-by: Andy Gross <andy.gross@linaro.org>

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

* Re: [PATCH v3 00/16] Another round of tsens cleanups
  2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
                   ` (16 preceding siblings ...)
  2018-09-18 15:01   ` Amit Kucheria
@ 2018-09-20 19:02 ` Andy Gross
  2018-09-21 17:48     ` Amit Kucheria
  17 siblings, 1 reply; 35+ messages in thread
From: Andy Gross @ 2018-09-20 19:02 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, dianders, mka, David S. Miller, Andrew Morton,
	Arnd Bergmann, Daniel Lezcano, Greg Kroah-Hartman,
	Mauro Carvalho Chehab, devicetree, linux-pm, linux-soc

On Wed, Sep 12, 2018 at 03:22:45PM +0530, Amit Kucheria wrote:
> This is another series of tsens cleanups before we add interrupt support. This applies on top of 4.19-rc2.
> 
> Patches [1-6] can directly be applied by Eduardo.
> Patches [9-16] can directly be applied by Andy.

Eduardo,

I ACKed the DTS patches for this.  Can you take 9-16 along with the 1-6 through
your tree?

Thanks,

Andy

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

* [PATCH v4 07/16] thermal: tsens: Pass register offsets as private data
       [not found]     ` <cover.1537547011.git.amit.kucheria@linaro.org>
@ 2018-09-21 17:46           ` Amit Kucheria
  0 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-21 17:25 UTC (permalink / raw)
  To: linux-kernel

Registers have moved around across TSENS generations. For example, the
CTRL register was at offset 0x0 in the SROT region on msm8916 but is at
offset 0x4 in newer v2 based TSENS HW blocks.

Allow passing offsets of important registers so that we can continue to
use common functions.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Here is a fixup patch. Eduardo, if you like I can resend the entire series
or you can find the entire series hosted with all tags applied here:
https://git.linaro.org/people/amit.kucheria/kernel.git/log/?h=up/thermal/tsens-preirq-cleanup-v4

 drivers/thermal/qcom/tsens-8916.c | 1 +
 drivers/thermal/qcom/tsens-8974.c | 1 +
 drivers/thermal/qcom/tsens-v2.c   | 2 ++
 drivers/thermal/qcom/tsens.c      | 2 ++
 drivers/thermal/qcom/tsens.h      | 9 +++++++++
 5 files changed, 15 insertions(+)

diff --git a/drivers/thermal/qcom/tsens-8916.c b/drivers/thermal/qcom/tsens-8916.c
index c4955c85e922..c6dd620ac029 100644
--- a/drivers/thermal/qcom/tsens-8916.c
+++ b/drivers/thermal/qcom/tsens-8916.c
@@ -100,5 +100,6 @@ static const struct tsens_ops ops_8916 = {
 const struct tsens_data data_8916 = {
 	.num_sensors	= 5,
 	.ops		= &ops_8916,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x0 },
 	.hw_ids		= (unsigned int []){0, 1, 2, 4, 5 },
 };
diff --git a/drivers/thermal/qcom/tsens-8974.c b/drivers/thermal/qcom/tsens-8974.c
index 7e149edbfeb6..3d3fda3d731b 100644
--- a/drivers/thermal/qcom/tsens-8974.c
+++ b/drivers/thermal/qcom/tsens-8974.c
@@ -232,4 +232,5 @@ static const struct tsens_ops ops_8974 = {
 const struct tsens_data data_8974 = {
 	.num_sensors	= 11,
 	.ops		= &ops_8974,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x0 },
 };
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 1bdef92e4521..381a212872bf 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -68,10 +68,12 @@ static const struct tsens_ops ops_generic_v2 = {
 
 const struct tsens_data data_tsens_v2 = {
 	.ops            = &ops_generic_v2,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x4 },
 };
 
 /* Kept around for backward compatibility with old msm8996.dtsi */
 const struct tsens_data data_8996 = {
 	.num_sensors	= 13,
 	.ops		= &ops_generic_v2,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x4 },
 };
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 9a8e8f7b4ae1..3c8776e55252 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -144,6 +144,8 @@ static int tsens_probe(struct platform_device *pdev)
 		else
 			tmdev->sensor[i].hw_id = i;
 	}
+	for (i = 0; i < REG_ARRAY_SIZE; i++)
+		tmdev->reg_offsets[i] = data->reg_offsets[i];
 
 	if (!tmdev->ops || !tmdev->ops->init || !tmdev->ops->get_temp)
 		return -EINVAL;
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index b9c4bcf255fa..f62d2b6281da 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -48,15 +48,23 @@ struct tsens_ops {
 	int (*get_trend)(struct tsens_device *, int, enum thermal_trend *);
 };
 
+enum reg_list {
+	SROT_CTRL_OFFSET,
+
+	REG_ARRAY_SIZE,
+};
+
 /**
  * struct tsens_data - tsens instance specific data
  * @num_sensors: Max number of sensors supported by platform
  * @ops: operations the tsens instance supports
+ * @reg_offsets: Register offsets for commonly used registers
  * @hw_ids: Subset of sensors ids supported by platform, if not the first n
  */
 struct tsens_data {
 	const u32		num_sensors;
 	const struct tsens_ops	*ops;
+	const u16		reg_offsets[REG_ARRAY_SIZE];
 	unsigned int		*hw_ids;
 };
 
@@ -72,6 +80,7 @@ struct tsens_device {
 	struct regmap			*tm_map;
 	struct regmap			*srot_map;
 	u32				tm_offset;
+	u16				reg_offsets[REG_ARRAY_SIZE];
 	struct tsens_context		ctx;
 	const struct tsens_ops		*ops;
 	struct tsens_sensor		sensor[0];
-- 
2.17.1


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

* [PATCH v4 07/16] thermal: tsens: Pass register offsets as private data
@ 2018-09-21 17:46           ` Amit Kucheria
  0 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-21 17:46 UTC (permalink / raw)
  To: linux-kernel

Registers have moved around across TSENS generations. For example, the
CTRL register was at offset 0x0 in the SROT region on msm8916 but is at
offset 0x4 in newer v2 based TSENS HW blocks.

Allow passing offsets of important registers so that we can continue to
use common functions.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Here is a fixup patch. Eduardo, if you like I can resend the entire series
or you can find the entire series hosted with all tags applied here:
https://git.linaro.org/people/amit.kucheria/kernel.git/log/?h=up/thermal/tsens-preirq-cleanup-v4

 drivers/thermal/qcom/tsens-8916.c | 1 +
 drivers/thermal/qcom/tsens-8974.c | 1 +
 drivers/thermal/qcom/tsens-v2.c   | 2 ++
 drivers/thermal/qcom/tsens.c      | 2 ++
 drivers/thermal/qcom/tsens.h      | 9 +++++++++
 5 files changed, 15 insertions(+)

diff --git a/drivers/thermal/qcom/tsens-8916.c b/drivers/thermal/qcom/tsens-8916.c
index c4955c85e922..c6dd620ac029 100644
--- a/drivers/thermal/qcom/tsens-8916.c
+++ b/drivers/thermal/qcom/tsens-8916.c
@@ -100,5 +100,6 @@ static const struct tsens_ops ops_8916 = {
 const struct tsens_data data_8916 = {
 	.num_sensors	= 5,
 	.ops		= &ops_8916,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x0 },
 	.hw_ids		= (unsigned int []){0, 1, 2, 4, 5 },
 };
diff --git a/drivers/thermal/qcom/tsens-8974.c b/drivers/thermal/qcom/tsens-8974.c
index 7e149edbfeb6..3d3fda3d731b 100644
--- a/drivers/thermal/qcom/tsens-8974.c
+++ b/drivers/thermal/qcom/tsens-8974.c
@@ -232,4 +232,5 @@ static const struct tsens_ops ops_8974 = {
 const struct tsens_data data_8974 = {
 	.num_sensors	= 11,
 	.ops		= &ops_8974,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x0 },
 };
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 1bdef92e4521..381a212872bf 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -68,10 +68,12 @@ static const struct tsens_ops ops_generic_v2 = {
 
 const struct tsens_data data_tsens_v2 = {
 	.ops            = &ops_generic_v2,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x4 },
 };
 
 /* Kept around for backward compatibility with old msm8996.dtsi */
 const struct tsens_data data_8996 = {
 	.num_sensors	= 13,
 	.ops		= &ops_generic_v2,
+	.reg_offsets	= { [SROT_CTRL_OFFSET] = 0x4 },
 };
diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c
index 9a8e8f7b4ae1..3c8776e55252 100644
--- a/drivers/thermal/qcom/tsens.c
+++ b/drivers/thermal/qcom/tsens.c
@@ -144,6 +144,8 @@ static int tsens_probe(struct platform_device *pdev)
 		else
 			tmdev->sensor[i].hw_id = i;
 	}
+	for (i = 0; i < REG_ARRAY_SIZE; i++)
+		tmdev->reg_offsets[i] = data->reg_offsets[i];
 
 	if (!tmdev->ops || !tmdev->ops->init || !tmdev->ops->get_temp)
 		return -EINVAL;
diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h
index b9c4bcf255fa..f62d2b6281da 100644
--- a/drivers/thermal/qcom/tsens.h
+++ b/drivers/thermal/qcom/tsens.h
@@ -48,15 +48,23 @@ struct tsens_ops {
 	int (*get_trend)(struct tsens_device *, int, enum thermal_trend *);
 };
 
+enum reg_list {
+	SROT_CTRL_OFFSET,
+
+	REG_ARRAY_SIZE,
+};
+
 /**
  * struct tsens_data - tsens instance specific data
  * @num_sensors: Max number of sensors supported by platform
  * @ops: operations the tsens instance supports
+ * @reg_offsets: Register offsets for commonly used registers
  * @hw_ids: Subset of sensors ids supported by platform, if not the first n
  */
 struct tsens_data {
 	const u32		num_sensors;
 	const struct tsens_ops	*ops;
+	const u16		reg_offsets[REG_ARRAY_SIZE];
 	unsigned int		*hw_ids;
 };
 
@@ -72,6 +80,7 @@ struct tsens_device {
 	struct regmap			*tm_map;
 	struct regmap			*srot_map;
 	u32				tm_offset;
+	u16				reg_offsets[REG_ARRAY_SIZE];
 	struct tsens_context		ctx;
 	const struct tsens_ops		*ops;
 	struct tsens_sensor		sensor[0];
-- 
2.17.1


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

* Re: [PATCH v3 00/16] Another round of tsens cleanups
  2018-09-20 19:02 ` Andy Gross
@ 2018-09-21 17:48     ` Amit Kucheria
  0 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-21 17:48 UTC (permalink / raw)
  To: Andy Gross
  Cc: LKML, Rajendra Nayak, linux-arm-msm, Bjorn Andersson,
	Eduardo Valentin, smohanad, Douglas Anderson, Matthias Kaehlcke,
	David S. Miller, Andrew Morton, Arnd Bergmann, Daniel Lezcano,
	gregkh, mchehab+samsung,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Linux PM list, open list:ARM/QUALCOMM SUPPORT

On Thu, Sep 20, 2018 at 12:02 PM Andy Gross <andy.gross@linaro.org> wrote:
>
> On Wed, Sep 12, 2018 at 03:22:45PM +0530, Amit Kucheria wrote:
> > This is another series of tsens cleanups before we add interrupt support. This applies on top of 4.19-rc2.
> >
> > Patches [1-6] can directly be applied by Eduardo.
> > Patches [9-16] can directly be applied by Andy.
>
> Eduardo,
>
> I ACKed the DTS patches for this.  Can you take 9-16 along with the 1-6 through
> your tree?
>

Thanks Andy.

Eduardo, I've send a fixup patch 07/16. If you like, I can resend the
entire series
or you can find the entire series hosted with all tags applied here:
https://git.linaro.org/people/amit.kucheria/kernel.git/log/?h=up/thermal/tsens-preirq-cleanup-v4

Regards,
Amit

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

* Re: [PATCH v3 00/16] Another round of tsens cleanups
@ 2018-09-21 17:48     ` Amit Kucheria
  0 siblings, 0 replies; 35+ messages in thread
From: Amit Kucheria @ 2018-09-21 17:48 UTC (permalink / raw)
  To: Andy Gross
  Cc: LKML, Rajendra Nayak, linux-arm-msm, Bjorn Andersson,
	Eduardo Valentin, smohanad, Douglas Anderson, Matthias Kaehlcke,
	David S. Miller, Andrew Morton, Arnd Bergmann, Daniel Lezcano,
	gregkh, mchehab+samsung,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Linux PM list, open list:ARM/QUALCOMM SUPPORT

On Thu, Sep 20, 2018 at 12:02 PM Andy Gross <andy.gross@linaro.org> wrote:
>
> On Wed, Sep 12, 2018 at 03:22:45PM +0530, Amit Kucheria wrote:
> > This is another series of tsens cleanups before we add interrupt support. This applies on top of 4.19-rc2.
> >
> > Patches [1-6] can directly be applied by Eduardo.
> > Patches [9-16] can directly be applied by Andy.
>
> Eduardo,
>
> I ACKed the DTS patches for this.  Can you take 9-16 along with the 1-6 through
> your tree?
>

Thanks Andy.

Eduardo, I've send a fixup patch 07/16. If you like, I can resend the
entire series
or you can find the entire series hosted with all tags applied here:
https://git.linaro.org/people/amit.kucheria/kernel.git/log/?h=up/thermal/tsens-preirq-cleanup-v4

Regards,
Amit

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

* Re: [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones
  2018-09-12  9:53 ` [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones Amit Kucheria
  2018-09-20 19:01   ` Andy Gross
@ 2018-10-25 19:25   ` Matthias Kaehlcke
  2018-10-25 20:03     ` Amit Kucheria
  1 sibling, 1 reply; 35+ messages in thread
From: Matthias Kaehlcke @ 2018-10-25 19:25 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: linux-kernel, rnayak, linux-arm-msm, bjorn.andersson, edubezval,
	smohanad, andy.gross, dianders, David Brown, Rob Herring,
	Mark Rutland, linux-soc, devicetree

Hi Amit,

vaguely related question, since you are working on SDM845 thermal
stuff: Do you have plans to add CPU cooling devices? I raised the
point during the review of the CPUfreq HW, however there was no
clear answer: https://lore.kernel.org/patchwork/patch/966833/#1164748
The driver is still under development/review, but I wonder what the
path forward is.

Cheers

Matthias

On Wed, Sep 12, 2018 at 03:23:01PM +0530, Amit Kucheria wrote:
> One thermal zone per cpu is defined
> 
> Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
> Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
> Tested-by: Matthias Kaehlcke <mka@chromium.org>
> ---
>  arch/arm64/boot/dts/qcom/sdm845.dtsi | 170 +++++++++++++++++++++++++++
>  1 file changed, 170 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> index 0c9a2aa6a1b5..eb801922f6bb 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
> @@ -1104,4 +1104,174 @@
>  			};
>  		};
>  	};
> +
> +	thermal-zones {
> +		cpu0-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 1>;
> +
> +			trips {
> +				cpu_alert0: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit0: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu1-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 2>;
> +
> +			trips {
> +				cpu_alert1: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit1: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu2-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 3>;
> +
> +			trips {
> +				cpu_alert2: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit2: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu3-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 4>;
> +
> +			trips {
> +				cpu_alert3: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit3: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu4-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 7>;
> +
> +			trips {
> +				cpu_alert4: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit4: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu5-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 8>;
> +
> +			trips {
> +				cpu_alert5: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit5: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu6-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 9>;
> +
> +			trips {
> +				cpu_alert6: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit6: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +
> +		cpu7-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens0 10>;
> +
> +			trips {
> +				cpu_alert7: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu_crit7: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <1000>;
> +					type = "critical";
> +				};
> +			};
> +		};
> +	};
>  };

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

* Re: [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones
  2018-10-25 19:25   ` Matthias Kaehlcke
@ 2018-10-25 20:03     ` Amit Kucheria
  2018-10-25 20:37       ` Matthias Kaehlcke
  0 siblings, 1 reply; 35+ messages in thread
From: Amit Kucheria @ 2018-10-25 20:03 UTC (permalink / raw)
  To: mka
  Cc: Linux Kernel Mailing List, Rajendra Nayak, linux-arm-msm,
	Bjorn Andersson, Eduardo Valentin, smohanad, Andy Gross,
	Doug Anderson, David Brown, Rob Herring, Mark Rutland,
	open list:ARM/QUALCOMM SUPPORT, DTML

On Fri, Oct 26, 2018 at 12:55 AM Matthias Kaehlcke <mka@chromium.org> wrote:
>
> Hi Amit,
>
> vaguely related question, since you are working on SDM845 thermal
> stuff: Do you have plans to add CPU cooling devices? I raised the
> point during the review of the CPUfreq HW, however there was no
> clear answer: https://lore.kernel.org/patchwork/patch/966833/#1164748
> The driver is still under development/review, but I wonder what the
> path forward is.
>

Hi Matthias,

I plan to but the OSM driver doesn't work well enough for me to send
out that patch yet. I responded with my findings on the v9 posting
where it seems to get stuck at the high OPP. It'd be nice if somebody
else could confirm (or refute) this behaviour.

Regards,
Amit

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

* Re: [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones
  2018-10-25 20:03     ` Amit Kucheria
@ 2018-10-25 20:37       ` Matthias Kaehlcke
  0 siblings, 0 replies; 35+ messages in thread
From: Matthias Kaehlcke @ 2018-10-25 20:37 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: Linux Kernel Mailing List, Rajendra Nayak, linux-arm-msm,
	Bjorn Andersson, Eduardo Valentin, smohanad, Andy Gross,
	Doug Anderson, David Brown, Rob Herring, Mark Rutland,
	open list:ARM/QUALCOMM SUPPORT, DTML

On Fri, Oct 26, 2018 at 01:33:40AM +0530, Amit Kucheria wrote:
> On Fri, Oct 26, 2018 at 12:55 AM Matthias Kaehlcke <mka@chromium.org> wrote:
> >
> > Hi Amit,
> >
> > vaguely related question, since you are working on SDM845 thermal
> > stuff: Do you have plans to add CPU cooling devices? I raised the
> > point during the review of the CPUfreq HW, however there was no
> > clear answer: https://lore.kernel.org/patchwork/patch/966833/#1164748
> > The driver is still under development/review, but I wonder what the
> > path forward is.
> >
> 
> Hi Matthias,
> 
> I plan to

Great!

> but the OSM driver doesn't work well enough for me to send
> out that patch yet. I responded with my findings on the v9 posting
> where it seems to get stuck at the high OPP. It'd be nice if somebody
> else could confirm (or refute) this behaviour.

Ok, we aren't using the latest version yet, I'll try to repro and
report back.

Cheers

Matthias

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

end of thread, other threads:[~2018-10-25 20:37 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-12  9:52 [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 01/16] thermal: tsens: Prepare 8916 and 8974 tsens to use SROT and TM address space Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 02/16] thermal: tsens: Add SPDX license identifiers Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 03/16] thermal: tsens: Get rid of dead code Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 04/16] thermal: tsens: Rename map field in order to add a second address map Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 05/16] thermal: tsens: Add the SROT " Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 06/16] MAINTAINERS: Add entry for Qualcomm TSENS thermal drivers Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 07/16] thermal: tsens: Pass register offsets as private data Amit Kucheria
2018-09-18 19:34   ` Bjorn Andersson
     [not found]     ` <cover.1537547011.git.amit.kucheria@linaro.org>
2018-09-21 17:25       ` [PATCH v4 " Amit Kucheria
2018-09-21 17:25         ` Amit Kucheria
2018-09-21 17:46           ` Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 08/16] thermal: tsens: Check if the IP is correctly enabled by firmware Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 09/16] arm: dts: msm8974: thermal: split address space into two Amit Kucheria
2018-09-20 18:57   ` Andy Gross
2018-09-12  9:52 ` [PATCH v3 10/16] arm64: dts: msm8916: " Amit Kucheria
2018-09-20 18:57   ` Andy Gross
2018-09-12  9:52 ` [PATCH v3 11/16] arm: dts: msm8974: thermal: Add "qcom,sensors" property Amit Kucheria
2018-09-20 18:58   ` Andy Gross
2018-09-12  9:52 ` [PATCH v3 12/16] arm64: dts: msm8916: " Amit Kucheria
2018-09-20 18:58   ` Andy Gross
2018-09-12  9:52 ` [PATCH v3 13/16] dt-bindings: thermal: Fix a typo in documentation Amit Kucheria
2018-09-12  9:52 ` [PATCH v3 14/16] arm64: dts: msm8916: Add gpu thermal zone Amit Kucheria
2018-09-20 18:59   ` Andy Gross
2018-09-12  9:53 ` [PATCH v3 15/16] arm64: dts: msm8916: Add camera " Amit Kucheria
2018-09-20 19:00   ` Andy Gross
2018-09-12  9:53 ` [PATCH v3 16/16] arm64: dts: sdm845: enable tsens thermal zones Amit Kucheria
2018-09-20 19:01   ` Andy Gross
2018-10-25 19:25   ` Matthias Kaehlcke
2018-10-25 20:03     ` Amit Kucheria
2018-10-25 20:37       ` Matthias Kaehlcke
2018-09-18 15:01 ` [PATCH v3 00/16] Another round of tsens cleanups Amit Kucheria
2018-09-18 15:01   ` Amit Kucheria
2018-09-20 19:02 ` Andy Gross
2018-09-21 17:48   ` Amit Kucheria
2018-09-21 17:48     ` Amit Kucheria

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.