1*69ed3df4SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*69ed3df4SEmmanuel Vadot%YAML 1.2 3*69ed3df4SEmmanuel Vadot--- 4*69ed3df4SEmmanuel Vadot$id: http://devicetree.org/schemas/clock/axis,artpec9-clock.yaml# 5*69ed3df4SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*69ed3df4SEmmanuel Vadot 7*69ed3df4SEmmanuel Vadottitle: Axis ARTPEC-9 SoC clock controller 8*69ed3df4SEmmanuel Vadot 9*69ed3df4SEmmanuel Vadotmaintainers: 10*69ed3df4SEmmanuel Vadot - Jesper Nilsson <jesper.nilsson@axis.com> 11*69ed3df4SEmmanuel Vadot 12*69ed3df4SEmmanuel Vadotdescription: | 13*69ed3df4SEmmanuel Vadot ARTPEC-9 clock controller is comprised of several CMU (Clock Management Unit) 14*69ed3df4SEmmanuel Vadot units, generating clocks for different domains. Those CMU units are modeled 15*69ed3df4SEmmanuel Vadot as separate device tree nodes, and might depend on each other. 16*69ed3df4SEmmanuel Vadot The root clock in that root tree is an external clock: OSCCLK (25 MHz). 17*69ed3df4SEmmanuel Vadot This external clock must be defined as a fixed-rate clock in dts. 18*69ed3df4SEmmanuel Vadot 19*69ed3df4SEmmanuel Vadot CMU_CMU is a top-level CMU, where all base clocks are prepared using PLLs and 20*69ed3df4SEmmanuel Vadot dividers, all other clocks of function blocks (other CMUs) are usually 21*69ed3df4SEmmanuel Vadot derived from CMU_CMU. 22*69ed3df4SEmmanuel Vadot 23*69ed3df4SEmmanuel Vadot Each clock is assigned an identifier and client nodes can use this identifier 24*69ed3df4SEmmanuel Vadot to specify the clock which they consume. All clocks available for usage 25*69ed3df4SEmmanuel Vadot in clock consumer nodes are defined as preprocessor macros in 26*69ed3df4SEmmanuel Vadot 'include/dt-bindings/clock/axis,artpec9-clk.h' header. 27*69ed3df4SEmmanuel Vadot 28*69ed3df4SEmmanuel Vadotproperties: 29*69ed3df4SEmmanuel Vadot compatible: 30*69ed3df4SEmmanuel Vadot enum: 31*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-cmu 32*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-bus 33*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-core 34*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-cpucl 35*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-fsys0 36*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-fsys1 37*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-imem 38*69ed3df4SEmmanuel Vadot - axis,artpec9-cmu-peri 39*69ed3df4SEmmanuel Vadot 40*69ed3df4SEmmanuel Vadot reg: 41*69ed3df4SEmmanuel Vadot maxItems: 1 42*69ed3df4SEmmanuel Vadot 43*69ed3df4SEmmanuel Vadot clocks: 44*69ed3df4SEmmanuel Vadot minItems: 1 45*69ed3df4SEmmanuel Vadot maxItems: 5 46*69ed3df4SEmmanuel Vadot 47*69ed3df4SEmmanuel Vadot clock-names: 48*69ed3df4SEmmanuel Vadot minItems: 1 49*69ed3df4SEmmanuel Vadot maxItems: 5 50*69ed3df4SEmmanuel Vadot 51*69ed3df4SEmmanuel Vadot "#clock-cells": 52*69ed3df4SEmmanuel Vadot const: 1 53*69ed3df4SEmmanuel Vadot 54*69ed3df4SEmmanuel Vadotrequired: 55*69ed3df4SEmmanuel Vadot - compatible 56*69ed3df4SEmmanuel Vadot - reg 57*69ed3df4SEmmanuel Vadot - clocks 58*69ed3df4SEmmanuel Vadot - clock-names 59*69ed3df4SEmmanuel Vadot - "#clock-cells" 60*69ed3df4SEmmanuel Vadot 61*69ed3df4SEmmanuel VadotallOf: 62*69ed3df4SEmmanuel Vadot - if: 63*69ed3df4SEmmanuel Vadot properties: 64*69ed3df4SEmmanuel Vadot compatible: 65*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-cmu 66*69ed3df4SEmmanuel Vadot 67*69ed3df4SEmmanuel Vadot then: 68*69ed3df4SEmmanuel Vadot properties: 69*69ed3df4SEmmanuel Vadot clocks: 70*69ed3df4SEmmanuel Vadot items: 71*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 72*69ed3df4SEmmanuel Vadot 73*69ed3df4SEmmanuel Vadot clock-names: 74*69ed3df4SEmmanuel Vadot items: 75*69ed3df4SEmmanuel Vadot - const: fin_pll 76*69ed3df4SEmmanuel Vadot 77*69ed3df4SEmmanuel Vadot - if: 78*69ed3df4SEmmanuel Vadot properties: 79*69ed3df4SEmmanuel Vadot compatible: 80*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-bus 81*69ed3df4SEmmanuel Vadot 82*69ed3df4SEmmanuel Vadot then: 83*69ed3df4SEmmanuel Vadot properties: 84*69ed3df4SEmmanuel Vadot clocks: 85*69ed3df4SEmmanuel Vadot items: 86*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 87*69ed3df4SEmmanuel Vadot - description: CMU_BUS bus clock (from CMU_CMU) 88*69ed3df4SEmmanuel Vadot 89*69ed3df4SEmmanuel Vadot clock-names: 90*69ed3df4SEmmanuel Vadot items: 91*69ed3df4SEmmanuel Vadot - const: fin_pll 92*69ed3df4SEmmanuel Vadot - const: bus 93*69ed3df4SEmmanuel Vadot 94*69ed3df4SEmmanuel Vadot - if: 95*69ed3df4SEmmanuel Vadot properties: 96*69ed3df4SEmmanuel Vadot compatible: 97*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-core 98*69ed3df4SEmmanuel Vadot 99*69ed3df4SEmmanuel Vadot then: 100*69ed3df4SEmmanuel Vadot properties: 101*69ed3df4SEmmanuel Vadot clocks: 102*69ed3df4SEmmanuel Vadot items: 103*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 104*69ed3df4SEmmanuel Vadot - description: CMU_CORE main clock (from CMU_CMU) 105*69ed3df4SEmmanuel Vadot 106*69ed3df4SEmmanuel Vadot clock-names: 107*69ed3df4SEmmanuel Vadot items: 108*69ed3df4SEmmanuel Vadot - const: fin_pll 109*69ed3df4SEmmanuel Vadot - const: main 110*69ed3df4SEmmanuel Vadot 111*69ed3df4SEmmanuel Vadot - if: 112*69ed3df4SEmmanuel Vadot properties: 113*69ed3df4SEmmanuel Vadot compatible: 114*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-cpucl 115*69ed3df4SEmmanuel Vadot 116*69ed3df4SEmmanuel Vadot then: 117*69ed3df4SEmmanuel Vadot properties: 118*69ed3df4SEmmanuel Vadot clocks: 119*69ed3df4SEmmanuel Vadot items: 120*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 121*69ed3df4SEmmanuel Vadot - description: CMU_CPUCL switch clock (from CMU_CMU) 122*69ed3df4SEmmanuel Vadot 123*69ed3df4SEmmanuel Vadot clock-names: 124*69ed3df4SEmmanuel Vadot items: 125*69ed3df4SEmmanuel Vadot - const: fin_pll 126*69ed3df4SEmmanuel Vadot - const: switch 127*69ed3df4SEmmanuel Vadot 128*69ed3df4SEmmanuel Vadot - if: 129*69ed3df4SEmmanuel Vadot properties: 130*69ed3df4SEmmanuel Vadot compatible: 131*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-fsys0 132*69ed3df4SEmmanuel Vadot 133*69ed3df4SEmmanuel Vadot then: 134*69ed3df4SEmmanuel Vadot properties: 135*69ed3df4SEmmanuel Vadot clocks: 136*69ed3df4SEmmanuel Vadot items: 137*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 138*69ed3df4SEmmanuel Vadot - description: CMU_FSYS0 bus clock (from CMU_CMU) 139*69ed3df4SEmmanuel Vadot - description: CMU_FSYS0 IP clock (from CMU_CMU) 140*69ed3df4SEmmanuel Vadot 141*69ed3df4SEmmanuel Vadot clock-names: 142*69ed3df4SEmmanuel Vadot items: 143*69ed3df4SEmmanuel Vadot - const: fin_pll 144*69ed3df4SEmmanuel Vadot - const: bus 145*69ed3df4SEmmanuel Vadot - const: ip 146*69ed3df4SEmmanuel Vadot 147*69ed3df4SEmmanuel Vadot - if: 148*69ed3df4SEmmanuel Vadot properties: 149*69ed3df4SEmmanuel Vadot compatible: 150*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-fsys1 151*69ed3df4SEmmanuel Vadot 152*69ed3df4SEmmanuel Vadot then: 153*69ed3df4SEmmanuel Vadot properties: 154*69ed3df4SEmmanuel Vadot clocks: 155*69ed3df4SEmmanuel Vadot items: 156*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 157*69ed3df4SEmmanuel Vadot - description: CMU_FSYS1 scan0 clock (from CMU_CMU) 158*69ed3df4SEmmanuel Vadot - description: CMU_FSYS1 scan1 clock (from CMU_CMU) 159*69ed3df4SEmmanuel Vadot - description: CMU_FSYS1 bus clock (from CMU_CMU) 160*69ed3df4SEmmanuel Vadot 161*69ed3df4SEmmanuel Vadot clock-names: 162*69ed3df4SEmmanuel Vadot items: 163*69ed3df4SEmmanuel Vadot - const: fin_pll 164*69ed3df4SEmmanuel Vadot - const: scan0 165*69ed3df4SEmmanuel Vadot - const: scan1 166*69ed3df4SEmmanuel Vadot - const: bus 167*69ed3df4SEmmanuel Vadot 168*69ed3df4SEmmanuel Vadot - if: 169*69ed3df4SEmmanuel Vadot properties: 170*69ed3df4SEmmanuel Vadot compatible: 171*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-imem 172*69ed3df4SEmmanuel Vadot 173*69ed3df4SEmmanuel Vadot then: 174*69ed3df4SEmmanuel Vadot properties: 175*69ed3df4SEmmanuel Vadot clocks: 176*69ed3df4SEmmanuel Vadot items: 177*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 178*69ed3df4SEmmanuel Vadot - description: CMU_IMEM ACLK clock (from CMU_CMU) 179*69ed3df4SEmmanuel Vadot - description: CMU_IMEM CA5 clock (from CMU_CMU) 180*69ed3df4SEmmanuel Vadot - description: CMU_IMEM JPEG clock (from CMU_CMU) 181*69ed3df4SEmmanuel Vadot - description: CMU_IMEM SSS clock (from CMU_CMU) 182*69ed3df4SEmmanuel Vadot 183*69ed3df4SEmmanuel Vadot clock-names: 184*69ed3df4SEmmanuel Vadot items: 185*69ed3df4SEmmanuel Vadot - const: fin_pll 186*69ed3df4SEmmanuel Vadot - const: aclk 187*69ed3df4SEmmanuel Vadot - const: ca5 188*69ed3df4SEmmanuel Vadot - const: jpeg 189*69ed3df4SEmmanuel Vadot - const: sss 190*69ed3df4SEmmanuel Vadot 191*69ed3df4SEmmanuel Vadot - if: 192*69ed3df4SEmmanuel Vadot properties: 193*69ed3df4SEmmanuel Vadot compatible: 194*69ed3df4SEmmanuel Vadot const: axis,artpec9-cmu-peri 195*69ed3df4SEmmanuel Vadot 196*69ed3df4SEmmanuel Vadot then: 197*69ed3df4SEmmanuel Vadot properties: 198*69ed3df4SEmmanuel Vadot clocks: 199*69ed3df4SEmmanuel Vadot items: 200*69ed3df4SEmmanuel Vadot - description: External reference clock (25 MHz) 201*69ed3df4SEmmanuel Vadot - description: CMU_PERI IP clock (from CMU_CMU) 202*69ed3df4SEmmanuel Vadot - description: CMU_PERI DISP clock (from CMU_CMU) 203*69ed3df4SEmmanuel Vadot 204*69ed3df4SEmmanuel Vadot clock-names: 205*69ed3df4SEmmanuel Vadot items: 206*69ed3df4SEmmanuel Vadot - const: fin_pll 207*69ed3df4SEmmanuel Vadot - const: ip 208*69ed3df4SEmmanuel Vadot - const: disp 209*69ed3df4SEmmanuel Vadot 210*69ed3df4SEmmanuel VadotadditionalProperties: false 211*69ed3df4SEmmanuel Vadot 212*69ed3df4SEmmanuel Vadotexamples: 213*69ed3df4SEmmanuel Vadot # Clock controller node for CMU_FSYS1 214*69ed3df4SEmmanuel Vadot - | 215*69ed3df4SEmmanuel Vadot #include <dt-bindings/clock/axis,artpec9-clk.h> 216*69ed3df4SEmmanuel Vadot 217*69ed3df4SEmmanuel Vadot soc { 218*69ed3df4SEmmanuel Vadot #address-cells = <2>; 219*69ed3df4SEmmanuel Vadot #size-cells = <2>; 220*69ed3df4SEmmanuel Vadot 221*69ed3df4SEmmanuel Vadot cmu_fsys1: clock-controller@14c10000 { 222*69ed3df4SEmmanuel Vadot compatible = "axis,artpec9-cmu-fsys1"; 223*69ed3df4SEmmanuel Vadot reg = <0x0 0x14c10000 0x0 0x4000>; 224*69ed3df4SEmmanuel Vadot #clock-cells = <1>; 225*69ed3df4SEmmanuel Vadot clocks = <&fin_pll>, 226*69ed3df4SEmmanuel Vadot <&cmu_cmu CLK_DOUT_CMU_FSYS1_SCAN0>, 227*69ed3df4SEmmanuel Vadot <&cmu_cmu CLK_DOUT_CMU_FSYS1_SCAN1>, 228*69ed3df4SEmmanuel Vadot <&cmu_cmu CLK_DOUT_CMU_FSYS1_BUS>; 229*69ed3df4SEmmanuel Vadot clock-names = "fin_pll", "scan0", "scan1", "bus"; 230*69ed3df4SEmmanuel Vadot }; 231*69ed3df4SEmmanuel Vadot }; 232*69ed3df4SEmmanuel Vadot... 233