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,exynosautov9-pmu
57              - samsung,exynosautov920-pmu
58              - tesla,fsd-pmu
59          - const: samsung,exynos7-pmu
60          - const: syscon
61      - items:
62          - enum:
63              - samsung,exynos3250-pmu
64              - samsung,exynos4210-pmu
65              - samsung,exynos4212-pmu
66              - samsung,exynos4412-pmu
67              - samsung,exynos5250-pmu
68              - samsung,exynos5420-pmu
69              - samsung,exynos5433-pmu
70          - const: simple-mfd
71          - const: syscon
72
73  reg:
74    maxItems: 1
75
76  '#clock-cells':
77    const: 1
78
79  clock-names:
80    description:
81      List of clock names for particular CLKOUT mux inputs
82    minItems: 1
83    maxItems: 32
84    items:
85      pattern: '^clkout([0-9]|[12][0-9]|3[0-1])$'
86
87  clocks:
88    minItems: 1
89    maxItems: 32
90
91  dp-phy:
92    $ref: /schemas/phy/samsung,dp-video-phy.yaml
93    unevaluatedProperties: false
94
95  interrupt-controller:
96    description:
97      Some PMUs are capable of behaving as an interrupt controller (mostly
98      to wake up a suspended PMU).
99
100  '#interrupt-cells':
101    description:
102      Must be identical to the that of the parent interrupt controller.
103    const: 3
104
105  mipi-phy:
106    $ref: /schemas/phy/samsung,mipi-video-phy.yaml
107    unevaluatedProperties: false
108
109  reboot-mode:
110    $ref: /schemas/power/reset/syscon-reboot-mode.yaml
111    type: object
112    description:
113      Reboot mode to alter bootloader behavior for the next boot
114
115  syscon-poweroff:
116    $ref: /schemas/power/reset/syscon-poweroff.yaml#
117    type: object
118    description:
119      Node for power off method
120
121  syscon-reboot:
122    $ref: /schemas/power/reset/syscon-reboot.yaml#
123    type: object
124    description:
125      Node for reboot method
126
127required:
128  - compatible
129  - reg
130
131additionalProperties: false
132
133allOf:
134  - if:
135      properties:
136        compatible:
137          contains:
138            enum:
139              - samsung,exynos3250-pmu
140              - samsung,exynos4210-pmu
141              - samsung,exynos4212-pmu
142              - samsung,exynos4412-pmu
143              - samsung,exynos5250-pmu
144              - samsung,exynos5410-pmu
145              - samsung,exynos5420-pmu
146              - samsung,exynos5433-pmu
147    then:
148      required:
149        - '#clock-cells'
150        - clock-names
151        - clocks
152
153  - if:
154      properties:
155        compatible:
156          contains:
157            enum:
158              - samsung,exynos3250-pmu
159              - samsung,exynos4210-pmu
160              - samsung,exynos4212-pmu
161              - samsung,exynos4412-pmu
162              - samsung,exynos5250-pmu
163              - samsung,exynos5420-pmu
164              - samsung,exynos5433-pmu
165    then:
166      properties:
167        mipi-phy: true
168    else:
169      properties:
170        mipi-phy: false
171
172  - if:
173      properties:
174        compatible:
175          contains:
176            enum:
177              - samsung,exynos5250-pmu
178              - samsung,exynos5420-pmu
179              - samsung,exynos5433-pmu
180    then:
181      properties:
182        dp-phy: true
183    else:
184      properties:
185        dp-phy: false
186
187examples:
188  - |
189    #include <dt-bindings/clock/exynos5250.h>
190
191    pmu_system_controller: system-controller@10040000 {
192        compatible = "samsung,exynos5250-pmu", "syscon";
193        reg = <0x10040000 0x5000>;
194        interrupt-controller;
195        #interrupt-cells = <3>;
196        interrupt-parent = <&gic>;
197        #clock-cells = <1>;
198        clock-names = "clkout16";
199        clocks = <&clock CLK_FIN_PLL>;
200
201        dp-phy {
202            compatible = "samsung,exynos5250-dp-video-phy";
203            #phy-cells = <0>;
204        };
205
206        mipi-phy {
207            compatible = "samsung,s5pv210-mipi-video-phy";
208            #phy-cells = <1>;
209        };
210    };
211