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