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