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