Skip to contentSkip to conversation

qcom: Add support for TSENS driver

PATCH Superseded Rajendra Nayak 3 participants 22 messages May 5, 2016 – Aug 9, 2016

Subsystems (8)
lore
Share & tools
lore
#0 lore raw

v6 cover qcom: Add support for TSENS driver

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo. Patches [7-11] will need to go via qcom-msm tree/Andy.

Changes since v5:
* Minor review fixes from Eduardo

Changes since v4:
* dropped qcom,tsens-slopes binding, used coefficients instead
* dropped qcom,sensor-id binding
* Added support for msm8996 family
* Other minor review fixes from v4

Changes since v3:
* Dropped 'clk: qcom: create virtual child device for TSENS' which is picked up by Stephen
* Updated GCC bindings with optional TSENS properties

Changes since v2:
* Minor review fixes from Stephen/Punit and rebase on 4.3-rc4

Changes since v1:
* Created virtual tsens device from gcc driver for 8960, with DT having a single node for gcc and tsens
* Minor fixes with rebasing on 4.3-rc1

Changes since RFC:
* Added support for 8916 and 8084
* Based off the latest nvmem framework patches [1]
* Minor review fixes for comments mostly from Lina

This is an attempt to have a single TSENS driver for
the different versions of the TSENS IP that exist, on different qcom msm/apq SoCs'
Support is added for msm8916, msm8960, msm8974 and msm8996 families.

A lot of the work is based of original code from Stephen Boyd and Siddartha Mohanadoss. I have also picked some of what Narendran Rajan did in his attempt to upstream the support for 8960 family. I could not keep the original authorship on any of the patches because I ended up moving the code around quite a bit in an effort to have a single driver for the various devices. I would be glad to change the authorship for any of the patches if needed.

[1] https://lkml.org/lkml/2016/4/24/103
[2] git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-next

Rajendra Nayak (11):
thermal: qcom: tsens: Add a skeletal TSENS drivers
thermal: qcom: tsens-8916: Add support for 8916 family of SoCs
thermal: qcom: tsens-8974: Add support for 8974 family of SoCs
thermal: core: export apis to get slope and offset
thermal: qcom: tsens-8960: Add support for 8960 family of SoCs
thermal: qcom: tsens-8996: Add support for 8996 family of SoCs
arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

 .../devicetree/bindings/clock/qcom,gcc.txt         |  18 ++
 .../devicetree/bindings/thermal/qcom-tsens.txt     |  21 ++
 Documentation/thermal/sysfs-api.txt                |  12 +
 arch/arm/boot/dts/qcom-apq8064.dtsi                | 103 ++++++++
 arch/arm/boot/dts/qcom-apq8084.dtsi                | 103 ++++++++
 arch/arm/boot/dts/qcom-msm8974.dtsi                | 103 ++++++++
 arch/arm64/boot/dts/qcom/msm8916.dtsi              |  64 +++++
 arch/arm64/boot/dts/qcom/msm8996.dtsi              |  92 +++++++
 drivers/thermal/Kconfig                            |   5 +
 drivers/thermal/Makefile                           |   1 +
 drivers/thermal/qcom/Kconfig                       |  11 +
 drivers/thermal/qcom/Makefile                      |   2 +
 drivers/thermal/qcom/tsens-8916.c                  | 113 ++++++++
 drivers/thermal/qcom/tsens-8960.c                  | 292 +++++++++++++++++++++
 drivers/thermal/qcom/tsens-8974.c                  | 244 +++++++++++++++++
 drivers/thermal/qcom/tsens-8996.c                  |  84 ++++++
 drivers/thermal/qcom/tsens-common.c                | 141 ++++++++++
 drivers/thermal/qcom/tsens.c                       | 200 ++++++++++++++
 drivers/thermal/qcom/tsens.h                       |  92 +++++++
 drivers/thermal/thermal_core.c                     |  30 +++
 include/linux/thermal.h                            |   8 +
 21 files changed, 1739 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt
 create mode 100644 drivers/thermal/qcom/Kconfig
 create mode 100644 drivers/thermal/qcom/Makefile
 create mode 100644 drivers/thermal/qcom/tsens-8916.c
 create mode 100644 drivers/thermal/qcom/tsens-8960.c
 create mode 100644 drivers/thermal/qcom/tsens-8974.c
 create mode 100644 drivers/thermal/qcom/tsens-8996.c
 create mode 100644 drivers/thermal/qcom/tsens-common.c
 create mode 100644 drivers/thermal/qcom/tsens.c
 create mode 100644 drivers/thermal/qcom/tsens.h
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#1 lore raw

PATCH v6 1/11 thermal: qcom: tsens: Add a skeletal TSENS drivers

TSENS is Qualcomms' thermal temperature sensor device. It supports reading temperatures from multiple thermal sensors present on various QCOM SoCs.
Calibration data is generally read from a non-volatile memory (eeprom) device.

Add a skeleton driver with all the necessary abstractions so a variety of qcom device families which support TSENS can add driver extensions.

Also add the required device tree bindings which can be used to describe the TSENS device in DT.

---
 .../devicetree/bindings/thermal/qcom-tsens.txt     |  21 +++
 drivers/thermal/Kconfig                            |   5 +
 drivers/thermal/Makefile                           |   1 +
 drivers/thermal/qcom/Kconfig                       |  11 ++
 drivers/thermal/qcom/Makefile                      |   2 +
 drivers/thermal/qcom/tsens-common.c                | 141 +++++++++++++++
 drivers/thermal/qcom/tsens.c                       | 195 +++++++++++++++++++++
 drivers/thermal/qcom/tsens.h                       |  90 ++++++++++
 8 files changed, 466 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt
 create mode 100644 drivers/thermal/qcom/Kconfig
 create mode 100644 drivers/thermal/qcom/Makefile
 create mode 100644 drivers/thermal/qcom/tsens-common.c
 create mode 100644 drivers/thermal/qcom/tsens.c
 create mode 100644 drivers/thermal/qcom/tsens.h
Documentation/devicetree/bindings/thermal/qcom-tsens.txt new file +21 -0
new file mode 100644
index 0000000..292ed89
@@ -0,0 +1,21 @@
+* QCOM SoC Temperature Sensor (TSENS)
+
+Required properties:
+- compatible :
+ - "qcom,msm8916-tsens" : For 8916 Family of SoCs
+ - "qcom,msm8974-tsens" : For 8974 Family of SoCs
+ - "qcom,msm8996-tsens" : For 8996 Family of SoCs
+
+- reg: Address range of the thermal registers
+- #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description.
+- Refer to Documentation/devicetree/bindings/nvmem/nvmem.txt to know how to specify
+nvmem cells
+
+Example:
+tsens: thermal-sensor at 900000 {
+		compatible = "qcom,msm8916-tsens";
+		reg = <0x4a8000 0x2000>;
+		nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
+		nvmem-cell-names = "caldata", "calsel";
+		#thermal-sensor-cells = <1>;
+	};
drivers/thermal/Kconfig +5 -0
index 3c3dc4a..04d562d 100644
@@ -410,4 +410,9 @@ config QCOM_SPMI_TEMP_ALARM
 	  real time die temperature if an ADC is present or an estimate of the
 	  temperature based upon the over temperature stage value.
 
+menu "Qualcomm thermal drivers"
+depends on (ARCH_QCOM && OF) || COMPILE_TEST
+source "drivers/thermal/qcom/Kconfig"
+endmenu
+
 endif
drivers/thermal/Makefile +1 -0
index 8e9cbc3..3f3e72c 100644
@@ -46,6 +46,7 @@ obj-$(CONFIG_TI_SOC_THERMAL)	+= ti-soc-thermal/
 obj-$(CONFIG_INT340X_THERMAL)  += int340x_thermal/
 obj-$(CONFIG_INTEL_PCH_THERMAL)	+= intel_pch_thermal.o
 obj-$(CONFIG_ST_THERMAL)	+= st/
