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