xref: /freebsd/sys/contrib/device-tree/Bindings/mfd/actions,atc260x.yaml (revision e6bfd18d21b225af6a0ed67ceeaf1293b7b9eba5)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/actions,atc260x.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Actions Semi ATC260x Power Management IC bindings
8
9maintainers:
10  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11  - Cristian Ciocaltea <cristian.ciocaltea@gmail.com>
12
13description: |
14  ATC260x series PMICs integrates Audio Codec, Power Management, RTC, IR
15  and GPIO controller blocks. Currently only the PM related functionalities
16  (i.e. regulators and system power-off/reboot) for the ATC2603C and ATC2609A
17  chip variants are supported.
18  ATC2603C includes 3 programmable DC-DC converters, 9 programmable LDO
19  regulators and 1 fixed LDO regulator.
20  ATC2609A includes 5 programmable DC-DC converters and 10 programmable LDO
21  regulators.
22
23allOf:
24  - $ref: ../input/input.yaml
25
26properties:
27  compatible:
28    enum:
29      - actions,atc2603c
30      - actions,atc2609a
31
32  reg:
33    maxItems: 1
34
35  interrupts:
36    maxItems: 1
37
38  reset-time-sec:
39    description: |
40      Duration in seconds which the key should be kept pressed for device
41      to reset automatically. The hardware default is 8. Use 0 to disable
42      this functionality.
43    enum: [0, 6, 8, 10, 12]
44
45  regulators:
46    type: object
47    description: |
48      List of child nodes specifying the regulators, depending on chip variant:
49      * ATC2603C: dcdc[1-3], ldo[1-3,5-8,11,12], switchldo1
50      * ATC2609A: dcdc[0-4], ldo[0-9]
51
52    properties:
53      compatible:
54        enum:
55          - actions,atc2603c-regulator
56          - actions,atc2609a-regulator
57
58      switchldo1:
59        type: object
60        $ref: ../regulator/regulator.yaml
61
62        properties:
63          regulator-name: true
64          regulator-boot-on: true
65          regulator-always-on: true
66          regulator-min-microvolt: true
67          regulator-max-microvolt: true
68          regulator-allow-bypass: true
69          regulator-active-discharge: true
70
71        additionalProperties: false
72
73    patternProperties:
74      "^(dcdc[0-4]|ldo[0-9]|ldo1[1-2]|switchldo1)-supply$":
75        description: ATC260x voltage regulators supplies
76
77      "^(dcdc[0-4]|ldo[0-9]|ldo1[1-2])$":
78        type: object
79        $ref: ../regulator/regulator.yaml
80
81        properties:
82          regulator-name: true
83          regulator-boot-on: true
84          regulator-always-on: true
85          regulator-min-microvolt: true
86          regulator-max-microvolt: true
87          regulator-allow-bypass: true
88
89        additionalProperties: false
90
91    allOf:
92      - if:
93          properties:
94            compatible:
95              contains:
96                const: actions,atc2603c-regulator
97        then:
98          patternProperties:
99            "^(dcdc[0,4]|ldo[0,4,9])(-supply)?$": false
100
101            "^(ldo|dcdc)":
102              properties:
103                regulator-allow-bypass: false
104      - if:
105          properties:
106            compatible:
107              contains:
108                const: actions,atc2609a-regulator
109        then:
110          patternProperties:
111            "^(ldo1[1-2]|switchldo1)(-supply)?$": false
112
113            "^(dcdc|ldo[3-9])":
114              properties:
115                regulator-allow-bypass: false
116
117    required:
118      - compatible
119
120    additionalProperties: false
121
122additionalProperties: false
123
124required:
125  - compatible
126  - reg
127  - interrupts
128
129examples:
130  - |
131    #include <dt-bindings/interrupt-controller/arm-gic.h>
132    i2c0 {
133        #address-cells = <1>;
134        #size-cells = <0>;
135
136        pmic@65 {
137            compatible = "actions,atc2603c";
138            reg = <0x65>;
139            interrupt-parent = <&sirq>;
140            interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
141
142            reset-time-sec = <6>;
143
144            regulators {
145                compatible = "actions,atc2603c-regulator";
146
147                dcdc1-supply = <&reg_5v0>;
148                dcdc3-supply = <&reg_5v0>;
149                ldo5-supply = <&reg_5v0>;
150                switchldo1-supply = <&vcc>;
151
152                vdd_cpu: dcdc1 {
153                    regulator-name = "VDD_CPU";
154                    regulator-min-microvolt = <700000>;
155                    regulator-max-microvolt = <1400000>;
156                    regulator-always-on;
157                };
158
159                vcc: dcdc3 {
160                    regulator-name = "VCC";
161                    regulator-min-microvolt = <2600000>;
162                    regulator-max-microvolt = <3300000>;
163                    regulator-always-on;
164                };
165
166                vcc_3v1: ldo5 {
167                    regulator-name = "VCC_3V1";
168                    regulator-min-microvolt = <2600000>;
169                    regulator-max-microvolt = <3300000>;
170                };
171
172                sd_vcc: switchldo1 {
173                    regulator-name = "SD_VCC";
174                    regulator-min-microvolt = <3000000>;
175                    regulator-max-microvolt = <3300000>;
176                    regulator-always-on;
177                    regulator-boot-on;
178                };
179            };
180        };
181    };
182
183...
184