+obj-$(CONFIG_QCOM_TSENS)	+= qcom/
 obj-$(CONFIG_TEGRA_SOCTHERM)	+= tegra_soctherm.o
 obj-$(CONFIG_HISI_THERMAL)     += hisi_thermal.o
 obj-$(CONFIG_MTK_THERMAL)	+= mtk_thermal.o
drivers/thermal/qcom/Kconfig new file +11 -0
new file mode 100644
index 0000000..be32e5a
@@ -0,0 +1,11 @@
+config QCOM_TSENS
+	tristate "Qualcomm TSENS Temperature Alarm"
+	depends on THERMAL
+	depends on QCOM_QFPROM
+	depends on ARCH_QCOM || COMPILE_TEST
+	help
+	  This enables the thermal sysfs driver for the TSENS device. It shows
+	  up in Sysfs as a thermal zone with multiple trip points. Disabling the
+	  thermal zone device via the mode file results in disabling the sensor.
+	  Also able to set threshold temperature for both hot and cold and update
+	  when a threshold is reached.
drivers/thermal/qcom/Makefile new file +2 -0
new file mode 100644
index 0000000..2e800c5
@@ -0,0 +1,2 @@
+obj-$(CONFIG_QCOM_TSENS)	+= qcom_tsens.o
+qcom_tsens-y			+= tsens.o tsens-common.o
drivers/thermal/qcom/tsens-common.c new file +141 -0

141 lines not on this page · raw message

drivers/thermal/qcom/tsens.c new file +195 -0

195 lines not on this page · raw message

drivers/thermal/qcom/tsens.h new file +90 -0

90 lines not on this page · raw message

Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#2 lore raw

PATCH v6 2/11 thermal: qcom: tsens-8916: Add support for 8916 family of SoCs

In reply to Rajendra Nayak

Add support to calibrate sensors on 8916 family and also add common functions to read temperature from sensors (This can be reused on other SoCs having similar TSENS device)
The calibration data is read from eeprom using the generic nvmem framework apis.

Based on the original code by Siddartha Mohanadoss and Stephen Boyd.

---
 drivers/thermal/qcom/Makefile     |   2 +-
 drivers/thermal/qcom/tsens-8916.c | 113 ++++++++++++++++++++++++++++++++++++++
 drivers/thermal/qcom/tsens.c      |   1 +
 drivers/thermal/qcom/tsens.h      |   2 +
 4 files changed, 117 insertions(+), 1 deletion(-)
 create mode 100644 drivers/thermal/qcom/tsens-8916.c
drivers/thermal/qcom/Makefile +1 -1
index 2e800c5..05c98e4 100644
@@ -1,2 +1,2 @@
 obj-$(CONFIG_QCOM_TSENS)	+= qcom_tsens.o
-qcom_tsens-y			+= tsens.o tsens-common.o
+qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o
drivers/thermal/qcom/tsens-8916.c new file +113 -0

113 lines not on this page · raw message

drivers/thermal/qcom/tsens.c +1 -0
index 17d7b55..7f3dfa1 100644
@@ -65,6 +65,7 @@ static SIMPLE_DEV_PM_OPS(tsens_pm_ops, tsens_suspend, tsens_resume);
 static const struct of_device_id tsens_table[] = {
 	{
 		.compatible = "qcom,msm8916-tsens",
+		.data = &data_8916,
 	}, {
 		.compatible = "qcom,msm8974-tsens",
 	},
drivers/thermal/qcom/tsens.h +2 -0
index 3b1b6ae..e767ad5 100644
@@ -87,4 +87,6 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32);
 int init_common(struct tsens_device *);
 int get_temp_common(struct tsens_device *, int, int *);
 
+extern const struct tsens_data data_8916;
+
 #endif /* __QCOM_TSENS_H__ */
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#3 lore raw

PATCH v6 3/11 thermal: qcom: tsens-8974: Add support for 8974 family of SoCs

In reply to Rajendra Nayak

Add .calibrate support for 8974 family as part of tsens_ops.

Based on the original code by Siddartha Mohanadoss and Stephen Boyd.

---
 drivers/thermal/qcom/Makefile     |   2 +-
 drivers/thermal/qcom/tsens-8974.c | 244 ++++++++++++++++++++++++++++++++++++++
 drivers/thermal/qcom/tsens.c      |   1 +
 drivers/thermal/qcom/tsens.h      |   2 +-
 4 files changed, 247 insertions(+), 2 deletions(-)
 create mode 100644 drivers/thermal/qcom/tsens-8974.c
drivers/thermal/qcom/Makefile +1 -1
index 05c98e4..a471100 100644
@@ -1,2 +1,2 @@
 obj-$(CONFIG_QCOM_TSENS)	+= qcom_tsens.o
-qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o
+qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o tsens-8974.o
drivers/thermal/qcom/tsens-8974.c new file +244 -0

244 lines not on this page · raw message

drivers/thermal/qcom/tsens.c +1 -0
index 7f3dfa1..5f206e3 100644
@@ -68,6 +68,7 @@ static const struct of_device_id tsens_table[] = {
 		.data = &data_8916,
 	}, {
 		.compatible = "qcom,msm8974-tsens",
+		.data = &data_8974,
 	},
 	{}
 };
drivers/thermal/qcom/tsens.h +1 -1
index e767ad5..8ab9997 100644
@@ -87,6 +87,6 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32);
 int init_common(struct tsens_device *);
 int get_temp_common(struct tsens_device *, int, int *);
 
-extern const struct tsens_data data_8916;
+extern const struct tsens_data data_8916, data_8974;
 
 #endif /* __QCOM_TSENS_H__ */
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#4 lore raw

PATCH v6 4/11 thermal: core: export apis to get slope and offset

In reply to Rajendra Nayak

Add apis for platform thermal drivers to query for slope and offset attributes, which might be needed for temperature calculations.

---
 Documentation/thermal/sysfs-api.txt | 12 ++++++++++++
 drivers/thermal/thermal_core.c      | 30 ++++++++++++++++++++++++++++++
 include/linux/thermal.h             |  8 ++++++++
 3 files changed, 50 insertions(+)
Documentation/thermal/sysfs-api.txt +12 -0
index ed419d6..3450cb0 100644
@@ -140,6 +140,18 @@ temperature) and throttle appropriate devices.
 	Normally this function will not need to be called and the resource
 	management code will ensure that the resource is freed.
 
+1.1.7 int thermal_zone_get_slope(struct thermal_zone_device *tz)
+
+	This interface is used to read the slope attribute value
+	for the thermal zone device, which might be useful for platform
+	drivers for temperature calculations.
+
+1.1.8 int thermal_zone_get_offset(struct thermal_zone_device *tz)
+
+	This interface is used to read the offset attribute value
+	for the thermal zone device, which might be useful for platform
+	drivers for temperature calculations.
+
 1.2 thermal cooling device interface
 1.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name,
 		void *devdata, struct thermal_cooling_device_ops *)
drivers/thermal/thermal_core.c +30 -0
index 5133cd1..b118aae 100644
@@ -2065,6 +2065,36 @@ exit:
 }
 EXPORT_SYMBOL_GPL(thermal_zone_get_zone_by_name);
 
