162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/iio/adc/qcom,pm8018-adc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm's PM8xxx voltage XOADC 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Linus Walleij <linus.walleij@linaro.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci The Qualcomm PM8xxx PMICs contain a HK/XO ADC (Housekeeping/Crystal 1462306a36Sopenharmony_ci oscillator ADC) encompassing PM8018, PM8038, PM8058 and PM8921. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciproperties: 1762306a36Sopenharmony_ci compatible: 1862306a36Sopenharmony_ci enum: 1962306a36Sopenharmony_ci - qcom,pm8018-adc 2062306a36Sopenharmony_ci - qcom,pm8038-adc 2162306a36Sopenharmony_ci - qcom,pm8058-adc 2262306a36Sopenharmony_ci - qcom,pm8921-adc 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci reg: 2562306a36Sopenharmony_ci maxItems: 1 2662306a36Sopenharmony_ci description: 2762306a36Sopenharmony_ci ADC base address in the PMIC, typically 0x197. 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci xoadc-ref-supply: 3062306a36Sopenharmony_ci description: 3162306a36Sopenharmony_ci The reference voltage may vary with PMIC variant but is typically 3262306a36Sopenharmony_ci something like 2.2 or 1.8V. 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci interrupts: 3562306a36Sopenharmony_ci maxItems: 1 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci "#address-cells": 3862306a36Sopenharmony_ci const: 2 3962306a36Sopenharmony_ci description: 4062306a36Sopenharmony_ci The first cell is the prescaler (on PM8058) or premux (on PM8921) 4162306a36Sopenharmony_ci with two valid bits so legal values are 0x00, 0x01 or 0x02. 4262306a36Sopenharmony_ci The second cell is the main analog mux setting (0x00..0x0f). 4362306a36Sopenharmony_ci The combination of prescaler/premux and analog mux uniquely addresses 4462306a36Sopenharmony_ci a hardware channel on all systems. 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci "#size-cells": 4762306a36Sopenharmony_ci const: 0 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci "#io-channel-cells": 5062306a36Sopenharmony_ci const: 2 5162306a36Sopenharmony_ci description: 5262306a36Sopenharmony_ci The cells are precaler or premux followed by the analog muxing line. 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ciadditionalProperties: false 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cirequired: 5762306a36Sopenharmony_ci - compatible 5862306a36Sopenharmony_ci - reg 5962306a36Sopenharmony_ci - "#io-channel-cells" 6062306a36Sopenharmony_ci - "#address-cells" 6162306a36Sopenharmony_ci - "#size-cells" 6262306a36Sopenharmony_ci - adc-channel@c 6362306a36Sopenharmony_ci - adc-channel@d 6462306a36Sopenharmony_ci - adc-channel@f 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_cipatternProperties: 6762306a36Sopenharmony_ci "^(adc-channel@)[0-9a-f]$": 6862306a36Sopenharmony_ci type: object 6962306a36Sopenharmony_ci description: | 7062306a36Sopenharmony_ci ADC channel specific configuration. 7162306a36Sopenharmony_ci Note that channels c, d and f must be present for calibration. 7262306a36Sopenharmony_ci These three nodes are used for absolute and ratiometric calibration 7362306a36Sopenharmony_ci and only need to have these reg values: they are by hardware definition 7462306a36Sopenharmony_ci 1:1 ratio converters that sample 625, 1250 and 0 milliV and create 7562306a36Sopenharmony_ci an interpolation calibration for all other ADCs. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci properties: 7862306a36Sopenharmony_ci reg: 7962306a36Sopenharmony_ci maxItems: 1 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci qcom,decimation: 8262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 8362306a36Sopenharmony_ci description: | 8462306a36Sopenharmony_ci This parameter is used to decrease the ADC sampling rate. 8562306a36Sopenharmony_ci Quicker measurements can be made by reducing the decimation ratio. 8662306a36Sopenharmony_ci Valid values are 512, 1024, 2048, 4096. 8762306a36Sopenharmony_ci If the property is not found, a default value of 512 will be used. 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci qcom,ratiometric: 9062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 9162306a36Sopenharmony_ci description: | 9262306a36Sopenharmony_ci Channel calibration type. If this property is specified 9362306a36Sopenharmony_ci VADC will use a special voltage references for channel 9462306a36Sopenharmony_ci calibration. The available references are specified in the 9562306a36Sopenharmony_ci as a u32 value setting (see below) and it is compulsory 9662306a36Sopenharmony_ci to also specify this reference if ratiometric calibration 9762306a36Sopenharmony_ci is selected. 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci If the property is not found, the channel will be 10062306a36Sopenharmony_ci calibrated with the 0.625V and 1.25V reference channels, also 10162306a36Sopenharmony_ci known as an absolute calibration. 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci The reference voltage pairs when using ratiometric calibration: 10462306a36Sopenharmony_ci 0 = XO_IN/XOADC_GND 10562306a36Sopenharmony_ci 1 = PMIC_IN/XOADC_GND 10662306a36Sopenharmony_ci 2 = PMIC_IN/BMS_CSP 10762306a36Sopenharmony_ci 3 (invalid) 10862306a36Sopenharmony_ci 4 = XOADC_GND/XOADC_GND 10962306a36Sopenharmony_ci 5 = XOADC_VREF/XOADC_GND 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci additionalProperties: false 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci required: 11462306a36Sopenharmony_ci - reg 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ciexamples: 11762306a36Sopenharmony_ci - | 11862306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 11962306a36Sopenharmony_ci pmic { 12062306a36Sopenharmony_ci #address-cells = <1>; 12162306a36Sopenharmony_ci #size-cells = <0>; 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci adc@197 { 12462306a36Sopenharmony_ci compatible = "qcom,pm8058-adc"; 12562306a36Sopenharmony_ci reg = <0x197>; 12662306a36Sopenharmony_ci interrupts-extended = <&pm8058 76 IRQ_TYPE_EDGE_RISING>; 12762306a36Sopenharmony_ci #address-cells = <2>; 12862306a36Sopenharmony_ci #size-cells = <0>; 12962306a36Sopenharmony_ci #io-channel-cells = <2>; 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci vcoin: adc-channel@0 { 13262306a36Sopenharmony_ci reg = <0x00 0x00>; 13362306a36Sopenharmony_ci }; 13462306a36Sopenharmony_ci vbat: adc-channel@1 { 13562306a36Sopenharmony_ci reg = <0x00 0x01>; 13662306a36Sopenharmony_ci }; 13762306a36Sopenharmony_ci dcin: adc-channel@2 { 13862306a36Sopenharmony_ci reg = <0x00 0x02>; 13962306a36Sopenharmony_ci }; 14062306a36Sopenharmony_ci ichg: adc-channel@3 { 14162306a36Sopenharmony_ci reg = <0x00 0x03>; 14262306a36Sopenharmony_ci }; 14362306a36Sopenharmony_ci vph_pwr: adc-channel@4 { 14462306a36Sopenharmony_ci reg = <0x00 0x04>; 14562306a36Sopenharmony_ci }; 14662306a36Sopenharmony_ci usb_vbus: adc-channel@a { 14762306a36Sopenharmony_ci reg = <0x00 0x0a>; 14862306a36Sopenharmony_ci }; 14962306a36Sopenharmony_ci die_temp: adc-channel@b { 15062306a36Sopenharmony_ci reg = <0x00 0x0b>; 15162306a36Sopenharmony_ci }; 15262306a36Sopenharmony_ci ref_625mv: adc-channel@c { 15362306a36Sopenharmony_ci reg = <0x00 0x0c>; 15462306a36Sopenharmony_ci }; 15562306a36Sopenharmony_ci ref_1250mv: adc-channel@d { 15662306a36Sopenharmony_ci reg = <0x00 0x0d>; 15762306a36Sopenharmony_ci }; 15862306a36Sopenharmony_ci ref_325mv: adc-channel@e { 15962306a36Sopenharmony_ci reg = <0x00 0x0e>; 16062306a36Sopenharmony_ci }; 16162306a36Sopenharmony_ci ref_muxoff: adc-channel@f { 16262306a36Sopenharmony_ci reg = <0x00 0x0f>; 16362306a36Sopenharmony_ci }; 16462306a36Sopenharmony_ci }; 16562306a36Sopenharmony_ci }; 16662306a36Sopenharmony_ci... 167