162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/iio/adc/qcom,spmi-vadc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm's SPMI PMIC ADC 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Andy Gross <agross@kernel.org> 1162306a36Sopenharmony_ci - Bjorn Andersson <bjorn.andersson@linaro.org> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cidescription: | 1462306a36Sopenharmony_ci SPMI PMIC voltage ADC (VADC) provides interface to clients to read 1562306a36Sopenharmony_ci voltage. The VADC is a 15-bit sigma-delta ADC. 1662306a36Sopenharmony_ci SPMI PMIC5/PMIC7 voltage ADC (ADC) provides interface to clients to read 1762306a36Sopenharmony_ci voltage. The VADC is a 16-bit sigma-delta ADC. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciproperties: 2062306a36Sopenharmony_ci compatible: 2162306a36Sopenharmony_ci oneOf: 2262306a36Sopenharmony_ci - items: 2362306a36Sopenharmony_ci - const: qcom,pms405-adc 2462306a36Sopenharmony_ci - const: qcom,spmi-adc-rev2 2562306a36Sopenharmony_ci - enum: 2662306a36Sopenharmony_ci - qcom,spmi-vadc 2762306a36Sopenharmony_ci - qcom,spmi-adc5 2862306a36Sopenharmony_ci - qcom,spmi-adc-rev2 2962306a36Sopenharmony_ci - qcom,spmi-adc7 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci reg: 3262306a36Sopenharmony_ci description: VADC base address in the SPMI PMIC register map 3362306a36Sopenharmony_ci maxItems: 1 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci '#address-cells': 3662306a36Sopenharmony_ci const: 1 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci '#size-cells': 3962306a36Sopenharmony_ci const: 0 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci '#io-channel-cells': 4262306a36Sopenharmony_ci const: 1 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci interrupts: 4562306a36Sopenharmony_ci maxItems: 1 4662306a36Sopenharmony_ci description: 4762306a36Sopenharmony_ci End of conversion interrupt. 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cirequired: 5062306a36Sopenharmony_ci - compatible 5162306a36Sopenharmony_ci - reg 5262306a36Sopenharmony_ci - '#address-cells' 5362306a36Sopenharmony_ci - '#size-cells' 5462306a36Sopenharmony_ci - '#io-channel-cells' 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cipatternProperties: 5762306a36Sopenharmony_ci "^channel@[0-9a-f]+$": 5862306a36Sopenharmony_ci type: object 5962306a36Sopenharmony_ci additionalProperties: false 6062306a36Sopenharmony_ci description: | 6162306a36Sopenharmony_ci Represents the external channels which are connected to the ADC. 6262306a36Sopenharmony_ci For compatible property "qcom,spmi-vadc" following channels, also known as 6362306a36Sopenharmony_ci reference point channels, are used for result calibration and their channel 6462306a36Sopenharmony_ci configuration nodes should be defined: 6562306a36Sopenharmony_ci VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV, 6662306a36Sopenharmony_ci VADC_GND_REF and VADC_VDD_VADC. 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci properties: 6962306a36Sopenharmony_ci reg: 7062306a36Sopenharmony_ci maxItems: 1 7162306a36Sopenharmony_ci description: | 7262306a36Sopenharmony_ci ADC channel number. 7362306a36Sopenharmony_ci See include/dt-bindings/iio/qcom,spmi-vadc.h 7462306a36Sopenharmony_ci For PMIC7 ADC, the channel numbers are specified separately per PMIC 7562306a36Sopenharmony_ci in the PMIC-specific files in include/dt-bindings/iio/. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci label: 7862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/string 7962306a36Sopenharmony_ci description: | 8062306a36Sopenharmony_ci ADC input of the platform as seen in the schematics. 8162306a36Sopenharmony_ci For thermistor inputs connected to generic AMUX or GPIO inputs 8262306a36Sopenharmony_ci these can vary across platform for the same pins. Hence select 8362306a36Sopenharmony_ci the platform schematics name for this channel. 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci qcom,decimation: 8662306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 8762306a36Sopenharmony_ci description: | 8862306a36Sopenharmony_ci This parameter is used to decrease ADC sampling rate. 8962306a36Sopenharmony_ci Quicker measurements can be made by reducing decimation ratio. 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci qcom,pre-scaling: 9262306a36Sopenharmony_ci description: | 9362306a36Sopenharmony_ci Used for scaling the channel input signal before the signal is 9462306a36Sopenharmony_ci fed to VADC. The configuration for this node is to know the 9562306a36Sopenharmony_ci pre-determined ratio and use it for post scaling. It is a pair of 9662306a36Sopenharmony_ci integers, denoting the numerator and denominator of the fraction by which 9762306a36Sopenharmony_ci input signal is multiplied. For example, <1 3> indicates the signal is scaled 9862306a36Sopenharmony_ci down to 1/3 of its value before ADC measurement. 9962306a36Sopenharmony_ci If property is not found default value depending on chip will be used. 10062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 10162306a36Sopenharmony_ci oneOf: 10262306a36Sopenharmony_ci - items: 10362306a36Sopenharmony_ci - const: 1 10462306a36Sopenharmony_ci - enum: [ 1, 3, 4, 6, 20, 8, 10, 16 ] 10562306a36Sopenharmony_ci - items: 10662306a36Sopenharmony_ci - const: 10 10762306a36Sopenharmony_ci - const: 81 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci qcom,ratiometric: 11062306a36Sopenharmony_ci description: | 11162306a36Sopenharmony_ci Channel calibration type. 11262306a36Sopenharmony_ci - For compatible property "qcom,spmi-vadc", if this property is 11362306a36Sopenharmony_ci specified VADC will use the VDD reference (1.8V) and GND for 11462306a36Sopenharmony_ci channel calibration. If property is not found, channel will be 11562306a36Sopenharmony_ci calibrated with 0.625V and 1.25V reference channels, also 11662306a36Sopenharmony_ci known as absolute calibration. 11762306a36Sopenharmony_ci - For compatible property "qcom,spmi-adc5", "qcom,spmi-adc7" and 11862306a36Sopenharmony_ci "qcom,spmi-adc-rev2", if this property is specified VADC will use 11962306a36Sopenharmony_ci the VDD reference (1.875V) and GND for channel calibration. If 12062306a36Sopenharmony_ci property is not found, channel will be calibrated with 0V and 1.25V 12162306a36Sopenharmony_ci reference channels, also known as absolute calibration. 12262306a36Sopenharmony_ci type: boolean 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci qcom,hw-settle-time: 12562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 12662306a36Sopenharmony_ci description: | 12762306a36Sopenharmony_ci Time between AMUX getting configured and the ADC starting 12862306a36Sopenharmony_ci conversion. The 'hw_settle_time' is an index used from valid values 12962306a36Sopenharmony_ci and programmed in hardware to achieve the hardware settling delay. 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci qcom,avg-samples: 13262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 13362306a36Sopenharmony_ci description: | 13462306a36Sopenharmony_ci Number of samples to be used for measurement. 13562306a36Sopenharmony_ci Averaging provides the option to obtain a single measurement 13662306a36Sopenharmony_ci from the ADC that is an average of multiple samples. The value 13762306a36Sopenharmony_ci selected is 2^(value). 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci required: 14062306a36Sopenharmony_ci - reg 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ciallOf: 14362306a36Sopenharmony_ci - if: 14462306a36Sopenharmony_ci properties: 14562306a36Sopenharmony_ci compatible: 14662306a36Sopenharmony_ci contains: 14762306a36Sopenharmony_ci const: qcom,spmi-vadc 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci then: 15062306a36Sopenharmony_ci patternProperties: 15162306a36Sopenharmony_ci "^channel@[0-9a-f]+$": 15262306a36Sopenharmony_ci properties: 15362306a36Sopenharmony_ci qcom,decimation: 15462306a36Sopenharmony_ci enum: [ 512, 1024, 2048, 4096 ] 15562306a36Sopenharmony_ci default: 512 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci qcom,hw-settle-time: 15862306a36Sopenharmony_ci enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2, 15962306a36Sopenharmony_ci 4, 6, 8, 10 ] 16062306a36Sopenharmony_ci default: 0 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci qcom,avg-samples: 16362306a36Sopenharmony_ci enum: [ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ] 16462306a36Sopenharmony_ci default: 1 16562306a36Sopenharmony_ci 16662306a36Sopenharmony_ci - if: 16762306a36Sopenharmony_ci properties: 16862306a36Sopenharmony_ci compatible: 16962306a36Sopenharmony_ci contains: 17062306a36Sopenharmony_ci const: qcom,spmi-adc-rev2 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci then: 17362306a36Sopenharmony_ci patternProperties: 17462306a36Sopenharmony_ci "^channel@[0-9a-f]+$": 17562306a36Sopenharmony_ci properties: 17662306a36Sopenharmony_ci qcom,decimation: 17762306a36Sopenharmony_ci enum: [ 256, 512, 1024 ] 17862306a36Sopenharmony_ci default: 1024 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci qcom,hw-settle-time: 18162306a36Sopenharmony_ci enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2, 18262306a36Sopenharmony_ci 4, 6, 8, 10 ] 18362306a36Sopenharmony_ci default: 0 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci qcom,avg-samples: 18662306a36Sopenharmony_ci enum: [ 1, 2, 4, 8, 16 ] 18762306a36Sopenharmony_ci default: 1 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci - if: 19062306a36Sopenharmony_ci properties: 19162306a36Sopenharmony_ci compatible: 19262306a36Sopenharmony_ci contains: 19362306a36Sopenharmony_ci const: qcom,spmi-adc5 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci then: 19662306a36Sopenharmony_ci patternProperties: 19762306a36Sopenharmony_ci "^channel@[0-9a-f]+$": 19862306a36Sopenharmony_ci properties: 19962306a36Sopenharmony_ci qcom,decimation: 20062306a36Sopenharmony_ci enum: [ 250, 420, 840 ] 20162306a36Sopenharmony_ci default: 840 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci qcom,hw-settle-time: 20462306a36Sopenharmony_ci enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2, 20562306a36Sopenharmony_ci 4, 6, 8, 10, 16, 32, 64, 128 ] 20662306a36Sopenharmony_ci default: 15 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci qcom,avg-samples: 20962306a36Sopenharmony_ci enum: [ 1, 2, 4, 8, 16 ] 21062306a36Sopenharmony_ci default: 1 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci - if: 21362306a36Sopenharmony_ci properties: 21462306a36Sopenharmony_ci compatible: 21562306a36Sopenharmony_ci contains: 21662306a36Sopenharmony_ci const: qcom,spmi-adc7 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci then: 21962306a36Sopenharmony_ci patternProperties: 22062306a36Sopenharmony_ci "^channel@[0-9a-f]+$": 22162306a36Sopenharmony_ci properties: 22262306a36Sopenharmony_ci qcom,decimation: 22362306a36Sopenharmony_ci enum: [ 85, 340, 1360 ] 22462306a36Sopenharmony_ci default: 1360 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci qcom,hw-settle-time: 22762306a36Sopenharmony_ci enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 1000, 2000, 4000, 22862306a36Sopenharmony_ci 8000, 16000, 32000, 64000, 128000 ] 22962306a36Sopenharmony_ci default: 15 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci qcom,avg-samples: 23262306a36Sopenharmony_ci enum: [ 1, 2, 4, 8, 16 ] 23362306a36Sopenharmony_ci default: 1 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ciadditionalProperties: false 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ciexamples: 23862306a36Sopenharmony_ci - | 23962306a36Sopenharmony_ci spmi { 24062306a36Sopenharmony_ci #address-cells = <1>; 24162306a36Sopenharmony_ci #size-cells = <0>; 24262306a36Sopenharmony_ci /* VADC node */ 24362306a36Sopenharmony_ci pmic_vadc: adc@3100 { 24462306a36Sopenharmony_ci compatible = "qcom,spmi-vadc"; 24562306a36Sopenharmony_ci reg = <0x3100>; 24662306a36Sopenharmony_ci interrupts = <0x0 0x31 0x0 0x1>; 24762306a36Sopenharmony_ci #address-cells = <1>; 24862306a36Sopenharmony_ci #size-cells = <0>; 24962306a36Sopenharmony_ci #io-channel-cells = <1>; 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci /* Channel node */ 25262306a36Sopenharmony_ci channel@39 { 25362306a36Sopenharmony_ci reg = <0x39>; 25462306a36Sopenharmony_ci qcom,decimation = <512>; 25562306a36Sopenharmony_ci qcom,ratiometric; 25662306a36Sopenharmony_ci qcom,hw-settle-time = <200>; 25762306a36Sopenharmony_ci qcom,avg-samples = <1>; 25862306a36Sopenharmony_ci qcom,pre-scaling = <1 3>; 25962306a36Sopenharmony_ci }; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci channel@9 { 26262306a36Sopenharmony_ci reg = <0x9>; 26362306a36Sopenharmony_ci }; 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci channel@a { 26662306a36Sopenharmony_ci reg = <0xa>; 26762306a36Sopenharmony_ci }; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci channel@e { 27062306a36Sopenharmony_ci reg = <0xe>; 27162306a36Sopenharmony_ci }; 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci channel@f { 27462306a36Sopenharmony_ci reg = <0xf>; 27562306a36Sopenharmony_ci }; 27662306a36Sopenharmony_ci }; 27762306a36Sopenharmony_ci }; 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci - | 28062306a36Sopenharmony_ci #include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h> 28162306a36Sopenharmony_ci #include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h> 28262306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci spmi { 28562306a36Sopenharmony_ci #address-cells = <1>; 28662306a36Sopenharmony_ci #size-cells = <0>; 28762306a36Sopenharmony_ci adc@3100 { 28862306a36Sopenharmony_ci reg = <0x3100>; 28962306a36Sopenharmony_ci compatible = "qcom,spmi-adc7"; 29062306a36Sopenharmony_ci #address-cells = <1>; 29162306a36Sopenharmony_ci #size-cells = <0>; 29262306a36Sopenharmony_ci #io-channel-cells = <1>; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci /* Other properties are omitted */ 29562306a36Sopenharmony_ci channel@44 { 29662306a36Sopenharmony_ci reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>; 29762306a36Sopenharmony_ci qcom,ratiometric; 29862306a36Sopenharmony_ci qcom,hw-settle-time = <200>; 29962306a36Sopenharmony_ci label = "xo_therm"; 30062306a36Sopenharmony_ci }; 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci channel@47 { 30362306a36Sopenharmony_ci reg = <PM8350_ADC7_AMUX_THM4_100K_PU(1)>; 30462306a36Sopenharmony_ci qcom,ratiometric; 30562306a36Sopenharmony_ci qcom,hw-settle-time = <200>; 30662306a36Sopenharmony_ci label = "conn_therm"; 30762306a36Sopenharmony_ci }; 30862306a36Sopenharmony_ci }; 30962306a36Sopenharmony_ci }; 310