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