xref: /linux/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml (revision fcc79e1714e8c2b8e216dc3149812edd37884eef)
1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/samsung/exynos-pmu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos SoC series Power Management Unit (PMU)
8
9maintainers:
10  - Krzysztof Kozlowski <krzk@kernel.org>
11
12# Custom select to avoid matching all nodes with 'syscon'
13select:
14  properties:
15    compatible:
16      contains:
17        enum:
18          - google,gs101-pmu
19          - samsung,exynos3250-pmu
20          - samsung,exynos4210-pmu
21          - samsung,exynos4212-pmu
22          - samsung,exynos4412-pmu
23          - samsung,exynos5250-pmu
24          - samsung,exynos5260-pmu
25          - samsung,exynos5410-pmu
26          - samsung,exynos5420-pmu
27          - samsung,exynos5433-pmu
28          - samsung,exynos7-pmu
29          - samsung,exynos850-pmu
30          - samsung-s5pv210-pmu
31  required:
32    - compatible
33
34properties:
35  compatible:
36    oneOf:
37      - items:
38          - enum:
39              - google,gs101-pmu
40              - samsung,exynos3250-pmu
41              - samsung,exynos4210-pmu
42              - samsung,exynos4212-pmu
43              - samsung,exynos4412-pmu
44              - samsung,exynos5250-pmu
45              - samsung,exynos5260-pmu
46              - samsung,exynos5410-pmu
47              - samsung,exynos5420-pmu
48              - samsung,exynos5433-pmu
49              - samsung,exynos7-pmu
50              - samsung,exynos850-pmu
51              - samsung-s5pv210-pmu
52          - const: syscon
53      - items:
54          - enum:
55              - samsung,exynos7885-pmu
56              - samsung,exynos8895-pmu
57              - samsung,exynos9810-pmu
58              - samsung,exynosautov9-pmu
59              - samsung,exynosautov920-pmu
60              - tesla,fsd-pmu
61          - const: samsung,exynos7-pmu
62          - const: syscon
63      - items:
64          - enum:
65              - samsung,exynos3250-pmu
66              - samsung,exynos4210-pmu
67              - samsung,exynos4212-pmu
68              - samsung,exynos4412-pmu
69              - samsung,exynos5250-pmu
70              - samsung,exynos5420-pmu
71              - samsung,exynos5433-pmu
72          - const: simple-mfd
73          - const: syscon
74
75  reg:
76    maxItems: 1
77
78  '#clock-cells':
79    const: 1
80
81  clock-names:
82    description:
83      List of clock names for particular CLKOUT mux inputs
84    minItems: 1
85    maxItems: 32
86    items:
87      pattern: '^clkout([0-9]|[12][0-9]|3[0-1])$'
88
89  clocks:
90    minItems: 1
91    maxItems: 32
92
93  dp-phy:
94    $ref: /schemas/phy/samsung,dp-video-phy.yaml
95    unevaluatedProperties: false
96
97  interrupt-controller:
98    description:
99      Some PMUs are capable of behaving as an interrupt controller (mostly
100      to wake up a suspended PMU).
101
102  '#interrupt-cells':
103    description:
104      Must be identical to the that of the parent interrupt controller.
105    const: 3
106
107  mipi-phy:
108    $ref: /schemas/phy/samsung,mipi-video-phy.yaml
109    unevaluatedProperties: false
110
111  reboot-mode:
112    $ref: /schemas/power/reset/syscon-reboot-mode.yaml
113    type: object
114    description:
115      Reboot mode to alter bootloader behavior for the next boot
116
117  syscon-poweroff:
118    $ref: /schemas/power/reset/syscon-poweroff.yaml#
119    type: object
120    description:
121      Node for power off method
122
123  syscon-reboot:
124    $ref: /schemas/power/reset/syscon-reboot.yaml#
125    type: object
126    description:
127      Node for reboot method
128
129required:
130  - compatible
131  - reg
132
133additionalProperties: false
134
135allOf:
136  - if:
137      properties:
138        compatible:
139          contains:
140            enum:
141              - samsung,exynos3250-pmu
142              - samsung,exynos4210-pmu
143              - samsung,exynos4212-pmu
144              - samsung,exynos4412-pmu
145              - samsung,exynos5250-pmu
146              - samsung,exynos5410-pmu
147              - samsung,exynos5420-pmu
148              - samsung,exynos5433-pmu
149    then:
150      required:
151        - '#clock-cells'
152        - clock-names
153        - clocks
154
155  - if:
156      properties:
157        compatible:
158          contains:
159            enum:
160              - samsung,exynos3250-pmu
161              - samsung,exynos4210-pmu
162              - samsung,exynos4212-pmu
163              - samsung,exynos4412-pmu
164              - samsung,exynos5250-pmu
165              - samsung,exynos5420-pmu
166              - samsung,exynos5433-pmu
167    then:
168      properties:
169        mipi-phy: true
170    else:
171      properties:
172        mipi-phy: false
173
174  - if:
175      properties:
176        compatible:
177          contains:
178            enum:
179              - samsung,exynos5250-pmu
180              - samsung,exynos5420-pmu
181              - samsung,exynos5433-pmu
182    then:
183      properties:
184        dp-phy: true
185    else:
186      properties:
187        dp-phy: false
188
189examples:
190  - |
191    #include <dt-bindings/clock/exynos5250.h>
192
193    pmu_system_controller: system-controller@10040000 {
194        compatible = "samsung,exynos5250-pmu", "syscon";
195        reg = <0x10040000 0x5000>;
196        interrupt-controller;
197        #interrupt-cells = <3>;
198        interrupt-parent = <&gic>;
199        #clock-cells = <1>;
200        clock-names = "clkout16";
201        clocks = <&clock CLK_FIN_PLL>;
202
203        dp-phy {
204            compatible = "samsung,exynos5250-dp-video-phy";
205            #phy-cells = <0>;
206        };
207
208        mipi-phy {
209            compatible = "samsung,s5pv210-mipi-video-phy";
210            #phy-cells = <1>;
211        };
212    };
213