1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/dac/adi,ad5592r.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices AD5592R/AD5593R DAC/ADC
8
9maintainers:
10  - Michael Hennerich <michael.hennerich@analog.com>
11
12properties:
13  compatible:
14    enum:
15      - adi,ad5592r
16      - adi,ad5593r
17
18  reg:
19    maxItems: 1
20
21  spi-max-frequency:
22    maximum: 30000000
23
24  spi-cpol: true
25
26  "#address-cells":
27    const: 1
28
29  "#size-cells":
30    const: 0
31
32  "#io-channel-cells":
33    const: 1
34
35  vref-supply:
36    description: If not set internal 2.5V reference used.
37
38  reset-gpios:
39    maxItems: 1
40
41  gpio-controller:
42    description: Marks the device node as a GPIO controller.
43
44  "#gpio-cells":
45    const: 2
46    description:
47      The first cell is the GPIO number and the second cell specifies
48      GPIO flags, as defined in <dt-bindings/gpio/gpio.h>.
49
50required:
51  - compatible
52  - reg
53  - "#address-cells"
54  - "#size-cells"
55
56allOf:
57  - if:
58      properties:
59        compatible:
60          contains:
61            const: adi,ad5592r
62    then:
63      required:
64        - spi-cpol
65    else:
66      properties:
67        spi-cpol: false
68
69additionalProperties: false
70
71patternProperties:
72  "^(channel@)[0-7]$":
73    type: object
74    description: Child node to describe a channel
75    properties:
76      reg:
77        minimum: 0
78        maximum: 7
79
80      adi,mode:
81        $ref: /schemas/types.yaml#/definitions/uint32
82        enum: [0, 1, 2, 3, 8]
83        description: |
84          Mode or function of this channel.
85          Macros specifying the valid values can be found in
86          <dt-bindings/iio/adi,ad5592r.h>.
87
88          The following values are currently supported:
89          * CH_MODE_UNUSED (the pin is unused)
90          * CH_MODE_ADC (the pin is ADC input)
91          * CH_MODE_DAC (the pin is DAC output)
92          * CH_MODE_DAC_AND_ADC (the pin is DAC output but can be monitored
93            by an ADC, since there is no disadvantage this should be
94            considered as the preferred DAC mode)
95          * CH_MODE_GPIO (the pin is registered with GPIOLIB)
96
97      adi,off-state:
98        $ref: /schemas/types.yaml#/definitions/uint32
99        enum: [0, 1, 2, 3]
100        description: |
101          State of this channel when unused or the device gets removed.
102          Macros specifying the  valid values can be found in
103          <dt-bindings/iio/adi,ad5592r.h>.
104          * CH_OFFSTATE_PULLDOWN (the pin is pulled down)
105          * CH_OFFSTATE_OUT_LOW  (the pin is output low)
106          * CH_OFFSTATE_OUT_HIGH (the pin is output high)
107          * CH_OFFSTATE_OUT_TRISTATE (the pin is tristated output)
108
109    required:
110      - reg
111      - adi,mode
112
113    additionalProperties: false
114
115examples:
116  - |
117    #include <dt-bindings/iio/adi,ad5592r.h>
118    spi {
119        #address-cells = <1>;
120        #size-cells = <0>;
121
122        addac@0 {
123            compatible = "adi,ad5592r";
124            #size-cells = <0>;
125            #address-cells = <1>;
126            #gpio-cells = <2>;
127            reg = <0>;
128
129            spi-max-frequency = <1000000>;
130            spi-cpol;
131
132            vref-supply = <&vref>;
133            reset-gpios = <&gpio0 86 0>;
134            gpio-controller;
135
136            channel@0 {
137                reg = <0>;
138                adi,mode = <CH_MODE_DAC>;
139            };
140            channel@1 {
141                reg = <1>;
142                adi,mode = <CH_MODE_ADC>;
143            };
144            channel@2 {
145                reg = <2>;
146                adi,mode = <CH_MODE_DAC_AND_ADC>;
147            };
148            channel@3 {
149                reg = <3>;
150                adi,mode = <CH_MODE_DAC_AND_ADC>;
151                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
152            };
153            channel@4 {
154                reg = <4>;
155                adi,mode = <CH_MODE_UNUSED>;
156                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
157            };
158            channel@5 {
159                reg = <5>;
160                adi,mode = <CH_MODE_GPIO>;
161                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
162            };
163            channel@6 {
164                reg = <6>;
165                adi,mode = <CH_MODE_GPIO>;
166                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
167            };
168            channel@7 {
169                reg = <7>;
170                adi,mode = <CH_MODE_GPIO>;
171                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
172            };
173        };
174        ad5593r@10 {
175            compatible = "adi,ad5593r";
176            #size-cells = <0>;
177            #address-cells = <1>;
178            #gpio-cells = <2>;
179            reg = <0x10>;
180            gpio-controller;
181
182            channel@0 {
183                reg = <0>;
184                adi,mode = <CH_MODE_DAC>;
185                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
186            };
187            channel@1 {
188                reg = <1>;
189                adi,mode = <CH_MODE_ADC>;
190                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
191            };
192            channel@2 {
193                reg = <2>;
194                adi,mode = <CH_MODE_DAC_AND_ADC>;
195                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
196            };
197            channel@6 {
198                reg = <6>;
199                adi,mode = <CH_MODE_GPIO>;
200                adi,off-state = <CH_OFFSTATE_PULLDOWN>;
201            };
202        };
203    };
204...
205