+/**
+ * thermal_zone_get_slope - return the slope attribute of the thermal zone
+ * @tz: thermal zone device with the slope attribute
+ *
+ * Return: If the thermal zone device has a slope attribute, return it, else
+ * return 1.
+ */
+int thermal_zone_get_slope(struct thermal_zone_device *tz)
+{
+	if (tz && tz->tzp)
+		return tz->tzp->slope;
+	return 1;
+}
+EXPORT_SYMBOL_GPL(thermal_zone_get_slope);
+
+/**
+ * thermal_zone_get_offset - return the offset attribute of the thermal zone
+ * @tz: thermal zone device with the offset attribute
+ *
+ * Return: If the thermal zone device has a offset attribute, return it, else
+ * return 0.
+ */
+int thermal_zone_get_offset(struct thermal_zone_device *tz)
+{
+	if (tz && tz->tzp)
+		return tz->tzp->offset;
+	return 0;
+}
+EXPORT_SYMBOL_GPL(thermal_zone_get_offset);
+
 #ifdef CONFIG_NET
 static const struct genl_multicast_group thermal_event_mcgrps[] = {
 	{ .name = THERMAL_GENL_MCAST_GROUP_NAME, },
include/linux/thermal.h +8 -0
index 1b8a5a7..fd206b9 100644
@@ -432,6 +432,8 @@ thermal_of_cooling_device_register(struct device_node *np, char *, void *,
 void thermal_cooling_device_unregister(struct thermal_cooling_device *);
 struct thermal_zone_device *thermal_zone_get_zone_by_name(const char *name);
 int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp);
+int thermal_zone_get_slope(struct thermal_zone_device *tz);
+int thermal_zone_get_offset(struct thermal_zone_device *tz);
 
 int get_tz_trend(struct thermal_zone_device *, int);
 struct thermal_instance *get_thermal_instance(struct thermal_zone_device *,
@@ -489,6 +491,12 @@ static inline struct thermal_zone_device *thermal_zone_get_zone_by_name(
 static inline int thermal_zone_get_temp(
 		struct thermal_zone_device *tz, int *temp)
 { return -ENODEV; }
+static inline int thermal_zone_get_slope(
+		struct thermal_zone_device *tz)
+{ return -ENODEV; }
+static inline int thermal_zone_get_offset(
+		struct thermal_zone_device *tz)
+{ return -ENODEV; }
 static inline int get_tz_trend(struct thermal_zone_device *tz, int trip)
 { return -ENODEV; }
 static inline struct thermal_instance *
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#5 lore raw

PATCH v6 5/11 thermal: qcom: tsens-8960: Add support for 8960 family of SoCs

In reply to Rajendra Nayak

8960 family of SoCs have the TSENS device as part of GCC, hence the driver probes the virtual child device created by GCC and uses the parent to extract all DT properties and reuses the GCC regmap.

Also GCC/TSENS are part of a domain thats not always ON. Hence add .suspend and .resume hooks to save and restore some of the inited register context.

Also 8960 family have some of the TSENS init sequence thats required to be done by the HLOS driver (some later versions of TSENS do not export these registers to non-secure world, and hence need these initializations to be done by secure bootloaders)

8660 from the same family has just one sensor and hence some register offset/layout differences which need special handling in the driver.

Based on the original code from Siddartha Mohanadoss, Stephen Boyd and Narendran Rajan.

---
 drivers/thermal/qcom/Makefile     |   2 +-
 drivers/thermal/qcom/tsens-8960.c | 292 ++++++++++++++++++++++++++++++++++++++
 drivers/thermal/qcom/tsens.c      |   8 +-
 drivers/thermal/qcom/tsens.h      |   2 +-
 4 files changed, 298 insertions(+), 6 deletions(-)
 create mode 100644 drivers/thermal/qcom/tsens-8960.c
drivers/thermal/qcom/Makefile +1 -1
index a471100..f3cefd1 100644
@@ -1,2 +1,2 @@
 obj-$(CONFIG_QCOM_TSENS)	+= qcom_tsens.o
-qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o tsens-8974.o
+qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o
drivers/thermal/qcom/tsens-8960.c new file +292 -0

292 lines not on this page · raw message

drivers/thermal/qcom/tsens.c +4 -4
index 5f206e3..cef86c3 100644
@@ -122,10 +122,10 @@ static int tsens_probe(struct platform_device *pdev)
 	np = dev->of_node;
 
 	id = of_match_node(tsens_table, np);
-	if (!id)
-		return -EINVAL;
-
-	data = id->data;
+	if (id)
+		data = id->data;
+	else
+		data = &data_8960;
 
 	if (data->num_sensors <= 0) {
 		dev_err(dev, "invalid number of sensors\n");
drivers/thermal/qcom/tsens.h +1 -1
index 8ab9997..42071a4 100644
@@ -87,6 +87,6 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32);
 int init_common(struct tsens_device *);
 int get_temp_common(struct tsens_device *, int, int *);
 
-extern const struct tsens_data data_8916, data_8974;
+extern const struct tsens_data data_8916, data_8974, data_8960;
 
 #endif /* __QCOM_TSENS_H__ */
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#6 lore raw

PATCH v6 6/11 thermal: qcom: tsens-8996: Add support for 8996 family of SoCs

In reply to Rajendra Nayak

The TSENS controller in 8996 family of SoCs is capable of converting the ADC code outputs to real temperature values (in decidegree Celsius). It can also be programmed to provide raw ADC code, but the secure software on 8996 programs it to provide real temperatures and also does the needed calibrations.

We check the valid bit to ensure valid data is read by the AHB master. And the spec recommends the below algorithm to read data 3 consecutive times, which takes care of the worst case delay taken to propagate the updated data to the register.

---
 drivers/thermal/qcom/Makefile     |  2 +-
 drivers/thermal/qcom/tsens-8996.c | 84 +++++++++++++++++++++++++++++++++++++++
 drivers/thermal/qcom/tsens.c      |  3 ++
 drivers/thermal/qcom/tsens.h      |  2 +-
 4 files changed, 89 insertions(+), 2 deletions(-)
 create mode 100644 drivers/thermal/qcom/tsens-8996.c
drivers/thermal/qcom/Makefile +1 -1
index f3cefd1..2cc2193 100644
@@ -1,2 +1,2 @@
 obj-$(CONFIG_QCOM_TSENS)	+= qcom_tsens.o
-qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o
+qcom_tsens-y			+= tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o
drivers/thermal/qcom/tsens-8996.c new file +84 -0

84 lines not on this page · raw message

drivers/thermal/qcom/tsens.c +3 -0
index cef86c3..b182272 100644
@@ -69,6 +69,9 @@ static const struct of_device_id tsens_table[] = {
 	}, {
 		.compatible = "qcom,msm8974-tsens",
 		.data = &data_8974,
+	}, {
+		.compatible = "qcom,msm8996-tsens",
+		.data = &data_8996,
 	},
 	{}
 };
drivers/thermal/qcom/tsens.h +1 -1
index 42071a4..b0f8c47 100644
@@ -87,6 +87,6 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32);
 int init_common(struct tsens_device *);
 int get_temp_common(struct tsens_device *, int, int *);
 
-extern const struct tsens_data data_8916, data_8974, data_8960;
+extern const struct tsens_data data_8916, data_8974, data_8960, data_8996;
 
 #endif /* __QCOM_TSENS_H__ */
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#7 lore raw

PATCH v6 7/11 arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes

In reply to Rajendra Nayak

Add thermal zones, tsens and qfprom nodes

---
 arch/arm/boot/dts/qcom-msm8974.dtsi | 103 ++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
arch/arm/boot/dts/qcom-msm8974.dtsi +103 -0
index 8193139..3a7a63b 100644
@@ -126,6 +126,88 @@
 		};
 	};
 
