xref: /freebsd/sys/contrib/device-tree/Bindings/iio/adc/qcom,pm8xxx-xoadc.txt (revision a03411e84728e9b267056fd31c7d1d9d1dc1b01e)
1Qualcomm's PM8xxx voltage XOADC
2
3The Qualcomm PM8xxx PMICs contain a HK/XO ADC (Housekeeping/Crystal
4oscillator ADC) encompassing PM8018, PM8038, PM8058 and PM8921.
5
6Required properties:
7
8- compatible: should be one of:
9  "qcom,pm8018-adc"
10  "qcom,pm8038-adc"
11  "qcom,pm8058-adc"
12  "qcom,pm8921-adc"
13
14- reg: should contain the ADC base address in the PMIC, typically
15  0x197.
16
17- xoadc-ref-supply: should reference a regulator that can supply
18  a reference voltage on demand. The reference voltage may vary
19  with PMIC variant but is typically something like 2.2 or 1.8V.
20
21The following required properties are standard for IO channels, see
22iio-bindings.txt for more details, but notice that this particular
23ADC has a special addressing scheme that require two cells for
24identifying each ADC channel:
25
26- #address-cells: should be set to <2>, the first cell is the
27  prescaler (on PM8058) or premux (on PM8921) with two valid bits
28  so legal values are 0x00, 0x01 or 0x02. The second cell
29  is the main analog mux setting (0x00..0x0f). The combination
30  of prescaler/premux and analog mux uniquely addresses a hardware
31  channel on all systems.
32
33- #size-cells: should be set to <0>
34
35- #io-channel-cells: should be set to <2>, again the cells are
36  precaler or premux followed by the analog muxing line.
37
38- interrupts: should refer to the parent PMIC interrupt controller
39  and reference the proper ADC interrupt.
40
41Required subnodes:
42
43The ADC channels are configured as subnodes of the ADC.
44
45Since some of them are used for calibrating the ADC, these nodes are
46compulsory:
47
48adc-channel@c {
49	reg = <0x00 0x0c>;
50};
51
52adc-channel@d {
53	reg = <0x00 0x0d>;
54};
55
56adc-channel@f {
57	reg = <0x00 0x0f>;
58};
59
60These three nodes are used for absolute and ratiometric calibration
61and only need to have these reg values: they are by hardware definition
621:1 ratio converters that sample 625, 1250 and 0 milliV and create
63an interpolation calibration for all other ADCs.
64
65Optional subnodes: any channels other than channels [0x00 0x0c],
66[0x00 0x0d] and [0x00 0x0f] are optional.
67
68Required channel node properties:
69
70- reg: should contain the hardware channel number in the range
71  0 .. 0xff (8 bits).
72
73Optional channel node properties:
74
75- qcom,decimation:
76  Value type: <u32>
77  Definition: This parameter is used to decrease the ADC sampling rate.
78          Quicker measurements can be made by reducing the decimation ratio.
79          Valid values are 512, 1024, 2048, 4096.
80          If the property is not found, a default value of 512 will be used.
81
82- qcom,ratiometric:
83  Value type: <u32>
84  Definition: Channel calibration type. If this property is specified
85          VADC will use a special voltage references for channel
86          calibration. The available references are specified in the
87	  as a u32 value setting (see below) and it is compulsory
88	  to also specify this reference if ratiometric calibration
89	  is selected.
90
91	  If the property is not found, the channel will be
92          calibrated with the 0.625V and 1.25V reference channels, also
93          known as an absolute calibration.
94  The reference voltage pairs when using ratiometric calibration:
95	  0 = XO_IN/XOADC_GND
96	  1 = PMIC_IN/XOADC_GND
97	  2 = PMIC_IN/BMS_CSP
98	  3 (invalid)
99	  4 = XOADC_GND/XOADC_GND
100	  5 = XOADC_VREF/XOADC_GND
101
102Example:
103
104xoadc: xoadc@197 {
105	compatible = "qcom,pm8058-adc";
106	reg = <0x197>;
107	interrupts-extended = <&pm8058 76 IRQ_TYPE_EDGE_RISING>;
108	#address-cells = <2>;
109	#size-cells = <0>;
110	#io-channel-cells = <2>;
111
112	vcoin: adc-channel@0 {
113		reg = <0x00 0x00>;
114	};
115	vbat: adc-channel@1 {
116		reg = <0x00 0x01>;
117	};
118	dcin: adc-channel@2 {
119		reg = <0x00 0x02>;
120	};
121	ichg: adc-channel@3 {
122		reg = <0x00 0x03>;
123	};
124	vph_pwr: adc-channel@4 {
125		reg = <0x00 0x04>;
126	};
127	usb_vbus: adc-channel@a {
128		reg = <0x00 0x0a>;
129	};
130	die_temp: adc-channel@b {
131		reg = <0x00 0x0b>;
132	};
133	ref_625mv: adc-channel@c {
134		reg = <0x00 0x0c>;
135	};
136	ref_1250mv: adc-channel@d {
137		reg = <0x00 0x0d>;
138	};
139	ref_325mv: adc-channel@e {
140		reg = <0x00 0x0e>;
141	};
142	ref_muxoff: adc-channel@f {
143		reg = <0x00 0x0f>;
144	};
145};
146
147/* IIO client node */
148iio-hwmon {
149	compatible = "iio-hwmon";
150	io-channels = <&xoadc 0x00 0x01>, /* Battery */
151		    <&xoadc 0x00 0x02>, /* DC in (charger) */
152		    <&xoadc 0x00 0x04>, /* VPH the main system voltage */
153		    <&xoadc 0x00 0x0b>, /* Die temperature */
154		    <&xoadc 0x00 0x0c>, /* Reference voltage 1.25V */
155		    <&xoadc 0x00 0x0d>, /* Reference voltage 0.625V */
156		    <&xoadc 0x00 0x0e>; /* Reference voltage 0.325V */
157};
158