xref: /freebsd/sys/contrib/device-tree/Bindings/clock/google,gs101-clock.yaml (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1*8d13bc63SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*8d13bc63SEmmanuel Vadot%YAML 1.2
3*8d13bc63SEmmanuel Vadot---
4*8d13bc63SEmmanuel Vadot$id: http://devicetree.org/schemas/clock/google,gs101-clock.yaml#
5*8d13bc63SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*8d13bc63SEmmanuel Vadot
7*8d13bc63SEmmanuel Vadottitle: Google GS101 SoC clock controller
8*8d13bc63SEmmanuel Vadot
9*8d13bc63SEmmanuel Vadotmaintainers:
10*8d13bc63SEmmanuel Vadot  - Peter Griffin <peter.griffin@linaro.org>
11*8d13bc63SEmmanuel Vadot
12*8d13bc63SEmmanuel Vadotdescription: |
13*8d13bc63SEmmanuel Vadot  Google GS101 clock controller is comprised of several CMU units, generating
14*8d13bc63SEmmanuel Vadot  clocks for different domains. Those CMU units are modeled as separate device
15*8d13bc63SEmmanuel Vadot  tree nodes, and might depend on each other. The root clock in that clock tree
16*8d13bc63SEmmanuel Vadot  is OSCCLK (24.576 MHz). That external clock must be defined as a fixed-rate
17*8d13bc63SEmmanuel Vadot  clock in dts.
18*8d13bc63SEmmanuel Vadot
19*8d13bc63SEmmanuel Vadot  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
20*8d13bc63SEmmanuel Vadot  dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
21*8d13bc63SEmmanuel Vadot
22*8d13bc63SEmmanuel Vadot  Each clock is assigned an identifier and client nodes can use this identifier
23*8d13bc63SEmmanuel Vadot  to specify the clock which they consume. All clocks available for usage
24*8d13bc63SEmmanuel Vadot  in clock consumer nodes are defined as preprocessor macros in
25*8d13bc63SEmmanuel Vadot  'dt-bindings/clock/gs101.h' header.
26*8d13bc63SEmmanuel Vadot
27*8d13bc63SEmmanuel Vadotproperties:
28*8d13bc63SEmmanuel Vadot  compatible:
29*8d13bc63SEmmanuel Vadot    enum:
30*8d13bc63SEmmanuel Vadot      - google,gs101-cmu-top
31*8d13bc63SEmmanuel Vadot      - google,gs101-cmu-apm
32*8d13bc63SEmmanuel Vadot      - google,gs101-cmu-misc
33*8d13bc63SEmmanuel Vadot
34*8d13bc63SEmmanuel Vadot  clocks:
35*8d13bc63SEmmanuel Vadot    minItems: 1
36*8d13bc63SEmmanuel Vadot    maxItems: 2
37*8d13bc63SEmmanuel Vadot
38*8d13bc63SEmmanuel Vadot  clock-names:
39*8d13bc63SEmmanuel Vadot    minItems: 1
40*8d13bc63SEmmanuel Vadot    maxItems: 2
41*8d13bc63SEmmanuel Vadot
42*8d13bc63SEmmanuel Vadot  "#clock-cells":
43*8d13bc63SEmmanuel Vadot    const: 1
44*8d13bc63SEmmanuel Vadot
45*8d13bc63SEmmanuel Vadot  reg:
46*8d13bc63SEmmanuel Vadot    maxItems: 1
47*8d13bc63SEmmanuel Vadot
48*8d13bc63SEmmanuel Vadotrequired:
49*8d13bc63SEmmanuel Vadot  - compatible
50*8d13bc63SEmmanuel Vadot  - "#clock-cells"
51*8d13bc63SEmmanuel Vadot  - clocks
52*8d13bc63SEmmanuel Vadot  - clock-names
53*8d13bc63SEmmanuel Vadot  - reg
54*8d13bc63SEmmanuel Vadot
55*8d13bc63SEmmanuel VadotallOf:
56*8d13bc63SEmmanuel Vadot  - if:
57*8d13bc63SEmmanuel Vadot      properties:
58*8d13bc63SEmmanuel Vadot        compatible:
59*8d13bc63SEmmanuel Vadot          contains:
60*8d13bc63SEmmanuel Vadot            enum:
61*8d13bc63SEmmanuel Vadot              - google,gs101-cmu-top
62*8d13bc63SEmmanuel Vadot              - google,gs101-cmu-apm
63*8d13bc63SEmmanuel Vadot    then:
64*8d13bc63SEmmanuel Vadot      properties:
65*8d13bc63SEmmanuel Vadot        clocks:
66*8d13bc63SEmmanuel Vadot          items:
67*8d13bc63SEmmanuel Vadot            - description: External reference clock (24.576 MHz)
68*8d13bc63SEmmanuel Vadot
69*8d13bc63SEmmanuel Vadot        clock-names:
70*8d13bc63SEmmanuel Vadot          items:
71*8d13bc63SEmmanuel Vadot            - const: oscclk
72*8d13bc63SEmmanuel Vadot
73*8d13bc63SEmmanuel Vadot  - if:
74*8d13bc63SEmmanuel Vadot      properties:
75*8d13bc63SEmmanuel Vadot        compatible:
76*8d13bc63SEmmanuel Vadot          contains:
77*8d13bc63SEmmanuel Vadot            const: google,gs101-cmu-misc
78*8d13bc63SEmmanuel Vadot
79*8d13bc63SEmmanuel Vadot    then:
80*8d13bc63SEmmanuel Vadot      properties:
81*8d13bc63SEmmanuel Vadot        clocks:
82*8d13bc63SEmmanuel Vadot          items:
83*8d13bc63SEmmanuel Vadot            - description: Misc bus clock (from CMU_TOP)
84*8d13bc63SEmmanuel Vadot            - description: Misc sss clock (from CMU_TOP)
85*8d13bc63SEmmanuel Vadot
86*8d13bc63SEmmanuel Vadot        clock-names:
87*8d13bc63SEmmanuel Vadot          items:
88*8d13bc63SEmmanuel Vadot            - const: bus
89*8d13bc63SEmmanuel Vadot            - const: sss
90*8d13bc63SEmmanuel Vadot
91*8d13bc63SEmmanuel VadotadditionalProperties: false
92*8d13bc63SEmmanuel Vadot
93*8d13bc63SEmmanuel Vadotexamples:
94*8d13bc63SEmmanuel Vadot  # Clock controller node for CMU_TOP
95*8d13bc63SEmmanuel Vadot  - |
96*8d13bc63SEmmanuel Vadot    #include <dt-bindings/clock/google,gs101.h>
97*8d13bc63SEmmanuel Vadot
98*8d13bc63SEmmanuel Vadot    cmu_top: clock-controller@1e080000 {
99*8d13bc63SEmmanuel Vadot        compatible = "google,gs101-cmu-top";
100*8d13bc63SEmmanuel Vadot        reg = <0x1e080000 0x8000>;
101*8d13bc63SEmmanuel Vadot        #clock-cells = <1>;
102*8d13bc63SEmmanuel Vadot        clocks = <&ext_24_5m>;
103*8d13bc63SEmmanuel Vadot        clock-names = "oscclk";
104*8d13bc63SEmmanuel Vadot    };
105*8d13bc63SEmmanuel Vadot
106*8d13bc63SEmmanuel Vadot...
107