GNU Linux-libre 6.8.9-gnu
[releases.git] / Documentation / devicetree / bindings / iio / dac / adi,ad3552r.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 # Copyright 2020 Analog Devices Inc.
3 %YAML 1.2
4 ---
5 $id: http://devicetree.org/schemas/iio/dac/adi,ad3552r.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
7
8 title: Analog Devices AD2552R DAC device driver
9
10 maintainers:
11   - Nuno Sá <nuno.sa@analog.com>
12
13 description: |
14   Bindings for the Analog Devices AD3552R DAC device and similar.
15   Datasheet can be found here:
16     https://www.analog.com/media/en/technical-documentation/data-sheets/ad3542r.pdf
17     https://www.analog.com/media/en/technical-documentation/data-sheets/ad3552r.pdf
18
19 properties:
20   compatible:
21     enum:
22       - adi,ad3542r
23       - adi,ad3552r
24
25   reg:
26     maxItems: 1
27
28   spi-max-frequency:
29     maximum: 30000000
30
31   reset-gpios:
32     maxItems: 1
33
34   ldac-gpios:
35     description: |
36       LDAC pin to be used as a hardware trigger to update the DAC channels.
37     maxItems: 1
38
39   vref-supply:
40     description:
41       The regulator to use as an external reference. If it does not exists the
42       internal reference will be used. External reference must be 2.5V
43
44   adi,vref-out-en:
45     description: Vref I/O driven by internal vref to 2.5V. If not set, Vref pin
46       will be floating.
47     type: boolean
48
49   adi,sdo-drive-strength:
50     description: |
51       Configure SDIO0 and SDIO1 strength levels:
52         - 0: low SDO drive strength.
53         - 1: medium low SDO drive strength.
54         - 2: medium high SDO drive strength.
55         - 3: high SDO drive strength
56     $ref: /schemas/types.yaml#/definitions/uint32
57     enum: [0, 1, 2, 3]
58
59   '#address-cells':
60     const: 1
61
62   '#size-cells':
63     const: 0
64
65 patternProperties:
66   "^channel@([0-1])$":
67     type: object
68     description: Configurations of the DAC Channels
69
70     additionalProperties: false
71
72     properties:
73       reg:
74         description: Channel number
75         enum: [0, 1]
76
77       adi,output-range-microvolt: true
78
79       custom-output-range-config:
80         type: object
81         additionalProperties: false
82         description: Configuration of custom range when
83           adi,output-range-microvolt is not present.
84           The formulas for calculation the output voltages are
85             Vout_fs = 2.5 + [(GainN + Offset/1024) * 2.5 * Rfbx * 1.03]
86             Vout_zs = 2.5 - [(GainP + Offset/1024) * 2.5 * Rfbx * 1.03]
87
88         properties:
89           adi,gain-offset:
90             description: Gain offset used in the above formula
91             $ref: /schemas/types.yaml#/definitions/int32
92             maximum: 511
93             minimum: -511
94
95           adi,gain-scaling-p-inv-log2:
96             description: GainP = 1 / ( 2 ^ adi,gain-scaling-p-inv-log2)
97             $ref: /schemas/types.yaml#/definitions/uint32
98             enum: [0, 1, 2, 3]
99
100           adi,gain-scaling-n-inv-log2:
101             description: GainN = 1 / ( 2 ^ adi,gain-scaling-n-inv-log2)
102             $ref: /schemas/types.yaml#/definitions/uint32
103             enum: [0, 1, 2, 3]
104
105           adi,rfb-ohms:
106             description: Feedback Resistor
107
108         required:
109           - adi,gain-offset
110           - adi,gain-scaling-p-inv-log2
111           - adi,gain-scaling-n-inv-log2
112           - adi,rfb-ohms
113
114     required:
115       - reg
116
117     oneOf:
118       # If adi,output-range-microvolt is missing,
119       # custom-output-range-config must be used
120       - required:
121           - adi,output-range-microvolt
122
123       - required:
124           - custom-output-range-config
125
126 allOf:
127   - if:
128       properties:
129         compatible:
130           contains:
131             const: adi,ad3542r
132     then:
133       patternProperties:
134         "^channel@([0-1])$":
135           type: object
136           properties:
137             adi,output-range-microvolt:
138               description: |
139                 Voltage output range of the channel as <minimum, maximum>
140                 Required connections:
141                   Rfb1x for: 0 to 2.5 V; 0 to 3V; 0 to 5 V;
142                   Rfb2x for: 0 to 10 V; 2.5 to 7.5V; -5 to 5 V;
143               oneOf:
144                 - items:
145                     - const: 0
146                     - enum: [2500000, 3000000, 5000000, 10000000]
147                 - items:
148                     - const: -2500000
149                     - const: 7500000
150                 - items:
151                     - const: -5000000
152                     - const: 5000000
153
154           required:
155             - adi,output-range-microvolt
156
157   - if:
158       properties:
159         compatible:
160           contains:
161             const: adi,ad3552r
162     then:
163       patternProperties:
164         "^channel@([0-1])$":
165           type: object
166           properties:
167             adi,output-range-microvolt:
168               description: |
169                 Voltage output range of the channel as <minimum, maximum>
170                 Required connections:
171                   Rfb1x for: 0 to 2.5 V; 0 to 5 V;
172                   Rfb2x for: 0 to 10 V; -5 to 5 V;
173                   Rfb4x for: -10 to 10V
174               oneOf:
175                 - items:
176                     - const: 0
177                     - enum: [2500000, 5000000, 10000000]
178                 - items:
179                     - const: -5000000
180                     - const: 5000000
181                 - items:
182                     - const: -10000000
183                     - const: 10000000
184
185 required:
186   - compatible
187   - reg
188   - spi-max-frequency
189
190 additionalProperties: false
191
192 examples:
193   - |
194     spi {
195         #address-cells = <1>;
196         #size-cells = <0>;
197         ad3552r@0 {
198             compatible = "adi,ad3552r";
199             reg = <0>;
200             spi-max-frequency = <20000000>;
201             #address-cells = <1>;
202             #size-cells = <0>;
203             channel@0 {
204                 reg = <0>;
205                 adi,output-range-microvolt = <0 10000000>;
206             };
207             channel@1 {
208                 reg = <1>;
209                 custom-output-range-config {
210                     adi,gain-offset = <5>;
211                     adi,gain-scaling-p-inv-log2 = <1>;
212                     adi,gain-scaling-n-inv-log2 = <2>;
213                     adi,rfb-ohms = <1>;
214                 };
215             };
216         };
217     };
218 ...