Rtwo/kernel/motorola/sm8550-devicetrees/bindings/thermal/qcom-adc-tm.txt
2025-09-30 19:22:48 -05:00

159 lines
5.8 KiB
Text

Qualcomm Technologies, Inc. PMIC thermal monitor ADC device (ADC_TM)
PMIC thermal monitoring (TM) provides interface to kernel clients (mostly
thermal) to set voltage/temperature thresholds and receive notification
when the thresholds are crossed. A 16 bit ADC is used for measurements.
ADC_TM node
- compatible:
Usage: required
Value type: <string>
Definition: Should contain "qcom,adc-tm5" or "qcom,adc-tm5-iio" for PMIC5 ADC TM device.
Should contain "qcom,adc-tm7" or "qcom,adc-tm7-iio" for PMIC7 ADC TM device.
- reg:
Usage: required
Value type: <u32>
Definition: ADC_TM base address in the SPMI PMIC register map.
- #address-cells:
Usage: required
Value type: <u32>
Definition: Must be one. Child node 'reg' property should define ADC
channel number.
- #size-cells:
Usage: required
Value type: <u32>
Definition: Must be zero.
- interrupts:
Usage: required
Value type: <prop-encoded-array>
Definition: Threshold violation interrupt.
- interrupt-names:
Usage: required
Value type: <string>
Definition: Should contain "threshold".
- #thermal-sensor-cells:
Usage: optional
Value type: <u32>
Definition: Should be 1. See thermal.txt for a description.
- io-channels:
Usage: Required
Value type: <phandle u32>
Definition: Array of tuples of VADC phandle and ADC channel number,
one for each ADC_TM channel node defined.
Channel node properties:
- reg:
Usage: required
Value type: <u32>
Definition: ADC virtual channel number, made by combining SID of
PMIC having the channel and actual ADC channel number.
See files in include/dt-bindings/iio/.
- qcom,decimation:
Usage: optional
Value type: <u32>
Definition: This parameter is used to decrease ADC sampling rate.
Quicker measurements can be made by reducing decimation ratio.
For PMIC7 ADC, combined two step decimation values are 85, 340 and 1360.
If property is not found, default value of 1360 will be used.
- qcom,avg-samples:
Usage: optional
Value type: <u32>
Definition: Number of samples to be used for measurement.
Averaging provides the option to obtain a single measurement
from the ADC that is an average of multiple samples.
Valid values are: 1, 2, 4, 8, 16
If property is not found, 1 sample will be used.
- qcom,prescaling:
Usage: optional
Value type: <u32>
Definition: Used for non-thermal clients, to indicate the factor by which
the channel input signal has been scaled down before the signal is
fed to VADC. The configuration for this node is to know the
pre-determined ratio and use it to calculate ADC raw code for the
threshold specified by the client.
Valid values are: 1, 3, 6, 16
If property is not found default value of 1 will be used.
- qcom,kernel-client:
Usage: optional
Value type: <empty>
Definition: Used to indicate if the client for this channel is not the
thermal framework. Non-thermal clients use a different set of
APIs to configure their channels. In addition, the reverse scaling function
needs to be specified for them. If property is not found, channel will be
considered as thermal by default.
- qcom,scale-type:
Usage: optional
Value type: <u32>
Definition: Reverse scaling function used to convert raw ADC code to units
specific to a given channel.
Select from the following unsigned int.
0 : Scaling to convert voltage in uV to raw adc code.
- qcom,ratiometric:
Usage: optional
Value type: <empty>
Definition: Channel calibration type. If this property is specified
VADC will use the VDD reference (1.875V) and GND for channel
calibration. If property is not found, channel will be
calibrated with 0V and 1.25V reference channels, also
known as absolute calibration.
- qcom,hw-settle-time:
Usage: optional
Value type: <u32>
Definition: Time in microseconds between AMUX getting configured and the ADC
starting conversion.
Valid values are: 15, 100, 200, 300, 400, 500, 600, 700, 1000,
2000, 4000, 8000, 16000, 32000, 64000, 128000 us.
If property is not found, channel will use 15us.
Example:
pmic_adc_tm: adc_tm@3400 {
compatible = "qcom,adc-tm7";
reg = <0x3400>;
interrupts = <0x0 0x34 0x0 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "threshold";
#address-cells = <1>;
#size-cells = <0>;
#thermal-sensor-cells = <1>;
io-channels = <&pmic_vadc PMK8350_ADC7_AMUX_THM1_100K_PU>;
/* Channel node */
skin_msm_therm {
reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
qcom,ratiometric;
qcom,hw-settle-time = <200>;
};
};
/* Thermal zone corresponding to the ADC_TM channel */
&thermal_zones {
skin-msm-therm-usr {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-governor = "user_space";
thermal-sensors = <&pmic_adc_tm PMK8350_ADC7_AMUX_THM1_100K_PU>;
trips {
active-config0 {
temperature = <125000>;
hysteresis = <1000>;
type = "passive";
};
};
};
};