| Qualcomm's QPNP PMIC thermal monitor ADC driver (VADC_TM) |
| |
| QPNP PMIC thermal monitoring (TM) provides interface to thermal clients |
| to set temperature thresholds and receive notification when the thresholds |
| are crossed. A 15 bit ADC is used for measurements. The driver is part |
| of the sysfs thermal framework that provides support to read the trip |
| points, set threshold for the trip points and enable the trip points. |
| Seperate kernel api's are provided to usb_id and batt_therm |
| to set thresholds and receive threshold notifications. |
| |
| VADC_TM node |
| |
| Required properties: |
| - compatible : should be "qcom,qpnp-adc-tm" for thermal ADC driver. |
| - reg : offset and length of the PMIC Aribter register map. |
| - address-cells : Must be one. |
| - size-cells : Must be zero. |
| - interrupts : The thermal ADC bank peripheral interrupts for eoc, high and low interrupts. |
| - interrupt-names : Should be "eoc-int-en-set", "high-thr-en-set" and "low-thr-en-set". |
| - qcom,adc-bit-resolution : Bit resolution of the ADC. |
| - qcom,adc-vdd-reference : Voltage reference used by the ADC. |
| |
| Optional properties: |
| - qcom,thermal-node : If present a thermal node is created and the channel is registered as |
| part of the thermal sysfs which allows clients to use the thermal framework |
| to set temperature thresholds and receive notification when the temperature |
| crosses a set threshold, read temperature and enable/set trip types supported |
| by the thermal framework. |
| |
| Channel nodes |
| NOTE: Atleast one Channel node is required. |
| |
| Required properties: |
| - label : Channel name used for sysfs entry. |
| - reg : AMUX channel number. |
| - qcom,decimation : Sampling rate to use for the individual channel measurement. |
| Select from the following unsigned int. |
| 0 : 512 |
| 1 : 1K |
| 2 : 2K |
| 3 : 4K |
| - qcom,pre-div-channel-scaling : Pre-div used for the channel before the signal is being measured. |
| Select from the following unsigned int for the corresponding |
| numerator/denominator pre-div ratio. |
| 0 : pre-div ratio of {1, 1} |
| 1 : pre-div ratio of {1, 3} |
| 2 : pre-div ratio of {1, 4} |
| 3 : pre-div ratio of {1, 6} |
| 4 : pre-div ratio of {1, 20} |
| - qcom,calibration-type : Reference voltage to use for channel calibration. |
| Channel calibration is dependendent on the channel. |
| Certain channels like XO_THERM, BATT_THERM use ratiometric |
| calibration. Most other channels fall under absolute calibration. |
| Select from the following strings. |
| "absolute" : Uses the 625mv and 1.25V reference channels. |
| "ratiometric" : Uses the reference Voltage/GND for calibration. |
| - qcom,scale-function : Scaling fuction used to convert raw ADC code to units specific to |
| a given channel. |
| Select from the following unsigned int. |
| 0 : Default scaling to convert raw adc code to voltage. |
| 1 : Conversion to temperature based on btm parameters. |
| 2 : Returns result in milli degree's Centigrade. |
| 3 : Returns current across 0.1 ohm resistor. |
| 4 : Returns XO thermistor voltage in degree's Centigrade. |
| - qcom,hw-settle-time : Settling period for the channel before ADC read. |
| Select from the following unsigned int. |
| 0 : 0us |
| 1 : 100us |
| 2 : 200us |
| 3 : 300us |
| 4 : 400us |
| 5 : 500us |
| 6 : 600us |
| 7 : 700us |
| 8 : 800us |
| 9 : 900us |
| 0xa : 1ms |
| 0xb : 2ms |
| 0xc : 4ms |
| 0xd : 6ms |
| 0xe : 8ms |
| 0xf : 10ms |
| - qcom,fast-avg-setup : Average number of samples to be used for measurement. Fast averaging |
| provides the option to obtain a single measurement from the ADC that |
| is an average of multiple samples. The value selected is 2^(value) |
| Select from |
| 0 : 1 |
| 1 : 2 |
| 2 : 4 |
| 3 : 8 |
| 4 : 16 |
| 5 : 32 |
| 6 : 64 |
| 7 : 128 |
| 8 : 256 |
| - qcom,btm-channel-number : There are 5 BTM channels. The BTM channel numbers are statically |
| allocated to the corresponding channel node. |
| |
| Example: |
| /* Main Node */ |
| qcom,vadc@3400 { |
| compatible = "qcom,qpnp-adc-tm"; |
| reg = <0x3400 0x100>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| interrupts = <0x0 0x34 0x0>, |
| <0x0 0x34 0x3>, |
| <0x0 0x34 0x4>; |
| interrupt-names = "eoc-int-en-set", |
| "high-thr-en-set", |
| "low-thr-en-set"; |
| qcom,adc-bit-resolution = <15>; |
| qcom,adc-vdd-reference = <1800>; |
| |
| /* Channel Node to be registered as part of thermal sysfs */ |
| chan@b5 { |
| label = "pa_therm1"; |
| reg = <0xb5>; |
| qcom,decimation = <0>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <2>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,btm-channel-number = <0x70>; |
| qcom,thermal-node; |
| }; |
| |
| /* Channel Node */ |
| chan@6 { |
| label = "vbat_sns"; |
| reg = <6>; |
| qcom,decimation = <0>; |
| qcom,pre-div-channel-scaling = <1>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <3>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,btm-channel-number = <0x78>; |
| }; |
| }; |