xref: /linux/Documentation/devicetree/bindings/regulator/mediatek,mt6358-regulator.yaml (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/regulator/mediatek,mt6358-regulator.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MediaTek MT6358 Regulator
8
9maintainers:
10  - Zhiyong Tao <zhiyong.tao@mediatek.com>
11
12description:
13  Regulator node of the PMIC. This node should under the PMIC's device node.
14  All voltage regulators provided by the PMIC are described as sub-nodes of
15  this node.
16
17properties:
18  compatible:
19    oneOf:
20      - const: mediatek,mt6358-regulator
21      - items:
22          - const: mediatek,mt6366-regulator
23          - const: mediatek,mt6358-regulator
24
25  vsys-ldo1-supply:
26    description: Supply for LDOs vfe28, vxo22, vcn28, vaux18, vaud28, vsim1, vusb, vbif28
27  vsys-ldo2-supply:
28    description: Supply for LDOs vldo28 (MT6358 only), vio28, vmc, vmch, vsim2
29  vsys-ldo3-supply:
30    description: Supply for LDOs vcn33, vcama[12] (MT6358 only), vemc, vibr
31  vsys-vcore-supply:
32    description: Supply for buck regulator vcore
33  vsys-vdram1-supply:
34    description: Supply for buck regulator vdram1
35  vsys-vgpu-supply:
36    description: Supply for buck regulator vgpu
37  vsys-vmodem-supply:
38    description: Supply for buck regulator vmodem
39  vsys-vpa-supply:
40    description: Supply for buck regulator vpa
41  vsys-vproc11-supply:
42    description: Supply for buck regulator vproc11
43  vsys-vproc12-supply:
44    description: Supply for buck regulator vproc12
45  vsys-vs1-supply:
46    description: Supply for buck regulator vs1
47  vsys-vs2-supply:
48    description: Supply for buck regulator vs2
49  vs1-ldo1-supply:
50    description:
51      Supply for LDOs vrf18, vefuse, vcn18, vcamio (MT6358 only), vio18, vm18 (MT6366 only)
52  vs2-ldo1-supply:
53    description: Supply for LDOs vdram2, vmddr (MT6366 only)
54  vs2-ldo2-supply:
55    description: Supply for LDOs vrf12, va12
56  vs2-ldo3-supply:
57    description:
58      Supply for LDOs vsram-core (MT6366 only), vsram-gpu, vsram-others, vsram-proc11, vsram-proc12
59  vs2-ldo4-supply:
60    description: Supply for LDO vcamd
61
62patternProperties:
63  "^(buck_)?v(core|dram1|gpu|modem|pa|proc1[12]|s[12])$":
64    description: Buck regulators
65    type: object
66    $ref: regulator.yaml#
67    properties:
68      regulator-allowed-modes:
69        description: |
70          Buck regulatpr operating modes allowed. Valid values below.
71          Users should use the macros from dt-bindings/regulator/mediatek,mt6397-regulator.h
72            0 (MT6397_BUCK_MODE_AUTO): Auto PFM/PWM mode
73            1 (MT6397_BUCK_MODE_FORCE_PWM): Forced PWM mode
74        items:
75          enum: [0, 1]
76    unevaluatedProperties: false
77
78  "^(ldo_)?v(a|rf)12$":
79    description: LDOs with fixed 1.2V output and 0~100/10mV tuning
80    type: object
81    $ref: regulator.yaml#
82    properties:
83      regulator-allowed-modes: false
84    unevaluatedProperties: false
85
86  "^(ldo_)?v((aux|cn|io|rf)18|camio)$":
87    description:
88      LDOs with fixed 1.8V output and 0~100/10mV tuning (vcn18 on MT6366 has variable output)
89    type: object
90    $ref: regulator.yaml#
91    properties:
92      regulator-allowed-modes: false
93    unevaluatedProperties: false
94
95  "^(ldo_)?vxo22$":
96    description: LDOs with fixed 2.2V output and 0~100/10mV tuning
97    type: object
98    $ref: regulator.yaml#
99    properties:
100      regulator-allowed-modes: false
101    unevaluatedProperties: false
102
103  "^(ldo_)?v(aud|bif|cn|fe|io)28$":
104    description: LDOs with fixed 2.8V output and 0~100/10mV tuning
105    type: object
106    $ref: regulator.yaml#
107    properties:
108      regulator-allowed-modes: false
109    unevaluatedProperties: false
110
111  "^(ldo_)?vusb$":
112    description: LDOs with fixed 3.0V output and 0~100/10mV tuning
113    type: object
114    $ref: regulator.yaml#
115    properties:
116      regulator-allowed-modes: false
117    unevaluatedProperties: false
118
119  "^(ldo_)?vsram[_-](core|gpu|others|proc1[12])$":
120    description: LDOs with variable output
121    type: object
122    $ref: regulator.yaml#
123    properties:
124      regulator-allowed-modes: false
125    unevaluatedProperties: false
126
127  "^(ldo_)?v(cama[12]|camd|cn33|dram2|efuse|emc|ibr|ldo28|m18|mc|mch|mddr|sim[12])$":
128    description: LDOs with variable output and 0~100/10mV tuning
129    type: object
130    $ref: regulator.yaml#
131    properties:
132      regulator-allowed-modes: false
133    unevaluatedProperties: false
134
135required:
136  - compatible
137
138additionalProperties: false
139
140allOf:
141  - if:
142      properties:
143        compatible:
144          const: mediatek,mt6358-regulator
145    then:
146      patternProperties:
147        # Old regulator node name scheme (with prefix and underscores) only
148        # ([^y-] is used to avoid matching -supply
149        "^(?<!buck_)(?<!ldo_)v.*[^y-](?!-supply)$": false
150        "^ldo_vsram-": false
151        # vsram_core regulator doesn't exist on MT6358
152        "^ldo_vsram[-_]core$": false
153
154      properties:
155        # vm18 and vmddr regulators don't exist on MT6358
156        ldo_vm18: false
157        ldo_vmddr: false
158
159  - if:
160      properties:
161        compatible:
162          contains:
163            const: mediatek,mt6366-regulator
164    then:
165      patternProperties:
166        # Prefer cleaned up regulator node names
167        "^(buck|ldo)_": false
168        # Don't allow underscores
169        "^vsram_": false
170        # vcam* regulators don't exist on MT6366
171        "^vcam": false
172
173      properties:
174        # vldo28 regulator doesn't exist on MT6366
175        vldo28: false
176        # vs2_ldo4 supply pin doesn't exist on MT6366
177        vs2-ldo4-supply: false
178
179examples:
180  - |
181    #include <dt-bindings/regulator/mediatek,mt6397-regulator.h>
182
183    regulator {
184        compatible = "mediatek,mt6358-regulator";
185
186        buck_vgpu {
187            regulator-name = "vgpu";
188            regulator-min-microvolt = <625000>;
189            regulator-max-microvolt = <900000>;
190            regulator-ramp-delay = <6250>;
191            regulator-enable-ramp-delay = <200>;
192            regulator-allowed-modes = <MT6397_BUCK_MODE_AUTO
193                                       MT6397_BUCK_MODE_FORCE_PWM>;
194        };
195
196        ldo_vsram_gpu {
197            regulator-name = "vsram_gpu";
198            regulator-min-microvolt = <850000>;
199            regulator-max-microvolt = <1000000>;
200            regulator-ramp-delay = <6250>;
201            regulator-enable-ramp-delay = <240>;
202        };
203    };
204
205  - |
206    #include <dt-bindings/regulator/mediatek,mt6397-regulator.h>
207
208    regulator {
209        compatible = "mediatek,mt6366-regulator", "mediatek,mt6358-regulator";
210
211        vdram1 {
212            regulator-name = "pp1125_emi_vdd2";
213            regulator-min-microvolt = <1125000>;
214            regulator-max-microvolt = <1125000>;
215            regulator-ramp-delay = <12500>;
216            regulator-enable-ramp-delay = <0>;
217            regulator-allowed-modes = <MT6397_BUCK_MODE_AUTO
218                                       MT6397_BUCK_MODE_FORCE_PWM>;
219            regulator-always-on;
220        };
221
222        vproc11 {
223            regulator-name = "ppvar_dvdd_proc_bc_mt6366";
224            regulator-min-microvolt = <600000>;
225            regulator-max-microvolt = <1200000>;
226            regulator-ramp-delay = <6250>;
227            regulator-enable-ramp-delay = <200>;
228            regulator-allowed-modes = <MT6397_BUCK_MODE_AUTO
229                                       MT6397_BUCK_MODE_FORCE_PWM>;
230            regulator-always-on;
231        };
232
233        vmddr {
234            regulator-name = "pm0750_emi_vmddr";
235            regulator-min-microvolt = <700000>;
236            regulator-max-microvolt = <750000>;
237            regulator-enable-ramp-delay = <325>;
238            regulator-always-on;
239        };
240
241        vsram-proc11 {
242            regulator-name = "pp0900_dvdd_sram_bc";
243            regulator-min-microvolt = <850000>;
244            regulator-max-microvolt = <1120000>;
245            regulator-ramp-delay = <6250>;
246            regulator-enable-ramp-delay = <240>;
247            regulator-always-on;
248        };
249    };
250...
251