Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03efe83e authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ARM: dts: msm: enable thermal efuse driver for qrb5165"

parents e68dab78 28cab856
Loading
Loading
Loading
Loading
+73 −0
Original line number Diff line number Diff line
Modify Thermal Zone based on efuse data

This driver is to enable/disable pre-configured thermal
zones selectively at runtime based on efuse data. It uses QFPROM
nvmem cell interface to read efuse data. It supports multiple
efuse condition. If any of the efuse condition fails, driver just
exits with default enabled thermal zones.

Properties:

- compatible:
	Usage: Required
	Value type: <string>
	Definition: shall be "qcom,thermal-qfprom-device".

- nvmem-cells:
	Usage: Required
	Value type: <array of phandle>
	Definition: Array of phandles pointing to a nvmem-cells node
		representing the efuse registers that has information that
		is used to select the right thermal zone to enable.
		Please refer nvmem-cells bindings
		Documentation/devicetree/bindings/nvmem/nvmem.txt and also
		example below.

 nvmem-cell-names:
	Usage: Required
	Value type: <array of string>
	Definition:  Should be array of name for each nvmem-cells phandle data.
		Please refer nvmem-cells bindings
		Documentation/devicetree/bindings/nvmem/nvmem.txt and also
		example below.

- qcom,thermal-qfprom-bit-values: It should be array of bit mask values to
		match with each nvmem-cells bit value respectively. If all
		nvmem-cells values are matching with respective bit mask value
		from this property, then driver will update thermal zones as
		per thermal zones mentioned in 'qcom,thermal-zone-enable-list'
		and 'qcom,thermal-zone-disable-list'.

- qcom,thermal-zone-enable-list:
	Usage: Required
	Value type: <array of strings>
	Definition: Should define this property with list of thermal zone
		names those need to be enabled if nvmem-cells condition is met.

- qcom,thermal-zone-disable-list:
	Usage: Required
	Value type: <array of strings>
	Definition: Should define this property with list of thermal zone
		names those need to be disabled if nvmem-cells condition is met.

Example:
	qcom-thermal-qfprom {
		compatible = "qcom,thermal-qfprom-device";
		nvmem-cells = <&thermal_cpe>, <&thermal_revision>;
		nvmem-cell-names = "cpe", "revision";
		qcom,thermal-qfprom-bit-values = <0x1 0x3>
		qcom,thermal-zone-enable-list = "mdm-core-0-cpe-step",
					"mdm-core-1-cpe-step";
		qcom,thermal-zone-disable-list = "mdm-core-0-step",
					"mdm-core-1-step";
	};

	In this example, driver gets efuse bit values of nvmem-cell register
	for both 'cpe' and 'revision' nvmem cells. It then compares these efuse
	values with property 'qcom,thermal-qfprom-bit-values' values (0x1 and
	0x3 here) respectively. If both efuse values are matching with this
	property values, driver enables thermal zones listed in property
	'qcom,thermal-zone-enable-list' and disables thermal zones listed in
	property 'qcom,thermal-zone-disable-list'. If any of the efuse
	value is not matching with respective 'qcom,thermal-qfprom-bit-values'
	values, driver just exits without modifying any thermal zone.
+10 −5
Original line number Diff line number Diff line
@@ -4966,20 +4966,25 @@

	qfprom: qfprom@780000 {
		compatible = "qcom,qfprom";
		reg = <0x00784000 0x3000>;
		reg = <0x00780000 0x5000>;
		#address-cells = <1>;
		#size-cells = <1>;
		read-only;
		ranges;

		gpu_lm_efuse: gpu_lm_efuse@5c8 {
			reg = <0x5c8 0x4>;
		gpu_lm_efuse: gpu_lm_efuse@45c8 {
			reg = <0x45c8 0x4>;
		};

		gpu_speed_bin: gpu_speed_bin@19b {
			reg = <0x19b 0x1>;
		gpu_speed_bin: gpu_speed_bin@419b {
			reg = <0x419b 0x1>;
			bits = <5 3>;
		};

		thermal_speed_bin: thermal-speed-bin@1a2 {
			reg = <0x1a2 0x1>;
			bits = <7 1>;
		};
	};
};

+758 −0
Original line number Diff line number Diff line
@@ -8,3 +8,761 @@
};

#include "kona-v2.1-gpu.dtsi"

&soc {
	qcom-thermal-qfprom {
		compatible = "qcom,thermal-qfprom-device";
		nvmem-cells = <&thermal_speed_bin>;
		nvmem-cell-names = "thermal_speed_bin";
		qcom,thermal-qfprom-bit-values = <0x1>;
		qcom,thermal-zone-enable-list = "gpuss-max-iot-step",
						"cpu-0-0-iot-step",
						"cpu-0-1-iot-step",
						"cpu-0-2-iot-step",
						"cpu-0-3-iot-step",
						"cpu-1-0-iot-step",
						"cpu-1-1-iot-step",
						"cpu-1-2-iot-step",
						"cpu-1-3-iot-step",
						"cpu-1-4-iot-step",
						"cpu-1-5-iot-step",
						"cpu-1-6-iot-step",
						"cpu-1-7-iot-step",
						"cwlan-iot-step",
						"video-iot-step",
						"ddr-iot-step",
						"q6-hvx-iot-step",
						"camera-iot-step",
						"cmpss-iot-step",
						"npu-iot-step";
		qcom,thermal-zone-disable-list = "gpuss-max-step",
						"cpu-0-0-step",
						"cpu-0-1-step",
						"cpu-0-2-step",
						"cpu-0-3-step",
						"cpu-1-0-step",
						"cpu-1-1-step",
						"cpu-1-2-step",
						"cpu-1-3-step",
						"cpu-1-4-step",
						"cpu-1-5-step",
						"cpu-1-6-step",
						"cpu-1-7-step",
						"cwlan-step",
						"video-step",
						"ddr-step",
						"q6-hvx-step",
						"camera-step",
						"cmpss-step",
						"npu-step";
	};
};

