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

Commit b048a6c0 authored by Manaf Meethalavalappu Pallikunhi's avatar Manaf Meethalavalappu Pallikunhi
Browse files

msm: thermal: Add support to monitor only one tsens for MX restriction



Currently VDD MX restriction feature monitors all tsens for low
temperature condition. Some targets which has higher MX restriction
thresholds shows frequent interrupts from multiple sensors causing
power impact.
Add support to monitor only one sensor for VDD MX restriction feature.
Add an optional device tree property "qcom,mx-restriction-sensor_id"
to specify sensor id for monitor. If not defined, monitor all tsens
for VDD MX restriction.

Change-Id: Ib709b00c27f43c2603ac8a08b75f2fbd5800983b
Signed-off-by: default avatarManaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
parent 2eb3c5a2
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -224,6 +224,12 @@ Optional child nodes
			qcom,mx-restriction-temp and qcom,mx-restriction-temp-hysteresis
			should also be present. Also, if this property is defined, will
			have to define vdd-cx-supply = <&phandle_of_regulator>.
- qcom,mx-restriction-sensor_id: sensor id, which needs to be monitored for requesting MX/CX
			retention voltage. If this optional property is defined, msm_thermal
			will monitor only this sensor, otherwise by default it will monitor
			all TSENS for this feature. If this property exists, then the properties,
			qcom,mx-restriction-temp, qcom,mx-restriction-temp-hysteresis and
			qcom,mx-retention-min should also be defined to enable this feature.
- qcom,therm-reset-temp: Degree above which the KTM will initiate a secure watchdog reset.
			When this property is defined, KTM will monitor all the tsens from
			boot time and will initiate a secure watchdog reset if any of the
@@ -269,6 +275,7 @@ Example:
		qcom,mx-restriction-temp = <5>;
		qcom,mx-restriction-temp-hysteresis = <10>;
		qcom,mx-retention-min = <710000>;
		qcom,mx-restriction-sensor_id = <2>;
		vdd-mx-supply = <&pma8084_s1>;
		qcom,cx-retention-min = <RPM_SMD_REGULATOR_LEVEL_RETENTION_PLUS>;
		vdd-cx-supply = <&pmd9635_s5_level>;
+11 −1
Original line number Diff line number Diff line
@@ -5793,6 +5793,13 @@ static int probe_vdd_mx(struct device_node *node,
	if (ret)
		goto read_node_done;

	/*
	 * Monitor only this sensor if defined, otherwise monitor all tsens
	 */
	key = "qcom,mx-restriction-sensor_id";
	if (of_property_read_u32(node, key, &data->vdd_mx_sensor_id))
		data->vdd_mx_sensor_id = MONITOR_ALL_TSENS;

	vdd_mx = devm_regulator_get(&pdev->dev, "vdd-mx");
	if (IS_ERR_OR_NULL(vdd_mx)) {
		ret = PTR_ERR(vdd_mx);
@@ -5819,7 +5826,7 @@ static int probe_vdd_mx(struct device_node *node,
	}

	ret = sensor_mgr_init_threshold(&thresh[MSM_VDD_MX_RESTRICTION],
			MONITOR_ALL_TSENS,
			data->vdd_mx_sensor_id,
			data->vdd_mx_temp_degC + data->vdd_mx_temp_hyst_degC,
			data->vdd_mx_temp_degC, vdd_mx_notify);

@@ -6758,6 +6765,9 @@ static void thermal_mx_config_read(struct seq_file *m, void *data)
		if (vdd_cx)
			seq_printf(m, "cx retention value:%d\n",
				msm_thermal_info.vdd_cx_min);
		if (msm_thermal_info.vdd_mx_sensor_id != MONITOR_ALL_TSENS)
			seq_printf(m, "tsens sensor:tsens_tz_sensor%d\n",
				msm_thermal_info.vdd_mx_sensor_id);
	}
}

+1 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ struct msm_thermal_data {
	int32_t cx_phase_request_key;
	int32_t vdd_mx_temp_degC;
	int32_t vdd_mx_temp_hyst_degC;
	int32_t vdd_mx_sensor_id;
	int32_t therm_reset_temp_degC;
};