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,ad5758.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices AD5758 DAC
8
9maintainers:
10  - Michael Hennerich <Michael.Hennerich@analog.com>
11
12properties:
13  compatible:
14    const: adi,ad5758
15
16  reg:
17    maxItems: 1
18
19  spi-max-frequency: true
20  spi-cpha: true
21
22  adi,dc-dc-mode:
23    $ref: /schemas/types.yaml#/definitions/uint32
24    enum: [1, 2, 3]
25    description: |
26      Mode of operation of the dc-to-dc converter
27      Dynamic Power Control (DPC)
28      In this mode, the AD5758 circuitry senses the output voltage and
29      dynamically regulates the supply voltage, VDPC+, to meet compliance
30      requirements plus an optimized headroom voltage for the output buffer.
31
32      Programmable Power Control (PPC)
33      In this mode, the VDPC+ voltage is user-programmable to a fixed level
34      that needs to accommodate the maximum output load required.
35
36      The output of the DAC core is either converted to a current or
37      voltage output at the VIOUT pin. Only one mode can be enabled at
38      any one time.
39
40      The following values are currently supported:
41      * 1: DPC current mode
42      * 2: DPC voltage mode
43      * 3: PPC current mode
44
45      Depending on the selected output mode (voltage or current) one of the
46      two properties must be present:
47
48  adi,range-microvolt:
49    $ref: /schemas/types.yaml#/definitions/int32-array
50    description: |
51      Voltage output range specified as <minimum, maximum>
52    enum:
53      - [[0, 5000000]]
54      - [[0, 10000000]]
55      - [[-5000000, 5000000]]
56      - [[-10000000, 10000000]]
57
58  adi,range-microamp:
59    $ref: /schemas/types.yaml#/definitions/int32-array
60    description: |
61      Current output range specified as <minimum, maximum>
62    enum:
63      - [[0, 20000]]
64      - [[0, 24000]]
65      - [[4, 24000]]
66      - [[-20000, 20000]]
67      - [[-24000, 24000]]
68      - [[-1000, 22000]]
69
70  reset-gpios: true
71
72  adi,dc-dc-ilim-microamp:
73    $ref: /schemas/types.yaml#/definitions/uint32
74    enum: [150000, 200000, 250000, 300000, 350000, 400000]
75    description: |
76      The dc-to-dc converter current limit.
77
78  adi,slew-time-us:
79    description: |
80      The time it takes for the output to reach the full scale [uS]
81    minimum: 133
82    maximum: 1023984375
83
84required:
85  - compatible
86  - reg
87  - spi-cpha
88  - adi,dc-dc-mode
89
90allOf:
91  - if:
92      properties:
93        adi,dc-dc-mode:
94          contains:
95            enum: [1, 3]
96    then:
97      properties:
98        adi,range-microvolt: false
99      required:
100        - adi,range-microamp
101    else:
102      properties:
103        adi,range-microamp: false
104      required:
105        - adi,range-microvolt
106
107additionalProperties: false
108
109examples:
110  - |
111    spi {
112        #address-cells = <1>;
113        #size-cells = <0>;
114
115        dac@0 {
116            compatible = "adi,ad5758";
117            reg = <0>;
118            spi-max-frequency = <1000000>;
119            spi-cpha;
120
121            reset-gpios = <&gpio 22 0>;
122
123            adi,dc-dc-mode = <2>;
124            adi,range-microvolt = <0 10000000>;
125            adi,dc-dc-ilim-microamp = <200000>;
126            adi,slew-time-us = <125000>;
127        };
128    };
129...
130