+	thermal-zones {
+		cpu-thermal0 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 5>;
+
+			trips {
+				cpu_alert0: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit0: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal1 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 6>;
+
+			trips {
+				cpu_alert1: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit1: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal2 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 7>;
+
+			trips {
+				cpu_alert2: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit2: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal3 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 8>;
+
+			trips {
+				cpu_alert3: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit3: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+	};
+
 	cpu-pmu {
 		compatible = "qcom,krait-pmu";
 		interrupts = <1 7 0xf04>;
@@ -249,6 +331,27 @@
 			reg = <0xf9011000 0x1000>;
 		};
 
+		qfprom: qfprom at fc4bc000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "qcom,qfprom";
+			reg = <0xfc4bc000 0x1000>;
+			tsens_calib: calib at d0 {
+				reg = <0xd0 0x18>;
+			};
+			tsens_backup: backup at 440 {
+				reg = <0x440 0x10>;
+			};
+		};
+
+		tsens: thermal-sensor at fc4a8000 {
+			compatible = "qcom,msm8974-tsens";
+			reg = <0xfc4a8000 0x2000>;
+			nvmem-cells = <&tsens_calib>, <&tsens_backup>;
+			nvmem-cell-names = "calib", "calib_backup";
+			#thermal-sensor-cells = <1>;
+		};
+
 		timer at f9020000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#8 lore raw

PATCH v6 7/11 arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes

Quoted 19 lines · Rajendra Nayak

Add thermal zones, tsens and qfprom nodes

---
 arch/arm/boot/dts/qcom-msm8974.dtsi | 103 ++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
arch/arm/boot/dts/qcom-msm8974.dtsi +3 -0
index 8193139..3a7a63b 100644
@@ -126,6 +126,88 @@
 		};
 	};
 
+	thermal-zones {
+		cpu-thermal0 {
+			polling-delay-passive = <250>;

arch/arm/boot/dts/qcom-msm8974.dtsi line 141

Quoted 10 lines
arch/arm/boot/dts/qcom-msm8974.dtsi +10 -0
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 5>;
+
+			trips {
+				cpu_alert0: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};

You have passive trip points, but not cooling devices.

The cooling-maps property is mandatory, as you can see in the documentation (Documentation/devicetree/bindings/thermal/thermal.txt)

Please add it, for all your zones.

Quoted 104 lines
arch/arm/boot/dts/qcom-msm8974.dtsi +90 -0
+				cpu_crit0: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal1 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 6>;
+
+			trips {
+				cpu_alert1: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit1: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal2 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 7>;
+
+			trips {
+				cpu_alert2: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit2: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal3 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 8>;
+
+			trips {
+				cpu_alert3: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit3: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+	};
+
 	cpu-pmu {
 		compatible = "qcom,krait-pmu";
 		interrupts = <1 7 0xf04>;
@@ -249,6 +331,27 @@
 			reg = <0xf9011000 0x1000>;
 		};
 
+		qfprom: qfprom at fc4bc000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "qcom,qfprom";
+			reg = <0xfc4bc000 0x1000>;
+			tsens_calib: calib at d0 {
+				reg = <0xd0 0x18>;
+			};
+			tsens_backup: backup at 440 {
+				reg = <0x440 0x10>;
+			};
+		};
+
+		tsens: thermal-sensor at fc4a8000 {
+			compatible = "qcom,msm8974-tsens";
+			reg = <0xfc4a8000 0x2000>;
+			nvmem-cells = <&tsens_calib>, <&tsens_backup>;
+			nvmem-cell-names = "calib", "calib_backup";
+			#thermal-sensor-cells = <1>;
+		};
+
 		timer at f9020000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#9 lore raw

PATCH v6 8/11 arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes

In reply to Rajendra Nayak

TSENS is part of GCC, hence add TSENS properties as part of GCC node. Also add thermal zones and qfprom nodes.
Update GCC bindings doc to mention the possibility of optional TSENS properties that can be part of GCC node.

---
 .../devicetree/bindings/clock/qcom,gcc.txt         |  18 ++++
 arch/arm/boot/dts/qcom-apq8064.dtsi                | 103 +++++++++++++++++++++
 2 files changed, 121 insertions(+)
Documentation/devicetree/bindings/clock/qcom,gcc.txt +18 -0
index 9a60fde..16e2f84 100644
@@ -23,6 +23,13 @@ Required properties :
 Optional properties :
 - #power-domain-cells : shall contain 1
 
+Optional properties:
+- Qualcomm TSENS (thermal sensor device) on some devices can
+be part of GCC and hence the TSENS properties can also be
+part of the GCC/clock-controller node.
+For more details on the TSENS properties please refer
+Documentation/devicetree/bindings/thermal/qcom-tsens.txt
+
 Example:
 	clock-controller at 900000 {
 		compatible = "qcom,gcc-msm8960";
@@ -31,3 +38,14 @@ Example:
 		#reset-cells = <1>;
 		#power-domain-cells = <1>;
 	};
+
+Example of GCC with TSENS properties:
+	clock-controller at 900000 {
+		compatible = "qcom,gcc-apq8064";
+		reg = <0x00900000 0x4000>;
+		nvmem-cells = <&tsens_calib>, <&tsens_backup>;
+		nvmem-cell-names = "calib", "calib_backup";
+		#clock-cells = <1>;
+		#reset-cells = <1>;
+		#thermal-sensor-cells = <1>;
+	};
arch/arm/boot/dts/qcom-apq8064.dtsi +103 -0

120 lines not on this page · raw message

Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#10 lore raw

PATCH v6 9/11 arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes

In reply to Rajendra Nayak

Add thermal zones, tsens and qfprom nodes

---
 arch/arm/boot/dts/qcom-apq8084.dtsi | 103 ++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
arch/arm/boot/dts/qcom-apq8084.dtsi +103 -0
index a33a09f..5284709 100644
@@ -86,6 +86,88 @@
 		};
 	};
 
+	thermal-zones {
+		cpu-thermal0 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 5>;
+
+			trips {
+				cpu_alert0: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit0: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal1 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 6>;
+
+			trips {
+				cpu_alert1: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit1: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal2 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 7>;
+
+			trips {
+				cpu_alert2: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit2: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal3 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 8>;
+
+			trips {
+				cpu_alert3: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit3: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+	};
+
 	cpu-pmu {
 		compatible = "qcom,krait-pmu";
 		interrupts = <1 7 0xf04>;
@@ -142,6 +224,27 @@
 			reg = <0xf9011000 0x1000>;
 		};
 
+		qfprom: qfprom at fc4bc000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "qcom,qfprom";
+			reg = <0xfc4bc000 0x1000>;
+			tsens_calib: calib at d0 {
+				reg = <0xd0 0x18>;
+			};
+			tsens_backup: backup at 440 {
+				reg = <0x440 0x10>;
+			};
+		};
+
+		tsens: thermal-sensor at fc4a8000 {
+			compatible = "qcom,msm8974-tsens";
+			reg = <0xfc4a8000 0x2000>;
+			nvmem-cells = <&tsens_calib>, <&tsens_backup>;
+			nvmem-cell-names = "calib", "calib_backup";
+			#thermal-sensor-cells = <1>;
+		};
+
 		timer at f9020000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#11 lore raw

PATCH v6 10/11 arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes

In reply to Rajendra Nayak

Add thermal zones, tsens and qfprom nodes

---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 64 +++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
arch/arm64/boot/dts/qcom/msm8916.dtsi +64 -0
index af25110..505cf3a 100644
@@ -98,6 +98,49 @@
 		};
 	};
 
+	thermal-zones {
+		cpu-thermal0 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 4>;
+
+			trips {
+				cpu_alert0: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit0: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal1 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 3>;
+
+			trips {
+				cpu_alert1: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu_crit1: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+	};
+
 	timer {
 		compatible = "arm,armv8-timer";
 		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
@@ -544,6 +587,27 @@
 			clocks = <&gcc GCC_PRNG_AHB_CLK>;
 			clock-names = "core";
 		};
+
+		qfprom: qfprom at 5c000 {
+			compatible = "qcom,qfprom";
+			reg = <0x5c000 0x1000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			tsens_caldata: caldata at d0 {
+				reg = <0xd0 0x8>;
+			};
+			tsens_calsel: calsel at ec {
+				reg = <0xec 0x4>;
+			};
+		};
+
+		tsens: thermal-sensor at 4a8000 {
+			compatible = "qcom,msm8916-tsens";
+			reg = <0x4a8000 0x2000>;
+			nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
+			nvmem-cell-names = "calib", "calib_sel";
+			#thermal-sensor-cells = <1>;
+		};
 	};
 
 	smd {
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#12 lore raw

PATCH v6 11/11 arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

In reply to Rajendra Nayak

Add thermal zones, tsens and qfprom nodes

---
 arch/arm64/boot/dts/qcom/msm8996.dtsi | 92 +++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
arch/arm64/boot/dts/qcom/msm8996.dtsi +92 -0
index 0506fb8..4b36929 100644
@@ -97,6 +97,92 @@
 		};
 	};
 
+	thermal-zones {
+		cpu-thermal0 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 3>;
+
+			trips {
+				cpu_alert0: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit0: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal1 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 5>;
+
+			trips {
+				cpu_alert1: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit1: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal2 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 8>;
+
+			trips {
+				cpu_alert2: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit2: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+
+		cpu-thermal3 {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens0 10>;
+
+			trips {
+				cpu_alert3: trip at 0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu_crit3: trip at 1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+		};
+	};
+
 	timer {
 		compatible = "arm,armv8-timer";
 		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
@@ -151,6 +237,12 @@
 			reg = <0x300000 0x90000>;
 		};
 
+		tsens0: thermal-sensor at 4a8000 {
+			compatible = "qcom,msm8996-tsens";
+			reg = <0x4a8000 0x2000>;
+			#thermal-sensor-cells = <1>;
+		};
+
 		blsp2_uart1: serial at 75b0000 {
 			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
 			reg = <0x75b0000 0x1000>;
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#13 lore raw

v6 cover qcom: Add support for TSENS driver

In reply to Rajendra Nayak

Eduardo,

Quoted 3 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Any plans to pull these in for 4.8?

regards,
Rajendra

Quoted 92 lines

Patches [7-11] will need to go via qcom-msm tree/Andy.

Changes since v5:
* Minor review fixes from Eduardo

Changes since v4:
* dropped qcom,tsens-slopes binding, used coefficients instead
* dropped qcom,sensor-id binding
* Added support for msm8996 family
* Other minor review fixes from v4

Changes since v3:
* Dropped 'clk: qcom: create virtual child device for TSENS' which is picked up by Stephen
* Updated GCC bindings with optional TSENS properties

Changes since v2:
* Minor review fixes from Stephen/Punit and rebase on 4.3-rc4

Changes since v1:
* Created virtual tsens device from gcc driver for 8960, with DT having a single node for gcc and tsens
* Minor fixes with rebasing on 4.3-rc1

Changes since RFC:
* Added support for 8916 and 8084
* Based off the latest nvmem framework patches [1]
* Minor review fixes for comments mostly from Lina

This is an attempt to have a single TSENS driver for
the different versions of the TSENS IP that exist, on different qcom msm/apq SoCs'
Support is added for msm8916, msm8960, msm8974 and msm8996 families.

A lot of the work is based of original code from Stephen Boyd and Siddartha Mohanadoss. I have also picked some of what Narendran Rajan did in his attempt to upstream the support for 8960 family. I could not keep the original authorship on any of the patches because I ended up moving the code around quite a bit in an effort to have a single driver for the various devices. I would be glad to change the authorship for any of the patches if needed.

[1] https://lkml.org/lkml/2016/4/24/103
[2] git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-next

Rajendra Nayak (11):
thermal: qcom: tsens: Add a skeletal TSENS drivers
thermal: qcom: tsens-8916: Add support for 8916 family of SoCs
thermal: qcom: tsens-8974: Add support for 8974 family of SoCs
thermal: core: export apis to get slope and offset
thermal: qcom: tsens-8960: Add support for 8960 family of SoCs
thermal: qcom: tsens-8996: Add support for 8996 family of SoCs
arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

 .../devicetree/bindings/clock/qcom,gcc.txt         |  18 ++
 .../devicetree/bindings/thermal/qcom-tsens.txt     |  21 ++
 Documentation/thermal/sysfs-api.txt                |  12 +
 arch/arm/boot/dts/qcom-apq8064.dtsi                | 103 ++++++++
 arch/arm/boot/dts/qcom-apq8084.dtsi                | 103 ++++++++
 arch/arm/boot/dts/qcom-msm8974.dtsi                | 103 ++++++++
 arch/arm64/boot/dts/qcom/msm8916.dtsi              |  64 +++++
 arch/arm64/boot/dts/qcom/msm8996.dtsi              |  92 +++++++
 drivers/thermal/Kconfig                            |   5 +
 drivers/thermal/Makefile                           |   1 +
 drivers/thermal/qcom/Kconfig                       |  11 +
 drivers/thermal/qcom/Makefile                      |   2 +
 drivers/thermal/qcom/tsens-8916.c                  | 113 ++++++++
 drivers/thermal/qcom/tsens-8960.c                  | 292 +++++++++++++++++++++
 drivers/thermal/qcom/tsens-8974.c                  | 244 +++++++++++++++++
 drivers/thermal/qcom/tsens-8996.c                  |  84 ++++++
 drivers/thermal/qcom/tsens-common.c                | 141 ++++++++++
 drivers/thermal/qcom/tsens.c                       | 200 ++++++++++++++
 drivers/thermal/qcom/tsens.h                       |  92 +++++++
 drivers/thermal/thermal_core.c                     |  30 +++
 include/linux/thermal.h                            |   8 +
 21 files changed, 1739 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt
 create mode 100644 drivers/thermal/qcom/Kconfig
 create mode 100644 drivers/thermal/qcom/Makefile
 create mode 100644 drivers/thermal/qcom/tsens-8916.c
 create mode 100644 drivers/thermal/qcom/tsens-8960.c
 create mode 100644 drivers/thermal/qcom/tsens-8974.c
 create mode 100644 drivers/thermal/qcom/tsens-8996.c
 create mode 100644 drivers/thermal/qcom/tsens-common.c
 create mode 100644 drivers/thermal/qcom/tsens.c
 create mode 100644 drivers/thermal/qcom/tsens.h
Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
#14 lore raw

v6 cover qcom: Add support for TSENS driver

Hey Eduardo,

Quoted 8 lines · Rajendra Nayak

Eduardo,

Quoted 3 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

regards,
Rajendra

Quoted 97 lines

regards,
Rajendra

Quoted 92 lines

Patches [7-11] will need to go via qcom-msm tree/Andy.

Changes since v5:
* Minor review fixes from Eduardo

Changes since v4:
* dropped qcom,tsens-slopes binding, used coefficients instead
* dropped qcom,sensor-id binding
* Added support for msm8996 family
* Other minor review fixes from v4

Changes since v3:
* Dropped 'clk: qcom: create virtual child device for TSENS' which is picked up by Stephen
* Updated GCC bindings with optional TSENS properties

Changes since v2:
* Minor review fixes from Stephen/Punit and rebase on 4.3-rc4

Changes since v1:
* Created virtual tsens device from gcc driver for 8960, with DT having a single node for gcc and tsens
* Minor fixes with rebasing on 4.3-rc1

Changes since RFC:
* Added support for 8916 and 8084
* Based off the latest nvmem framework patches [1]
* Minor review fixes for comments mostly from Lina

This is an attempt to have a single TSENS driver for
the different versions of the TSENS IP that exist, on different qcom msm/apq SoCs'
Support is added for msm8916, msm8960, msm8974 and msm8996 families.

A lot of the work is based of original code from Stephen Boyd and Siddartha Mohanadoss. I have also picked some of what Narendran Rajan did in his attempt to upstream the support for 8960 family. I could not keep the original authorship on any of the patches because I ended up moving the code around quite a bit in an effort to have a single driver for the various devices. I would be glad to change the authorship for any of the patches if needed.

[1] https://lkml.org/lkml/2016/4/24/103
[2] git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-next

Rajendra Nayak (11):
thermal: qcom: tsens: Add a skeletal TSENS drivers
thermal: qcom: tsens-8916: Add support for 8916 family of SoCs
thermal: qcom: tsens-8974: Add support for 8974 family of SoCs
thermal: core: export apis to get slope and offset
thermal: qcom: tsens-8960: Add support for 8960 family of SoCs
thermal: qcom: tsens-8996: Add support for 8996 family of SoCs
arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

  .../devicetree/bindings/clock/qcom,gcc.txt         |  18 ++
  .../devicetree/bindings/thermal/qcom-tsens.txt     |  21 ++
  Documentation/thermal/sysfs-api.txt                |  12 +
  arch/arm/boot/dts/qcom-apq8064.dtsi                | 103 ++++++++
  arch/arm/boot/dts/qcom-apq8084.dtsi                | 103 ++++++++
  arch/arm/boot/dts/qcom-msm8974.dtsi                | 103 ++++++++
  arch/arm64/boot/dts/qcom/msm8916.dtsi              |  64 +++++
  arch/arm64/boot/dts/qcom/msm8996.dtsi              |  92 +++++++
  drivers/thermal/Kconfig                            |   5 +
  drivers/thermal/Makefile                           |   1 +
  drivers/thermal/qcom/Kconfig                       |  11 +
  drivers/thermal/qcom/Makefile                      |   2 +
  drivers/thermal/qcom/tsens-8916.c                  | 113 ++++++++
  drivers/thermal/qcom/tsens-8960.c                  | 292 +++++++++++++++++++++
  drivers/thermal/qcom/tsens-8974.c                  | 244 +++++++++++++++++
  drivers/thermal/qcom/tsens-8996.c                  |  84 ++++++
  drivers/thermal/qcom/tsens-common.c                | 141 ++++++++++
  drivers/thermal/qcom/tsens.c                       | 200 ++++++++++++++
  drivers/thermal/qcom/tsens.h                       |  92 +++++++
  drivers/thermal/thermal_core.c                     |  30 +++
  include/linux/thermal.h                            |   8 +
  21 files changed, 1739 insertions(+)

create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt create mode 100644 drivers/thermal/qcom/Kconfig
create mode 100644 drivers/thermal/qcom/Makefile
create mode 100644 drivers/thermal/qcom/tsens-8916.c
create mode 100644 drivers/thermal/qcom/tsens-8960.c
create mode 100644 drivers/thermal/qcom/tsens-8974.c
create mode 100644 drivers/thermal/qcom/tsens-8996.c
create mode 100644 drivers/thermal/qcom/tsens-common.c
create mode 100644 drivers/thermal/qcom/tsens.c
create mode 100644 drivers/thermal/qcom/tsens.h

#15 lore raw

v6 cover qcom: Add support for TSENS driver

Rui,

Quoted 10 lines · Rajendra

Hey Eduardo,

Quoted 7 lines · Rajendra Nayak

Eduardo,

Quoted 3 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Quoted 7 lines
Quoted 1 line

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

regards,
Rajendra

Quoted 101 lines

regards,
Rajendra

Quoted 97 lines

regards,
Rajendra

Quoted 92 lines

Patches [7-11] will need to go via qcom-msm tree/Andy.

Changes since v5:
* Minor review fixes from Eduardo

Changes since v4:
* dropped qcom,tsens-slopes binding, used coefficients instead
* dropped qcom,sensor-id binding
* Added support for msm8996 family
* Other minor review fixes from v4

Changes since v3:
* Dropped 'clk: qcom: create virtual child device for TSENS' which is picked up by Stephen
* Updated GCC bindings with optional TSENS properties

Changes since v2:
* Minor review fixes from Stephen/Punit and rebase on 4.3-rc4

Changes since v1:
* Created virtual tsens device from gcc driver for 8960, with DT having a single node for gcc and tsens
* Minor fixes with rebasing on 4.3-rc1

Changes since RFC:
* Added support for 8916 and 8084
* Based off the latest nvmem framework patches [1]
* Minor review fixes for comments mostly from Lina

This is an attempt to have a single TSENS driver for
the different versions of the TSENS IP that exist, on different qcom msm/apq SoCs'
Support is added for msm8916, msm8960, msm8974 and msm8996 families.

A lot of the work is based of original code from Stephen Boyd and Siddartha Mohanadoss. I have also picked some of what Narendran Rajan did in his attempt to upstream the support for 8960 family. I could not keep the original authorship on any of the patches because I ended up moving the code around quite a bit in an effort to have a single driver for the various devices. I would be glad to change the authorship for any of the patches if needed.

[1] https://lkml.org/lkml/2016/4/24/103
[2] git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-next

Rajendra Nayak (11):
thermal: qcom: tsens: Add a skeletal TSENS drivers
thermal: qcom: tsens-8916: Add support for 8916 family of SoCs
thermal: qcom: tsens-8974: Add support for 8974 family of SoCs
thermal: core: export apis to get slope and offset
thermal: qcom: tsens-8960: Add support for 8960 family of SoCs
thermal: qcom: tsens-8996: Add support for 8996 family of SoCs
arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes
arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes
arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

  .../devicetree/bindings/clock/qcom,gcc.txt         |  18 ++
  .../devicetree/bindings/thermal/qcom-tsens.txt     |  21 ++
  Documentation/thermal/sysfs-api.txt                |  12 +
  arch/arm/boot/dts/qcom-apq8064.dtsi                | 103 ++++++++
  arch/arm/boot/dts/qcom-apq8084.dtsi                | 103 ++++++++
  arch/arm/boot/dts/qcom-msm8974.dtsi                | 103 ++++++++
  arch/arm64/boot/dts/qcom/msm8916.dtsi              |  64 +++++
  arch/arm64/boot/dts/qcom/msm8996.dtsi              |  92 +++++++
  drivers/thermal/Kconfig                            |   5 +
  drivers/thermal/Makefile                           |   1 +
  drivers/thermal/qcom/Kconfig                       |  11 +
  drivers/thermal/qcom/Makefile                      |   2 +
  drivers/thermal/qcom/tsens-8916.c                  | 113 ++++++++
  drivers/thermal/qcom/tsens-8960.c                  | 292 +++++++++++++++++++++
  drivers/thermal/qcom/tsens-8974.c                  | 244 +++++++++++++++++
  drivers/thermal/qcom/tsens-8996.c                  |  84 ++++++
  drivers/thermal/qcom/tsens-common.c                | 141 ++++++++++
  drivers/thermal/qcom/tsens.c                       | 200 ++++++++++++++
  drivers/thermal/qcom/tsens.h                       |  92 +++++++
  drivers/thermal/thermal_core.c                     |  30 +++
  include/linux/thermal.h                            |   8 +
  21 files changed, 1739 insertions(+)

create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt create mode 100644 drivers/thermal/qcom/Kconfig
create mode 100644 drivers/thermal/qcom/Makefile
create mode 100644 drivers/thermal/qcom/tsens-8916.c
create mode 100644 drivers/thermal/qcom/tsens-8960.c
create mode 100644 drivers/thermal/qcom/tsens-8974.c
create mode 100644 drivers/thermal/qcom/tsens-8996.c
create mode 100644 drivers/thermal/qcom/tsens-common.c
create mode 100644 drivers/thermal/qcom/tsens.c
create mode 100644 drivers/thermal/qcom/tsens.h

Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
#16 lore raw

v6 cover qcom: Add support for TSENS driver

Quoted 21 lines · Rajendra Nayak

Rui,

Quoted 10 lines · Rajendra

Hey Eduardo,

Quoted 7 lines · Rajendra Nayak

Eduardo,

Quoted 3 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Quoted 7 lines
Quoted 1 line

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Quoted 5 lines

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

Apologize for the late answer. I will take care of queueing them.

BR,

#17 lore raw

v6 cover qcom: Add support for TSENS driver

Quoted 22 lines · Eduardo Valentin
Quoted 21 lines · Rajendra Nayak

Rui,

Quoted 17 lines · Rajendra

Hey Eduardo,

Quoted 8 lines · Rajendra Nayak

Eduardo,

Quoted 3 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Quoted 7 lines
Quoted 5 lines

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

Apologize for the late answer. I will take care of queueing them.

Applied patches 1-6. The DT patches lack the cooling map, on all of them. In case you do not have a working cooling device in your platform, at least add an empty map with a TODO flag.

After you fix the DT patch, you may add my

on them.

Quoted 3 lines

BR,

#18 lore raw

v6 cover qcom: Add support for TSENS driver

Quoted 29 lines · Eduardo Valentin
Quoted 28 lines · Eduardo Valentin
Quoted 26 lines · Rajendra Nayak

Rui,

Quoted 10 lines · Rajendra

Hey Eduardo,

Quoted 7 lines · Rajendra Nayak

Eduardo,

Quoted 3 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Quoted 7 lines
Quoted 1 line

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

Quoted 5 lines
Quoted 1 line

Apologize for the late answer. I will take care of queueing them.

Applied patches 1-6. The DT patches lack the cooling map, on all of them. In case you do not have a working cooling device in your platform, at least add an empty map with a TODO flag.

Thanks Eduardo. I will add empty maps in cases where CPUfreq support is still missing.

Quoted 10 lines

After you fix the DT patch, you may add my

on them.

Quoted 3 lines

BR,

reviewer
#19 lore raw

v6 cover qcom: Add support for TSENS driver

In reply to Rajendra Nayak

Hi, Rajendra,

Quoted 22 lines · Rajendra Nayak

Rui,

Quoted 13 lines · Rajendra

Hey Eduardo,

Quoted 9 lines · Rajendra Nayak

Eduardo,

Quoted 5 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis
are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Quoted 6 lines
Quoted 1 line

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Quoted 6 lines

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

Sorry for my late response as I took medical leave earlier this month for a noise surgery and I'm just back to work.

I synced with Eduardo yesterday, he was also really busy recently, but he will go through the pending patches soon.
So, for this patch set, I still prefer to let Eduardo to take it if he has time, and I will take them if you still don't get feedback from Eduardo after the merge window, does this sound okay for you?

thanks,
rui

Quoted 128 lines

regards,
Rajendra

Quoted 125 lines

regards,
Rajendra

Quoted 120 lines

regards,
Rajendra

Quoted 115 lines

Patches [7-11] will need to go via qcom-msm tree/Andy.

Changes since v5:
* Minor review fixes from Eduardo

Changes since v4:
* dropped qcom,tsens-slopes binding, used coefficients instead
* dropped qcom,sensor-id binding
* Added support for msm8996 family
* Other minor review fixes from v4

Changes since v3:
* Dropped 'clk: qcom: create virtual child device for TSENS' which
is picked up by Stephen
* Updated GCC bindings with optional TSENS properties

Changes since v2:
* Minor review fixes from Stephen/Punit and rebase on 4.3-rc4

Changes since v1:
* Created virtual tsens device from gcc driver for 8960, with DT having a single node for gcc and tsens
* Minor fixes with rebasing on 4.3-rc1

Changes since RFC:
* Added support for 8916 and 8084
* Based off the latest nvmem framework patches [1]
* Minor review fixes for comments mostly from Lina

This is an attempt to have a single TSENS driver for the different versions of the TSENS IP that exist, on different qcom msm/apq SoCs'
Support is added for msm8916, msm8960, msm8974 and msm8996 families.

A lot of the work is based of original code from Stephen Boyd and Siddartha Mohanadoss. I have also picked some of what Narendran Rajan did in his attempt to upstream the support for 8960 family. I could not keep the original authorship on any of the patches because I ended up moving the code around quite a bit in an effort to have a single driver for the various devices. I would be glad to change the authorship for any of the patches if needed.

[1] https://lkml.org/lkml/2016/4/24/103
[2] git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-
misc.git char-misc-next

Rajendra Nayak (11):
???thermal: qcom: tsens: Add a skeletal TSENS drivers ???thermal: qcom: tsens-8916: Add support for 8916 family of SoCs
???thermal: qcom: tsens-8974: Add support for 8974 family of SoCs
???thermal: core: export apis to get slope and offset ???thermal: qcom: tsens-8960: Add support for 8960 family of SoCs
???thermal: qcom: tsens-8996: Add support for 8996 family of SoCs
???arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes ???arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes ???arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes ???arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes
???arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

? .../devicetree/bindings/clock/qcom,gcc.txt?????????|??18 ++
? .../devicetree/bindings/thermal/qcom-tsens.txt?????|??21 ++
? Documentation/thermal/sysfs-api.txt????????????????|??12 +
? arch/arm/boot/dts/qcom-apq8064.dtsi????????????????| 103

++++++++
? arch/arm/boot/dts/qcom-apq8084.dtsi????????????????| 103
++++++++
? arch/arm/boot/dts/qcom-msm8974.dtsi????????????????| 103
++++++++
? arch/arm64/boot/dts/qcom/msm8916.dtsi??????????????|??64
+++++
? arch/arm64/boot/dts/qcom/msm8996.dtsi??????????????|??92
+++++++

? drivers/thermal/Kconfig????????????????????????????|???5 +
? drivers/thermal/Makefile???????????????????????????|???1 +
? drivers/thermal/qcom/Kconfig???????????????????????|??11 +
? drivers/thermal/qcom/Makefile??????????????????????|???2 +
? drivers/thermal/qcom/tsens-8916.c??????????????????| 113

++++++++
? drivers/thermal/qcom/tsens-8960.c??????????????????| 292
+++++++++++++++++++++
? drivers/thermal/qcom/tsens-8974.c??????????????????| 244
+++++++++++++++++
? drivers/thermal/qcom/tsens-8996.c??????????????????|??84
++++++
? drivers/thermal/qcom/tsens-common.c????????????????| 141
++++++++++
? drivers/thermal/qcom/tsens.c???????????????????????| 200
++++++++++++++
? drivers/thermal/qcom/tsens.h???????????????????????|??92
+++++++
? drivers/thermal/thermal_core.c?????????????????????|??30 +++ ? include/linux/thermal.h????????????????????????????|???8 + ? 21 files changed, 1739 insertions(+)
? create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt ? create mode 100644 drivers/thermal/qcom/Kconfig
? create mode 100644 drivers/thermal/qcom/Makefile
? create mode 100644 drivers/thermal/qcom/tsens-8916.c ? create mode 100644 drivers/thermal/qcom/tsens-8960.c ? create mode 100644 drivers/thermal/qcom/tsens-8974.c ? create mode 100644 drivers/thermal/qcom/tsens-8996.c ? create mode 100644 drivers/thermal/qcom/tsens-common.c ? create mode 100644 drivers/thermal/qcom/tsens.c
? create mode 100644 drivers/thermal/qcom/tsens.h

reviewer
#20 lore raw

v6 cover qcom: Add support for TSENS driver

Quoted 39 lines · Zhang Rui

Hi, Rajendra,

Quoted 27 lines · Rajendra Nayak

Rui,

Quoted 17 lines · Rajendra

Hey Eduardo,

Quoted 12 lines · Rajendra Nayak

Eduardo,

Quoted 7 lines · Rajendra Nayak

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis
are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Quoted 6 lines
Quoted 1 line

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Quoted 6 lines

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

Sorry for my late response as I took medical leave earlier this month for a noise surgery and I'm just back to work.

Quoted 8 lines

I synced with Eduardo yesterday, he was also really busy recently, but
he will go through the pending patches soon.
So, for this patch set, I still prefer to let Eduardo to take it if he
has time, and I will take them if you still don't get feedback from Eduardo after the merge window, does this sound okay for you?

Hah, it seems that Eduardo has already took your patches, sorry for the noise. :)

thanks,
rui

Quoted 146 lines

thanks,
rui

Quoted 138 lines

regards,
Rajendra

Quoted 134 lines

regards,
Rajendra

Quoted 128 lines

regards,
Rajendra

Quoted 122 lines

Patches [7-11] will need to go via qcom-msm tree/Andy.

Changes since v5:
* Minor review fixes from Eduardo

Changes since v4:
* dropped qcom,tsens-slopes binding, used coefficients instead
* dropped qcom,sensor-id binding
* Added support for msm8996 family
* Other minor review fixes from v4

Changes since v3:
* Dropped 'clk: qcom: create virtual child device for TSENS' which
is picked up by Stephen
* Updated GCC bindings with optional TSENS properties

Changes since v2:
* Minor review fixes from Stephen/Punit and rebase on 4.3-rc4

Changes since v1:
* Created virtual tsens device from gcc driver for 8960, with DT having a single node for gcc and tsens
* Minor fixes with rebasing on 4.3-rc1

Changes since RFC:
* Added support for 8916 and 8084
* Based off the latest nvmem framework patches [1]
* Minor review fixes for comments mostly from Lina

This is an attempt to have a single TSENS driver for the different versions of the TSENS IP that exist, on different qcom msm/apq SoCs'
Support is added for msm8916, msm8960, msm8974 and msm8996 families.

A lot of the work is based of original code from Stephen Boyd and Siddartha Mohanadoss. I have also picked some of what Narendran Rajan did in his attempt to upstream the support for 8960 family. I could not keep the original authorship on any of the patches because I ended up moving the code around quite a bit in an effort to have a single driver for the various devices. I would be glad to change the authorship for any of the patches if needed.

[1] https://lkml.org/lkml/2016/4/24/103
[2]
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-
misc.git char-misc-next

Rajendra Nayak (11):
???thermal: qcom: tsens: Add a skeletal TSENS drivers ???thermal: qcom: tsens-8916: Add support for 8916 family of SoCs
???thermal: qcom: tsens-8974: Add support for 8974 family of SoCs
???thermal: core: export apis to get slope and offset ???thermal: qcom: tsens-8960: Add support for 8960 family of SoCs
???thermal: qcom: tsens-8996: Add support for 8996 family of SoCs
???arm: dts: msm8974: Add thermal zones, tsens and qfprom nodes
???arm: dts: apq8064: Add thermal zones, tsens and qfprom nodes
???arm: dts: apq8084: Add thermal zones, tsens and qfprom nodes
???arm64: dts: msm8916: Add thermal zones, tsens and qfprom nodes
???arm64: dts: msm8996: Add thermal zones, tsens and qfprom nodes

? .../devicetree/bindings/clock/qcom,gcc.txt?????????|??18 ++
? .../devicetree/bindings/thermal/qcom-tsens.txt?????|??21 ++
? Documentation/thermal/sysfs-api.txt????????????????|??12 +
? arch/arm/boot/dts/qcom-apq8064.dtsi????????????????| 103

++++++++
? arch/arm/boot/dts/qcom-apq8084.dtsi????????????????| 103
++++++++
? arch/arm/boot/dts/qcom-msm8974.dtsi????????????????| 103
++++++++
? arch/arm64/boot/dts/qcom/msm8916.dtsi??????????????|??64
+++++
? arch/arm64/boot/dts/qcom/msm8996.dtsi??????????????|??92
+++++++

? drivers/thermal/Kconfig????????????????????????????|???5 +
? drivers/thermal/Makefile???????????????????????????|???1 +
? drivers/thermal/qcom/Kconfig???????????????????????|??11 +
? drivers/thermal/qcom/Makefile??????????????????????|???2 +
? drivers/thermal/qcom/tsens-8916.c??????????????????| 113

++++++++
? drivers/thermal/qcom/tsens-8960.c??????????????????| 292
+++++++++++++++++++++
? drivers/thermal/qcom/tsens-8974.c??????????????????| 244
+++++++++++++++++
? drivers/thermal/qcom/tsens-8996.c??????????????????|??84
++++++
? drivers/thermal/qcom/tsens-common.c????????????????| 141
++++++++++
? drivers/thermal/qcom/tsens.c???????????????????????| 200
++++++++++++++
? drivers/thermal/qcom/tsens.h???????????????????????|??92
+++++++
? drivers/thermal/thermal_core.c?????????????????????|??30
+++
? include/linux/thermal.h????????????????????????????|???8 + ? 21 files changed, 1739 insertions(+)
? create mode 100644 Documentation/devicetree/bindings/thermal/qcom-tsens.txt ? create mode 100644 drivers/thermal/qcom/Kconfig ? create mode 100644 drivers/thermal/qcom/Makefile ? create mode 100644 drivers/thermal/qcom/tsens-8916.c ? create mode 100644 drivers/thermal/qcom/tsens-8960.c ? create mode 100644 drivers/thermal/qcom/tsens-8974.c ? create mode 100644 drivers/thermal/qcom/tsens-8996.c ? create mode 100644 drivers/thermal/qcom/tsens-common.c ? create mode 100644 drivers/thermal/qcom/tsens.c ? create mode 100644 drivers/thermal/qcom/tsens.h

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo at vger.kernel.org More majordomo info at??http://vger.kernel.org/majordomo-info.html

#21 lore raw

v6 cover qcom: Add support for TSENS driver

[]..

Quoted 29 lines
Quoted 21 lines
Quoted 12 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines

Current set of patches apply on 4.6-rc6. Fixes for the nvmem apis
are now posted [1] and queued in -next [2]
Patches [1-6] will need to be merged via thermal tree/Eduardo.

Quoted 6 lines
Quoted 1 line

Any plans to pull these in for 4.8?

These patches have been on the list for quite a while, and they do not have any outstanding dependencies or comments to be addressed. I would really hope to see these in for 4.8. Let me know if there is something you want me to address before you pull them in.

Quoted 6 lines

Would you be able to pull this driver in? I haven't heard back anything from Eduardo despite multiple pings.
These patches (v6) have been on the list for a couple months now, which address all issues/concerns that were raised by Eduardo in his previous reviews.

Sorry for my late response as I took medical leave earlier this month for a noise surgery and I'm just back to work.

Quoted 8 lines

I synced with Eduardo yesterday, he was also really busy recently, but
he will go through the pending patches soon.
So, for this patch set, I still prefer to let Eduardo to take it if he
has time, and I will take them if you still don't get feedback from Eduardo after the merge window, does this sound okay for you?

Quoted 2 lines

Hah, it seems that Eduardo has already took your patches, sorry for the noise. :)

Hey Rui, yes, thanks, I was out the last couple weeks too so could not respond.

Quoted 5 lines

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation