Merge tag 'drm-intel-gt-next-2020-11-12-1' of git://anongit.freedesktop.org/drm/drm...
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / iio / adc / qcom,spmi-vadc.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/iio/adc/qcom,spmi-vadc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm's SPMI PMIC ADC
8
9 maintainers:
10   - Andy Gross <agross@kernel.org>
11   - Bjorn Andersson <bjorn.andersson@linaro.org>
12
13 description: |
14   SPMI PMIC voltage ADC (VADC) provides interface to clients to read
15   voltage. The VADC is a 15-bit sigma-delta ADC.
16   SPMI PMIC5/PMIC7 voltage ADC (ADC) provides interface to clients to read
17   voltage. The VADC is a 16-bit sigma-delta ADC.
18
19 properties:
20   compatible:
21     oneOf:
22       - items:
23           - const: qcom,pms405-adc
24           - const: qcom,spmi-adc-rev2
25
26       - items:
27           - enum:
28               - qcom,spmi-vadc
29               - qcom,spmi-adc5
30               - qcom,spmi-adc-rev2
31               - qcom,spmi-adc7
32
33   reg:
34     description: VADC base address in the SPMI PMIC register map
35     maxItems: 1
36
37   '#address-cells':
38     const: 1
39
40   '#size-cells':
41     const: 0
42
43   '#io-channel-cells':
44     const: 1
45
46   interrupts:
47     maxItems: 1
48     description:
49       End of conversion interrupt.
50
51   io-channel-ranges: true
52
53 required:
54   - compatible
55   - reg
56   - '#address-cells'
57   - '#size-cells'
58   - '#io-channel-cells'
59
60 patternProperties:
61   "^.*@[0-9a-f]+$":
62     type: object
63     description: |
64       Represents the external channels which are connected to the ADC.
65       For compatible property "qcom,spmi-vadc" following channels, also known as
66       reference point channels, are used for result calibration and their channel
67       configuration nodes should be defined:
68       VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV,
69       VADC_GND_REF and VADC_VDD_VADC.
70
71     properties:
72       reg:
73         description: |
74           ADC channel number.
75           See include/dt-bindings/iio/qcom,spmi-vadc.h
76           For PMIC7 ADC, the channel numbers are specified separately per PMIC
77           in the PMIC-specific files in include/dt-bindings/iio/.
78
79       label:
80         $ref: /schemas/types.yaml#/definitions/string
81         description: |
82             ADC input of the platform as seen in the schematics.
83             For thermistor inputs connected to generic AMUX or GPIO inputs
84             these can vary across platform for the same pins. Hence select
85             the platform schematics name for this channel.
86
87       qcom,decimation:
88         $ref: /schemas/types.yaml#/definitions/uint32
89         description: |
90             This parameter is used to decrease ADC sampling rate.
91             Quicker measurements can be made by reducing decimation ratio.
92
93       qcom,pre-scaling:
94         description: |
95             Used for scaling the channel input signal before the signal is
96             fed to VADC. The configuration for this node is to know the
97             pre-determined ratio and use it for post scaling. It is a pair of
98             integers, denoting the numerator and denominator of the fraction by which
99             input signal is multiplied. For example, <1 3> indicates the signal is scaled
100             down to 1/3 of its value before ADC measurement.
101             If property is not found default value depending on chip will be used.
102         $ref: /schemas/types.yaml#/definitions/uint32-array
103         oneOf:
104           - items:
105               - const: 1
106               - enum: [ 1, 3, 4, 6, 20, 8, 10 ]
107           - items:
108               - const: 10
109               - const: 81
110
111       qcom,ratiometric:
112         description: |
113             Channel calibration type.
114             - For compatible property "qcom,spmi-vadc", if this property is
115               specified VADC will use the VDD reference (1.8V) and GND for
116               channel calibration. If property is not found, channel will be
117               calibrated with 0.625V and 1.25V reference channels, also
118               known as absolute calibration.
119             - For compatible property "qcom,spmi-adc5", "qcom,spmi-adc7" and
120               "qcom,spmi-adc-rev2", if this property is specified VADC will use
121               the VDD reference (1.875V) and GND for channel calibration. If
122               property is not found, channel will be calibrated with 0V and 1.25V
123               reference channels, also known as absolute calibration.
124         type: boolean
125
126       qcom,hw-settle-time:
127         $ref: /schemas/types.yaml#/definitions/uint32
128         description: |
129             Time between AMUX getting configured and the ADC starting
130             conversion. The 'hw_settle_time' is an index used from valid values
131             and programmed in hardware to achieve the hardware settling delay.
132
133       qcom,avg-samples:
134         $ref: /schemas/types.yaml#/definitions/uint32
135         description: |
136             Number of samples to be used for measurement.
137             Averaging provides the option to obtain a single measurement
138             from the ADC that is an average of multiple samples. The value
139             selected is 2^(value).
140
141     required:
142       - reg
143
144 allOf:
145   - if:
146       properties:
147         compatible:
148           contains:
149             const: qcom,spmi-vadc
150
151     then:
152       patternProperties:
153         "^.*@[0-9a-f]+$":
154           properties:
155             qcom,decimation:
156               enum: [ 512, 1024, 2048, 4096 ]
157               default: 512
158
159             qcom,hw-settle-time:
160               enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2,
161                       4, 6, 8, 10 ]
162               default: 0
163
164             qcom,avg-samples:
165               enum: [ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ]
166               default: 1
167
168   - if:
169       properties:
170         compatible:
171           contains:
172             const: qcom,spmi-adc-rev2
173
174     then:
175       patternProperties:
176         "^.*@[0-9a-f]+$":
177           properties:
178             qcom,decimation:
179               enum: [ 256, 512, 1024 ]
180               default: 1024
181
182             qcom,hw-settle-time:
183               enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2,
184                       4, 6, 8, 10 ]
185               default: 0
186
187             qcom,avg-samples:
188               enum: [ 1, 2, 4, 8, 16 ]
189               default: 1
190
191   - if:
192       properties:
193         compatible:
194           contains:
195             const: qcom,spmi-adc5
196
197     then:
198       patternProperties:
199         "^.*@[0-9a-f]+$":
200           properties:
201             qcom,decimation:
202               enum: [ 250, 420, 840 ]
203               default: 840
204
205             qcom,hw-settle-time:
206               enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2,
207                       4, 6, 8, 10, 16, 32, 64, 128 ]
208               default: 15
209
210             qcom,avg-samples:
211               enum: [ 1, 2, 4, 8, 16 ]
212               default: 1
213
214   - if:
215       properties:
216         compatible:
217           contains:
218             const: qcom,spmi-adc7
219
220     then:
221       patternProperties:
222         "^.*@[0-9a-f]+$":
223           properties:
224             qcom,decimation:
225               enum: [ 85, 340, 1360 ]
226               default: 1360
227
228             qcom,hw-settle-time:
229               enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 1000, 2000, 4000,
230                       8000, 16000, 32000, 64000, 128000 ]
231               default: 15
232
233             qcom,avg-samples:
234               enum: [ 1, 2, 4, 8, 16 ]
235               default: 1
236
237 additionalProperties: false
238
239 examples:
240   - |
241     spmi_bus {
242       #address-cells = <1>;
243       #size-cells = <0>;
244       /* VADC node */
245       pmic_vadc: adc@3100 {
246         compatible = "qcom,spmi-vadc";
247         reg = <0x3100>;
248         interrupts = <0x0 0x31 0x0 0x1>;
249         #address-cells = <1>;
250         #size-cells = <0>;
251         #io-channel-cells = <1>;
252         io-channel-ranges;
253
254         /* Channel node */
255         adc-chan@39 {
256           reg = <0x39>;
257           qcom,decimation = <512>;
258           qcom,ratiometric;
259           qcom,hw-settle-time = <200>;
260           qcom,avg-samples = <1>;
261           qcom,pre-scaling = <1 3>;
262         };
263
264         adc-chan@9 {
265           reg = <0x9>;
266         };
267
268         adc-chan@a {
269           reg = <0xa>;
270         };
271
272         adc-chan@e {
273           reg = <0xe>;
274         };
275
276         adc-chan@f {
277           reg = <0xf>;
278         };
279       };
280     };