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