xref: /freebsd/sys/contrib/device-tree/Bindings/clock/google,gs101-clock.yaml (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
18d13bc63SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28d13bc63SEmmanuel Vadot%YAML 1.2
38d13bc63SEmmanuel Vadot---
48d13bc63SEmmanuel Vadot$id: http://devicetree.org/schemas/clock/google,gs101-clock.yaml#
58d13bc63SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68d13bc63SEmmanuel Vadot
78d13bc63SEmmanuel Vadottitle: Google GS101 SoC clock controller
88d13bc63SEmmanuel Vadot
98d13bc63SEmmanuel Vadotmaintainers:
108d13bc63SEmmanuel Vadot  - Peter Griffin <peter.griffin@linaro.org>
118d13bc63SEmmanuel Vadot
128d13bc63SEmmanuel Vadotdescription: |
138d13bc63SEmmanuel Vadot  Google GS101 clock controller is comprised of several CMU units, generating
148d13bc63SEmmanuel Vadot  clocks for different domains. Those CMU units are modeled as separate device
158d13bc63SEmmanuel Vadot  tree nodes, and might depend on each other. The root clock in that clock tree
168d13bc63SEmmanuel Vadot  is OSCCLK (24.576 MHz). That external clock must be defined as a fixed-rate
178d13bc63SEmmanuel Vadot  clock in dts.
188d13bc63SEmmanuel Vadot
198d13bc63SEmmanuel Vadot  CMU_TOP is a top-level CMU, where all base clocks are prepared using PLLs and
208d13bc63SEmmanuel Vadot  dividers; all other leaf clocks (other CMUs) are usually derived from CMU_TOP.
218d13bc63SEmmanuel Vadot
228d13bc63SEmmanuel Vadot  Each clock is assigned an identifier and client nodes can use this identifier
238d13bc63SEmmanuel Vadot  to specify the clock which they consume. All clocks available for usage
248d13bc63SEmmanuel Vadot  in clock consumer nodes are defined as preprocessor macros in
258d13bc63SEmmanuel Vadot  'dt-bindings/clock/gs101.h' header.
268d13bc63SEmmanuel Vadot
278d13bc63SEmmanuel Vadotproperties:
288d13bc63SEmmanuel Vadot  compatible:
298d13bc63SEmmanuel Vadot    enum:
308d13bc63SEmmanuel Vadot      - google,gs101-cmu-top
318d13bc63SEmmanuel Vadot      - google,gs101-cmu-apm
328d13bc63SEmmanuel Vadot      - google,gs101-cmu-misc
33*7d0873ebSEmmanuel Vadot      - google,gs101-cmu-hsi0
34*7d0873ebSEmmanuel Vadot      - google,gs101-cmu-hsi2
3501950c46SEmmanuel Vadot      - google,gs101-cmu-peric0
3601950c46SEmmanuel Vadot      - google,gs101-cmu-peric1
378d13bc63SEmmanuel Vadot
388d13bc63SEmmanuel Vadot  clocks:
398d13bc63SEmmanuel Vadot    minItems: 1
40*7d0873ebSEmmanuel Vadot    maxItems: 5
418d13bc63SEmmanuel Vadot
428d13bc63SEmmanuel Vadot  clock-names:
438d13bc63SEmmanuel Vadot    minItems: 1
44*7d0873ebSEmmanuel Vadot    maxItems: 5
458d13bc63SEmmanuel Vadot
468d13bc63SEmmanuel Vadot  "#clock-cells":
478d13bc63SEmmanuel Vadot    const: 1
488d13bc63SEmmanuel Vadot
498d13bc63SEmmanuel Vadot  reg:
508d13bc63SEmmanuel Vadot    maxItems: 1
518d13bc63SEmmanuel Vadot
528d13bc63SEmmanuel Vadotrequired:
538d13bc63SEmmanuel Vadot  - compatible
548d13bc63SEmmanuel Vadot  - "#clock-cells"
558d13bc63SEmmanuel Vadot  - clocks
568d13bc63SEmmanuel Vadot  - clock-names
578d13bc63SEmmanuel Vadot  - reg
588d13bc63SEmmanuel Vadot
598d13bc63SEmmanuel VadotallOf:
608d13bc63SEmmanuel Vadot  - if:
618d13bc63SEmmanuel Vadot      properties:
628d13bc63SEmmanuel Vadot        compatible:
638d13bc63SEmmanuel Vadot          contains:
648d13bc63SEmmanuel Vadot            enum:
658d13bc63SEmmanuel Vadot              - google,gs101-cmu-top
668d13bc63SEmmanuel Vadot              - google,gs101-cmu-apm
678d13bc63SEmmanuel Vadot    then:
688d13bc63SEmmanuel Vadot      properties:
698d13bc63SEmmanuel Vadot        clocks:
708d13bc63SEmmanuel Vadot          items:
718d13bc63SEmmanuel Vadot            - description: External reference clock (24.576 MHz)
728d13bc63SEmmanuel Vadot
738d13bc63SEmmanuel Vadot        clock-names:
748d13bc63SEmmanuel Vadot          items:
758d13bc63SEmmanuel Vadot            - const: oscclk
768d13bc63SEmmanuel Vadot
778d13bc63SEmmanuel Vadot  - if:
788d13bc63SEmmanuel Vadot      properties:
798d13bc63SEmmanuel Vadot        compatible:
808d13bc63SEmmanuel Vadot          contains:
81*7d0873ebSEmmanuel Vadot            const: google,gs101-cmu-hsi0
82*7d0873ebSEmmanuel Vadot
83*7d0873ebSEmmanuel Vadot    then:
84*7d0873ebSEmmanuel Vadot      properties:
85*7d0873ebSEmmanuel Vadot        clocks:
86*7d0873ebSEmmanuel Vadot          items:
87*7d0873ebSEmmanuel Vadot            - description: External reference clock (24.576 MHz)
88*7d0873ebSEmmanuel Vadot            - description: HSI0 bus clock (from CMU_TOP)
89*7d0873ebSEmmanuel Vadot            - description: DPGTC (from CMU_TOP)
90*7d0873ebSEmmanuel Vadot            - description: USB DRD controller clock (from CMU_TOP)
91*7d0873ebSEmmanuel Vadot            - description: USB Display Port debug clock (from CMU_TOP)
92*7d0873ebSEmmanuel Vadot
93*7d0873ebSEmmanuel Vadot        clock-names:
94*7d0873ebSEmmanuel Vadot          items:
95*7d0873ebSEmmanuel Vadot            - const: oscclk
96*7d0873ebSEmmanuel Vadot            - const: bus
97*7d0873ebSEmmanuel Vadot            - const: dpgtc
98*7d0873ebSEmmanuel Vadot            - const: usb31drd
99*7d0873ebSEmmanuel Vadot            - const: usbdpdbg
100*7d0873ebSEmmanuel Vadot
101*7d0873ebSEmmanuel Vadot  - if:
102*7d0873ebSEmmanuel Vadot      properties:
103*7d0873ebSEmmanuel Vadot        compatible:
104*7d0873ebSEmmanuel Vadot          contains:
105*7d0873ebSEmmanuel Vadot            enum:
106*7d0873ebSEmmanuel Vadot              - google,gs101-cmu-hsi2
107*7d0873ebSEmmanuel Vadot
108*7d0873ebSEmmanuel Vadot    then:
109*7d0873ebSEmmanuel Vadot      properties:
110*7d0873ebSEmmanuel Vadot        clocks:
111*7d0873ebSEmmanuel Vadot          items:
112*7d0873ebSEmmanuel Vadot            - description: External reference clock (24.576 MHz)
113*7d0873ebSEmmanuel Vadot            - description: High Speed Interface bus clock (from CMU_TOP)
114*7d0873ebSEmmanuel Vadot            - description: High Speed Interface pcie clock (from CMU_TOP)
115*7d0873ebSEmmanuel Vadot            - description: High Speed Interface ufs clock (from CMU_TOP)
116*7d0873ebSEmmanuel Vadot            - description: High Speed Interface mmc clock (from CMU_TOP)
117*7d0873ebSEmmanuel Vadot
118*7d0873ebSEmmanuel Vadot        clock-names:
119*7d0873ebSEmmanuel Vadot          items:
120*7d0873ebSEmmanuel Vadot            - const: oscclk
121*7d0873ebSEmmanuel Vadot            - const: bus
122*7d0873ebSEmmanuel Vadot            - const: pcie
123*7d0873ebSEmmanuel Vadot            - const: ufs
124*7d0873ebSEmmanuel Vadot            - const: mmc
125*7d0873ebSEmmanuel Vadot
126*7d0873ebSEmmanuel Vadot  - if:
127*7d0873ebSEmmanuel Vadot      properties:
128*7d0873ebSEmmanuel Vadot        compatible:
129*7d0873ebSEmmanuel Vadot          contains:
1308d13bc63SEmmanuel Vadot            const: google,gs101-cmu-misc
1318d13bc63SEmmanuel Vadot
1328d13bc63SEmmanuel Vadot    then:
1338d13bc63SEmmanuel Vadot      properties:
1348d13bc63SEmmanuel Vadot        clocks:
1358d13bc63SEmmanuel Vadot          items:
1368d13bc63SEmmanuel Vadot            - description: Misc bus clock (from CMU_TOP)
1378d13bc63SEmmanuel Vadot            - description: Misc sss clock (from CMU_TOP)
1388d13bc63SEmmanuel Vadot
1398d13bc63SEmmanuel Vadot        clock-names:
1408d13bc63SEmmanuel Vadot          items:
1418d13bc63SEmmanuel Vadot            - const: bus
1428d13bc63SEmmanuel Vadot            - const: sss
1438d13bc63SEmmanuel Vadot
14401950c46SEmmanuel Vadot  - if:
14501950c46SEmmanuel Vadot      properties:
14601950c46SEmmanuel Vadot        compatible:
14701950c46SEmmanuel Vadot          contains:
14801950c46SEmmanuel Vadot            enum:
14901950c46SEmmanuel Vadot              - google,gs101-cmu-peric0
15001950c46SEmmanuel Vadot              - google,gs101-cmu-peric1
15101950c46SEmmanuel Vadot
15201950c46SEmmanuel Vadot    then:
15301950c46SEmmanuel Vadot      properties:
15401950c46SEmmanuel Vadot        clocks:
15501950c46SEmmanuel Vadot          items:
15601950c46SEmmanuel Vadot            - description: External reference clock (24.576 MHz)
15701950c46SEmmanuel Vadot            - description: Connectivity Peripheral 0/1 bus clock (from CMU_TOP)
15801950c46SEmmanuel Vadot            - description: Connectivity Peripheral 0/1 IP clock (from CMU_TOP)
15901950c46SEmmanuel Vadot
16001950c46SEmmanuel Vadot        clock-names:
16101950c46SEmmanuel Vadot          items:
16201950c46SEmmanuel Vadot            - const: oscclk
16301950c46SEmmanuel Vadot            - const: bus
16401950c46SEmmanuel Vadot            - const: ip
16501950c46SEmmanuel Vadot
1668d13bc63SEmmanuel VadotadditionalProperties: false
1678d13bc63SEmmanuel Vadot
1688d13bc63SEmmanuel Vadotexamples:
1698d13bc63SEmmanuel Vadot  # Clock controller node for CMU_TOP
1708d13bc63SEmmanuel Vadot  - |
1718d13bc63SEmmanuel Vadot    #include <dt-bindings/clock/google,gs101.h>
1728d13bc63SEmmanuel Vadot
1738d13bc63SEmmanuel Vadot    cmu_top: clock-controller@1e080000 {
1748d13bc63SEmmanuel Vadot        compatible = "google,gs101-cmu-top";
1758d13bc63SEmmanuel Vadot        reg = <0x1e080000 0x8000>;
1768d13bc63SEmmanuel Vadot        #clock-cells = <1>;
1778d13bc63SEmmanuel Vadot        clocks = <&ext_24_5m>;
1788d13bc63SEmmanuel Vadot        clock-names = "oscclk";
1798d13bc63SEmmanuel Vadot    };
1808d13bc63SEmmanuel Vadot
1818d13bc63SEmmanuel Vadot...
182