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