&thermal_zones {
	gpuss-max-iot-step {
		polling-delay-passive = <10>;
		polling-delay = <100>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;

		trips {
			gpu_iot_trip0: gpu-trip0 {
				temperature = <110000>;
				hysteresis = <0>;
				type = "passive";
			};
		};

		cooling-maps {
			gpu_cdev {
				trip = <&gpu_iot_trip0>;
				cooling-device = <&msm_gpu THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>;
			};
		};
	};

	pop-mem-step {
		status = "disabled";
	};

	cpu-0-0-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 1>;
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpu00_iot_config: cpu00-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpu00_cdev {
				trip = <&cpu00_iot_config>;
				cooling-device = <&cpu0_isolate 1 1>;
			};
		};
	};

	cpu-0-1-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 2>;
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpu01_iot_config: cpu01-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpu01_cdev {
				trip = <&cpu01_iot_config>;
				cooling-device = <&cpu1_isolate 1 1>;
			};
		};
	};

	cpu-0-2-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 3>;
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpu02_iot_config: cpu02-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpu02_cdev {
				trip = <&cpu02_iot_config>;
				cooling-device = <&cpu2_isolate 1 1>;
			};
		};
	};

	cpu-0-3-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 4>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpu03_iot_config: cpu03-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpu03_cdev {
				trip = <&cpu03_iot_config>;
				cooling-device = <&cpu3_isolate 1 1>;
			};
		};
	};

	cpu-1-0-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 7>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_10_iot_config: cpufreq-10-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu10_iot_config: cpu10-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_10_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu10_cdev {
				trip = <&cpu10_iot_config>;
				cooling-device = <&cpu4_isolate 1 1>;
			};
		};
	};

	cpu-1-1-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 8>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_11_iot_config: cpufreq-11-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu11_iot_config: cpu11-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_11_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu11_cdev {
				trip = <&cpu11_iot_config>;
				cooling-device = <&cpu5_isolate 1 1>;
			};
		};
	};

	cpu-1-2-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 9>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_12_iot_config: cpufreq-12-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu12_iot_config: cpu12-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_12_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu12_cdev {
				trip = <&cpu12_iot_config>;
				cooling-device = <&cpu6_isolate 1 1>;
			};
		};
	};

	cpu-1-3-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 10>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_13_iot_config: cpufreq-13-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu13_iot_config: cpu13-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_13_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu13_cdev {
				trip = <&cpu13_iot_config>;
				cooling-device = <&cpu7_isolate 1 1>;
			};
		};
	};

	cpu-1-4-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 11>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_14_iot_config: cpufreq-14-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu14_iot_config: cpu14-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_14_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu14_cdev {
				trip = <&cpu14_iot_config>;
				cooling-device = <&cpu4_isolate 1 1>;
			};
		};
	};

	cpu-1-5-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 12>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_15_iot_config: cpufreq-15-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu15_iot_config: cpu15-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_15_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu15_cdev {
				trip = <&cpu15_iot_config>;
				cooling-device = <&cpu5_isolate 1 1>;
			};
		};
	};

	cpu-1-6-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 13>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_16_iot_config: cpufreq-16-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu16_iot_config: cpu16-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_16_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu16_cdev {
				trip = <&cpu16_iot_config>;
				cooling-device = <&cpu6_isolate 1 1>;
			};
		};
	};

	cpu-1-7-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens0 14>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cpufreq_17_iot_config: cpufreq-17-config {
				temperature = <75000>;
				hysteresis = <5000>;
				type = "passive";
			};

			cpu17_iot_config: cpu17-config {
				temperature = <122000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpufreq_cdev {
				trip = <&cpufreq_17_iot_config>;
				cooling-device = <&cpu7_notify 1 1>;
			};

			cpu17_cdev {
				trip = <&cpu17_iot_config>;
				cooling-device = <&cpu7_isolate 1 1>;
			};
		};
	};

	cwlan-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 1>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cwlan_iot_trip0: cwlan-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&cwlan_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&cwlan_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&cwlan_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&cwlan_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&cwlan_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};

	video-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 2>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			video_iot_trip0: video-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&video_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&video_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&video_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&video_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&video_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};

	ddr-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 3>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			ddr_iot_trip0: ddr-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&ddr_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&ddr_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&ddr_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&ddr_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&ddr_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};

	q6-hvx-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 4>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			q6_hvx_iot_trip0: q6-hvx-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&q6_hvx_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&q6_hvx_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&q6_hvx_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&q6_hvx_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&q6_hvx_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};

	camera-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 5>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			camera_iot_trip0: camera-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&camera_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&camera_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&camera_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&camera_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&camera_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};

	cmpss-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 6>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			cmpss_iot_trip0: cmpss-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&cmpss_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&cmpss_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&cmpss_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&cmpss_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&cmpss_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};

	npu-iot-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-sensors = <&tsens1 7>;
		thermal-governor = "step_wise";
		wake-capable-sensor;
		disable-thermal-zone;
		trips {
			npu_iot_trip0: npu-trip0 {
				temperature = <120000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cdsp-cdev {
				trip = <&npu_iot_trip0>;
				cooling-device = <&msm_cdsp_rm 3 3>;
			};

			gpu-cdev {
				trip = <&npu_iot_trip0>;
				cooling-device = <&msm_gpu (THERMAL_MAX_LIMIT-1)
							(THERMAL_MAX_LIMIT-1)>;
			};

			modem-pa-cdev {
				trip = <&npu_iot_trip0>;
				cooling-device = <&modem_pa 3 3>;
			};

			modem-tj-cdev {
				trip = <&npu_iot_trip0>;
				cooling-device = <&modem_tj 3 3>;
			};

			npu_cdev {
				trip = <&npu_iot_trip0>;
				cooling-device = <&msm_npu (THERMAL_MAX_LIMIT-3)
							(THERMAL_MAX_LIMIT-3)>;
			};
		};
	};
};