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