xref: /linux/Documentation/devicetree/bindings/clock/samsung,exynos7870-cmu.yaml (revision e7e86d7697c6ed1dbbde18d7185c35b6967945ed)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/clock/samsung,exynos7870-cmu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos7870 SoC clock controller
8
9maintainers:
10  - Kaustabh Chakraborty <kauschluss@disroot.org>
11
12description: |
13  Exynos7870 clock controller is comprised of several CMU units, generating
14  clocks for different domains. Those CMU units are modeled as separate device
15  tree nodes, and might depend on each other. The root clock in that root tree
16  is an external clock: OSCCLK (26 MHz). This external clock must be defined
17  as a fixed-rate clock in dts.
18
19  Each clock is assigned an identifier and client nodes can use this identifier
20  to specify the clock which they consume. All clocks available for usage
21  in clock consumer nodes are defined as preprocessor macros in
22  include/dt-bindings/clock/samsung,exynos7870-cmu.h header.
23
24properties:
25  compatible:
26    enum:
27      - samsung,exynos7870-cmu-mif
28      - samsung,exynos7870-cmu-dispaud
29      - samsung,exynos7870-cmu-fsys
30      - samsung,exynos7870-cmu-g3d
31      - samsung,exynos7870-cmu-isp
32      - samsung,exynos7870-cmu-mfcmscl
33      - samsung,exynos7870-cmu-peri
34
35  clocks:
36    minItems: 1
37    maxItems: 10
38
39  clock-names:
40    minItems: 1
41    maxItems: 10
42
43  "#clock-cells":
44    const: 1
45
46  reg:
47    maxItems: 1
48
49required:
50  - compatible
51  - clocks
52  - clock-names
53  - "#clock-cells"
54  - reg
55
56allOf:
57  - if:
58      properties:
59        compatible:
60          contains:
61            const: samsung,exynos7870-cmu-mif
62    then:
63      properties:
64        clocks:
65          items:
66            - description: External reference clock (26 MHz)
67
68        clock-names:
69          items:
70            - const: oscclk
71
72  - if:
73      properties:
74        compatible:
75          contains:
76            const: samsung,exynos7870-cmu-dispaud
77    then:
78      properties:
79        clocks:
80          items:
81            - description: External reference clock (26 MHz)
82            - description: CMU_DISPAUD bus clock (from CMU_MIF)
83            - description: DECON external clock (from CMU_MIF)
84            - description: DECON vertical clock (from CMU_MIF)
85
86        clock-names:
87          items:
88            - const: oscclk
89            - const: bus
90            - const: decon_eclk
91            - const: decon_vclk
92
93  - if:
94      properties:
95        compatible:
96          contains:
97            const: samsung,exynos7870-cmu-fsys
98    then:
99      properties:
100        clocks:
101          items:
102            - description: External reference clock (26 MHz)
103            - description: CMU_FSYS bus clock (from CMU_MIF)
104            - description: USB20DRD clock (from CMU_MIF)
105
106        clock-names:
107          items:
108            - const: oscclk
109            - const: bus
110            - const: usb20drd
111
112  - if:
113      properties:
114        compatible:
115          contains:
116            const: samsung,exynos7870-cmu-g3d
117    then:
118      properties:
119        clocks:
120          items:
121            - description: External reference clock (26 MHz)
122            - description: G3D switch clock (from CMU_MIF)
123
124        clock-names:
125          items:
126            - const: oscclk
127            - const: switch
128
129  - if:
130      properties:
131        compatible:
132          contains:
133            const: samsung,exynos7870-cmu-isp
134    then:
135      properties:
136        clocks:
137          items:
138            - description: External reference clock (26 MHz)
139            - description: ISP camera clock (from CMU_MIF)
140            - description: ISP clock (from CMU_MIF)
141            - description: ISP VRA clock (from CMU_MIF)
142
143        clock-names:
144          items:
145            - const: oscclk
146            - const: cam
147            - const: isp
148            - const: vra
149
150  - if:
151      properties:
152        compatible:
153          contains:
154            const: samsung,exynos7870-cmu-mfcmscl
155    then:
156      properties:
157        clocks:
158          items:
159            - description: External reference clock (26 MHz)
160            - description: MSCL clock (from CMU_MIF)
161            - description: MFC clock (from CMU_MIF)
162
163        clock-names:
164          items:
165            - const: oscclk
166            - const: mfc
167            - const: mscl
168
169  - if:
170      properties:
171        compatible:
172          contains:
173            const: samsung,exynos7870-cmu-peri
174    then:
175      properties:
176        clocks:
177          items:
178            - description: External reference clock (26 MHz)
179            - description: CMU_PERI bus clock (from CMU_MIF)
180            - description: SPI0 clock (from CMU_MIF)
181            - description: SPI1 clock (from CMU_MIF)
182            - description: SPI2 clock (from CMU_MIF)
183            - description: SPI3 clock (from CMU_MIF)
184            - description: SPI4 clock (from CMU_MIF)
185            - description: UART0 clock (from CMU_MIF)
186            - description: UART1 clock (from CMU_MIF)
187            - description: UART2 clock (from CMU_MIF)
188
189        clock-names:
190          items:
191            - const: oscclk
192            - const: bus
193            - const: spi0
194            - const: spi1
195            - const: spi2
196            - const: spi3
197            - const: spi4
198            - const: uart0
199            - const: uart1
200            - const: uart2
201
202additionalProperties: false
203
204examples:
205  - |
206    #include <dt-bindings/clock/samsung,exynos7870-cmu.h>
207
208    cmu_peri: clock-controller@101f0000 {
209      compatible = "samsung,exynos7870-cmu-peri";
210      reg = <0x101f0000 0x1000>;
211      #clock-cells = <1>;
212
213      clock-names = "oscclk", "bus", "spi0", "spi1", "spi2",
214                    "spi3", "spi4", "uart0", "uart1", "uart2";
215      clocks = <&oscclk>,
216               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_BUS>,
217               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI0>,
218               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI1>,
219               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI2>,
220               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI3>,
221               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI4>,
222               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_UART0>,
223               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_UART1>,
224               <&cmu_mif CLK_GOUT_MIF_CMU_PERI_UART2>;
225    };
226
227...
228