xref: /freebsd/sys/contrib/device-tree/Bindings/clock/samsung,exynosautov920-clock.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
1*b2d2a78aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*b2d2a78aSEmmanuel Vadot%YAML 1.2
3*b2d2a78aSEmmanuel Vadot---
4*b2d2a78aSEmmanuel Vadot$id: http://devicetree.org/schemas/clock/samsung,exynosautov920-clock.yaml#
5*b2d2a78aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*b2d2a78aSEmmanuel Vadot
7*b2d2a78aSEmmanuel Vadottitle: Samsung ExynosAuto v920 SoC clock controller
8*b2d2a78aSEmmanuel Vadot
9*b2d2a78aSEmmanuel Vadotmaintainers:
10*b2d2a78aSEmmanuel Vadot  - Sunyeal Hong <sunyeal.hong@samsung.com>
11*b2d2a78aSEmmanuel Vadot  - Chanwoo Choi <cw00.choi@samsung.com>
12*b2d2a78aSEmmanuel Vadot  - Krzysztof Kozlowski <krzk@kernel.org>
13*b2d2a78aSEmmanuel Vadot  - Sylwester Nawrocki <s.nawrocki@samsung.com>
14*b2d2a78aSEmmanuel Vadot
15*b2d2a78aSEmmanuel Vadotdescription: |
16*b2d2a78aSEmmanuel Vadot  ExynosAuto v920 clock controller is comprised of several CMU units, generating
17*b2d2a78aSEmmanuel Vadot  clocks for different domains. Those CMU units are modeled as separate device
18*b2d2a78aSEmmanuel Vadot  tree nodes, and might depend on each other. Root clocks in that clock tree are
19*b2d2a78aSEmmanuel Vadot  two external clocks:: OSCCLK/XTCXO (38.4 MHz) and RTCCLK/XrtcXTI (32768 Hz).
20*b2d2a78aSEmmanuel Vadot  The external OSCCLK must be defined as fixed-rate clock in dts.
21*b2d2a78aSEmmanuel Vadot
22*b2d2a78aSEmmanuel Vadot  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
23*b2d2a78aSEmmanuel Vadot  dividers; all other clocks of function blocks (other CMUs) are usually
24*b2d2a78aSEmmanuel Vadot  derived from CMU_TOP.
25*b2d2a78aSEmmanuel Vadot
26*b2d2a78aSEmmanuel Vadot  Each clock is assigned an identifier and client nodes can use this identifier
27*b2d2a78aSEmmanuel Vadot  to specify the clock which they consume. All clocks available for usage
28*b2d2a78aSEmmanuel Vadot  in clock consumer nodes are defined as preprocessor macros in
29*b2d2a78aSEmmanuel Vadot  'include/dt-bindings/clock/samsung,exynosautov920.h' header.
30*b2d2a78aSEmmanuel Vadot
31*b2d2a78aSEmmanuel Vadotproperties:
32*b2d2a78aSEmmanuel Vadot  compatible:
33*b2d2a78aSEmmanuel Vadot    enum:
34*b2d2a78aSEmmanuel Vadot      - samsung,exynosautov920-cmu-top
35*b2d2a78aSEmmanuel Vadot      - samsung,exynosautov920-cmu-peric0
36*b2d2a78aSEmmanuel Vadot      - samsung,exynosautov920-cmu-peric1
37*b2d2a78aSEmmanuel Vadot      - samsung,exynosautov920-cmu-misc
38*b2d2a78aSEmmanuel Vadot      - samsung,exynosautov920-cmu-hsi0
39*b2d2a78aSEmmanuel Vadot      - samsung,exynosautov920-cmu-hsi1
40*b2d2a78aSEmmanuel Vadot
41*b2d2a78aSEmmanuel Vadot  clocks:
42*b2d2a78aSEmmanuel Vadot    minItems: 1
43*b2d2a78aSEmmanuel Vadot    maxItems: 4
44*b2d2a78aSEmmanuel Vadot
45*b2d2a78aSEmmanuel Vadot  clock-names:
46*b2d2a78aSEmmanuel Vadot    minItems: 1
47*b2d2a78aSEmmanuel Vadot    maxItems: 4
48*b2d2a78aSEmmanuel Vadot
49*b2d2a78aSEmmanuel Vadot  "#clock-cells":
50*b2d2a78aSEmmanuel Vadot    const: 1
51*b2d2a78aSEmmanuel Vadot
52*b2d2a78aSEmmanuel Vadot  reg:
53*b2d2a78aSEmmanuel Vadot    maxItems: 1
54*b2d2a78aSEmmanuel Vadot
55*b2d2a78aSEmmanuel VadotallOf:
56*b2d2a78aSEmmanuel Vadot  - if:
57*b2d2a78aSEmmanuel Vadot      properties:
58*b2d2a78aSEmmanuel Vadot        compatible:
59*b2d2a78aSEmmanuel Vadot          contains:
60*b2d2a78aSEmmanuel Vadot            const: samsung,exynosautov920-cmu-top
61*b2d2a78aSEmmanuel Vadot
62*b2d2a78aSEmmanuel Vadot    then:
63*b2d2a78aSEmmanuel Vadot      properties:
64*b2d2a78aSEmmanuel Vadot        clocks:
65*b2d2a78aSEmmanuel Vadot          items:
66*b2d2a78aSEmmanuel Vadot            - description: External reference clock (38.4 MHz)
67*b2d2a78aSEmmanuel Vadot
68*b2d2a78aSEmmanuel Vadot        clock-names:
69*b2d2a78aSEmmanuel Vadot          items:
70*b2d2a78aSEmmanuel Vadot            - const: oscclk
71*b2d2a78aSEmmanuel Vadot
72*b2d2a78aSEmmanuel Vadot  - if:
73*b2d2a78aSEmmanuel Vadot      properties:
74*b2d2a78aSEmmanuel Vadot        compatible:
75*b2d2a78aSEmmanuel Vadot          contains:
76*b2d2a78aSEmmanuel Vadot            enum:
77*b2d2a78aSEmmanuel Vadot              - samsung,exynosautov920-cmu-peric0
78*b2d2a78aSEmmanuel Vadot              - samsung,exynosautov920-cmu-peric1
79*b2d2a78aSEmmanuel Vadot
80*b2d2a78aSEmmanuel Vadot    then:
81*b2d2a78aSEmmanuel Vadot      properties:
82*b2d2a78aSEmmanuel Vadot        clocks:
83*b2d2a78aSEmmanuel Vadot          items:
84*b2d2a78aSEmmanuel Vadot            - description: External reference clock (38.4 MHz)
85*b2d2a78aSEmmanuel Vadot            - description: CMU_PERICn NOC clock (from CMU_TOP)
86*b2d2a78aSEmmanuel Vadot            - description: CMU_PERICn IP clock (from CMU_TOP)
87*b2d2a78aSEmmanuel Vadot
88*b2d2a78aSEmmanuel Vadot        clock-names:
89*b2d2a78aSEmmanuel Vadot          items:
90*b2d2a78aSEmmanuel Vadot            - const: oscclk
91*b2d2a78aSEmmanuel Vadot            - const: noc
92*b2d2a78aSEmmanuel Vadot            - const: ip
93*b2d2a78aSEmmanuel Vadot
94*b2d2a78aSEmmanuel Vadot  - if:
95*b2d2a78aSEmmanuel Vadot      properties:
96*b2d2a78aSEmmanuel Vadot        compatible:
97*b2d2a78aSEmmanuel Vadot          enum:
98*b2d2a78aSEmmanuel Vadot            - samsung,exynosautov920-cmu-misc
99*b2d2a78aSEmmanuel Vadot            - samsung,exynosautov920-cmu-hsi0
100*b2d2a78aSEmmanuel Vadot
101*b2d2a78aSEmmanuel Vadot    then:
102*b2d2a78aSEmmanuel Vadot      properties:
103*b2d2a78aSEmmanuel Vadot        clocks:
104*b2d2a78aSEmmanuel Vadot          items:
105*b2d2a78aSEmmanuel Vadot            - description: External reference clock (38.4 MHz)
106*b2d2a78aSEmmanuel Vadot            - description: CMU_MISC/CMU_HSI0 NOC clock (from CMU_TOP)
107*b2d2a78aSEmmanuel Vadot
108*b2d2a78aSEmmanuel Vadot        clock-names:
109*b2d2a78aSEmmanuel Vadot          items:
110*b2d2a78aSEmmanuel Vadot            - const: oscclk
111*b2d2a78aSEmmanuel Vadot            - const: noc
112*b2d2a78aSEmmanuel Vadot
113*b2d2a78aSEmmanuel Vadot  - if:
114*b2d2a78aSEmmanuel Vadot      properties:
115*b2d2a78aSEmmanuel Vadot        compatible:
116*b2d2a78aSEmmanuel Vadot          contains:
117*b2d2a78aSEmmanuel Vadot            const: samsung,exynosautov920-cmu-hsi1
118*b2d2a78aSEmmanuel Vadot
119*b2d2a78aSEmmanuel Vadot    then:
120*b2d2a78aSEmmanuel Vadot      properties:
121*b2d2a78aSEmmanuel Vadot        clocks:
122*b2d2a78aSEmmanuel Vadot          items:
123*b2d2a78aSEmmanuel Vadot            - description: External reference clock (38.4 MHz)
124*b2d2a78aSEmmanuel Vadot            - description: CMU_HSI1 NOC clock (from CMU_TOP)
125*b2d2a78aSEmmanuel Vadot            - description: CMU_HSI1 USBDRD clock (from CMU_TOP)
126*b2d2a78aSEmmanuel Vadot            - description: CMU_HSI1 MMC_CARD clock (from CMU_TOP)
127*b2d2a78aSEmmanuel Vadot
128*b2d2a78aSEmmanuel Vadot        clock-names:
129*b2d2a78aSEmmanuel Vadot          items:
130*b2d2a78aSEmmanuel Vadot            - const: oscclk
131*b2d2a78aSEmmanuel Vadot            - const: noc
132*b2d2a78aSEmmanuel Vadot            - const: usbdrd
133*b2d2a78aSEmmanuel Vadot            - const: mmc_card
134*b2d2a78aSEmmanuel Vadot
135*b2d2a78aSEmmanuel Vadotrequired:
136*b2d2a78aSEmmanuel Vadot  - compatible
137*b2d2a78aSEmmanuel Vadot  - "#clock-cells"
138*b2d2a78aSEmmanuel Vadot  - clocks
139*b2d2a78aSEmmanuel Vadot  - clock-names
140*b2d2a78aSEmmanuel Vadot  - reg
141*b2d2a78aSEmmanuel Vadot
142*b2d2a78aSEmmanuel VadotadditionalProperties: false
143*b2d2a78aSEmmanuel Vadot
144*b2d2a78aSEmmanuel Vadotexamples:
145*b2d2a78aSEmmanuel Vadot  # Clock controller node for CMU_PERIC0
146*b2d2a78aSEmmanuel Vadot  - |
147*b2d2a78aSEmmanuel Vadot    #include <dt-bindings/clock/samsung,exynosautov920.h>
148*b2d2a78aSEmmanuel Vadot
149*b2d2a78aSEmmanuel Vadot    cmu_peric0: clock-controller@10800000 {
150*b2d2a78aSEmmanuel Vadot        compatible = "samsung,exynosautov920-cmu-peric0";
151*b2d2a78aSEmmanuel Vadot        reg = <0x10800000 0x8000>;
152*b2d2a78aSEmmanuel Vadot        #clock-cells = <1>;
153*b2d2a78aSEmmanuel Vadot
154*b2d2a78aSEmmanuel Vadot        clocks = <&xtcxo>,
155*b2d2a78aSEmmanuel Vadot                 <&cmu_top DOUT_CLKCMU_PERIC0_NOC>,
156*b2d2a78aSEmmanuel Vadot                 <&cmu_top DOUT_CLKCMU_PERIC0_IP>;
157*b2d2a78aSEmmanuel Vadot        clock-names = "oscclk",
158*b2d2a78aSEmmanuel Vadot                      "noc",
159*b2d2a78aSEmmanuel Vadot                      "ip";
160*b2d2a78aSEmmanuel Vadot    };
161*b2d2a78aSEmmanuel Vadot
162*b2d2a78aSEmmanuel Vadot...
163