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 };
Cache object: cda04f860ce0556051baa7afeb8c553a
|