| Qualcomm's SPMI PMIC ADC |
| |
| - SPMI PMIC voltage ADC (VADC) provides interface to clients to read |
| voltage. The VADC is a 15-bit sigma-delta ADC. |
| - SPMI PMIC5 voltage ADC (ADC) provides interface to clients to read |
| voltage. The VADC is a 16-bit sigma-delta ADC. |
| |
| VADC node: |
| |
| - compatible: |
| Usage: required |
| Value type: <string> |
| Definition: Should contain "qcom,spmi-vadc". |
| Should contain "qcom,spmi-adc5" for PMIC5 ADC driver. |
| Should contain "qcom,spmi-adc-rev2" for PMIC rev2 ADC driver. |
| Should contain "qcom,pms405-adc" for PMS405 PMIC |
| |
| - reg: |
| Usage: required |
| Value type: <prop-encoded-array> |
| Definition: VADC 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. |
| |
| - #io-channel-cells: |
| Usage: required |
| Value type: <u32> |
| Definition: Must be one. For details about IIO bindings see: |
| Documentation/devicetree/bindings/iio/iio-bindings.txt |
| |
| - interrupts: |
| Usage: optional |
| Value type: <prop-encoded-array> |
| Definition: End of conversion interrupt. |
| |
| Channel node properties: |
| |
| - reg: |
| Usage: required |
| Value type: <u32> |
| Definition: ADC channel number. |
| See include/dt-bindings/iio/qcom,spmi-vadc.h |
| |
| - label: |
| Usage: required for "qcom,spmi-adc5" and "qcom,spmi-adc-rev2" |
| Value type: <empty> |
| Definition: ADC input of the platform as seen in the schematics. |
| For thermistor inputs connected to generic AMUX or GPIO inputs |
| these can vary across platform for the same pins. Hence select |
| the platform schematics name for this channel. |
| |
| - 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 compatible property "qcom,spmi-vadc", valid values are |
| 512, 1024, 2048, 4096. If property is not found, default value |
| of 512 will be used. |
| - For compatible property "qcom,spmi-adc5", valid values are 250, 420 |
| and 840. If property is not found, default value of 840 is used. |
| - For compatible property "qcom,spmi-adc-rev2", valid values are 256, |
| 512 and 1024. If property is not present, default value is 1024. |
| |
| - qcom,pre-scaling: |
| Usage: optional |
| Value type: <u32 array> |
| Definition: Used for scaling the channel input signal before the signal is |
| fed to VADC. The configuration for this node is to know the |
| pre-determined ratio and use it for post scaling. Select one from |
| the following options. |
| <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10> |
| If property is not found default value depending on chip will be used. |
| |
| - qcom,ratiometric: |
| Usage: optional |
| Value type: <empty> |
| Definition: Channel calibration type. |
| - For compatible property "qcom,spmi-vadc", if this property is |
| specified VADC will use the VDD reference (1.8V) and GND for |
| channel calibration. If property is not found, channel will be |
| calibrated with 0.625V and 1.25V reference channels, also |
| known as absolute calibration. |
| - For compatible property "qcom,spmi-adc5" and "qcom,spmi-adc-rev2", |
| 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 between AMUX getting configured and the ADC starting |
| conversion. The 'hw_settle_time' is an index used from valid values |
| and programmed in hardware to achieve the hardware settling delay. |
| - For compatible property "qcom,spmi-vadc" and "qcom,spmi-adc-rev2", |
| Delay = 100us * (hw_settle_time) for hw_settle_time < 11, |
| and 2ms * (hw_settle_time - 10) otherwise. |
| Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800, |
| 900 us and 1, 2, 4, 6, 8, 10 ms. |
| If property is not found, channel will use 0us. |
| - For compatible property "qcom,spmi-adc5", delay = 15us for |
| value 0, 100us * (value) for values < 11, |
| and 2ms * (value - 10) otherwise. |
| Valid values are: 15, 100, 200, 300, 400, 500, 600, 700, 800, |
| 900 us and 1, 2, 4, 6, 8, 10 ms |
| Certain controller digital versions have valid values of |
| 15, 100, 200, 300, 400, 500, 600, 700, 1, 2, 4, 8, 16, 32, 64, 128 ms |
| If property is not found, channel will use 15us. |
| |
| - 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. The value |
| selected is 2^(value). |
| - For compatible property "qcom,spmi-vadc", valid values |
| are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 |
| If property is not found, 1 sample will be used. |
| - For compatible property "qcom,spmi-adc5" and "qcom,spmi-adc-rev2", |
| valid values are: 1, 2, 4, 8, 16 |
| If property is not found, 1 sample will be used. |
| |
| NOTE: |
| |
| For compatible property "qcom,spmi-vadc" following channels, also known as |
| reference point channels, are used for result calibration and their channel |
| configuration nodes should be defined: |
| VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV, |
| VADC_GND_REF and VADC_VDD_VADC. |
| |
| Example: |
| |
| #include <dt-bindings/iio/qcom,spmi-vadc.h> |
| #include <linux/irq.h> |
| /* ... */ |
| |
| /* VADC node */ |
| pmic_vadc: vadc@3100 { |
| compatible = "qcom,spmi-vadc"; |
| reg = <0x3100>; |
| interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| #io-channel-cells = <1>; |
| io-channel-ranges; |
| |
| /* Channel node */ |
| adc-chan@VADC_LR_MUX10_USB_ID { |
| reg = <VADC_LR_MUX10_USB_ID>; |
| qcom,decimation = <512>; |
| qcom,ratiometric; |
| qcom,hw-settle-time = <200>; |
| qcom,avg-samples = <1>; |
| qcom,pre-scaling = <1 3>; |
| }; |
| }; |
| |
| /* IIO client node */ |
| usb { |
| io-channels = <&pmic_vadc VADC_LR_MUX10_USB_ID>; |
| io-channel-names = "vadc"; |
| }; |