1*d5b0e70fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 2*d5b0e70fSEmmanuel Vadot%YAML 1.2 3*d5b0e70fSEmmanuel Vadot--- 4*d5b0e70fSEmmanuel Vadot$id: http://devicetree.org/schemas/clock/rockchip,px30-cru.yaml# 5*d5b0e70fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*d5b0e70fSEmmanuel Vadot 7*d5b0e70fSEmmanuel Vadottitle: Rockchip PX30 Clock and Reset Unit (CRU) 8*d5b0e70fSEmmanuel Vadot 9*d5b0e70fSEmmanuel Vadotmaintainers: 10*d5b0e70fSEmmanuel Vadot - Elaine Zhang <zhangqing@rock-chips.com> 11*d5b0e70fSEmmanuel Vadot - Heiko Stuebner <heiko@sntech.de> 12*d5b0e70fSEmmanuel Vadot 13*d5b0e70fSEmmanuel Vadotdescription: | 14*d5b0e70fSEmmanuel Vadot The PX30 clock controller generates and supplies clocks to various 15*d5b0e70fSEmmanuel Vadot controllers within the SoC and also implements a reset controller for SoC 16*d5b0e70fSEmmanuel Vadot peripherals. 17*d5b0e70fSEmmanuel Vadot Each clock is assigned an identifier and client nodes can use this identifier 18*d5b0e70fSEmmanuel Vadot to specify the clock which they consume. All available clocks are defined as 19*d5b0e70fSEmmanuel Vadot preprocessor macros in the dt-bindings/clock/px30-cru.h headers and can be 20*d5b0e70fSEmmanuel Vadot used in device tree sources. Similar macros exist for the reset sources in 21*d5b0e70fSEmmanuel Vadot these files. 22*d5b0e70fSEmmanuel Vadot There are several clocks that are generated outside the SoC. It is expected 23*d5b0e70fSEmmanuel Vadot that they are defined using standard clock bindings with following 24*d5b0e70fSEmmanuel Vadot clock-output-names: 25*d5b0e70fSEmmanuel Vadot - "xin24m" - crystal input - required 26*d5b0e70fSEmmanuel Vadot - "xin32k" - rtc clock - optional 27*d5b0e70fSEmmanuel Vadot - "i2sx_clkin" - external I2S clock - optional 28*d5b0e70fSEmmanuel Vadot - "gmac_clkin" - external GMAC clock - optional 29*d5b0e70fSEmmanuel Vadot 30*d5b0e70fSEmmanuel Vadotproperties: 31*d5b0e70fSEmmanuel Vadot compatible: 32*d5b0e70fSEmmanuel Vadot enum: 33*d5b0e70fSEmmanuel Vadot - rockchip,px30-cru 34*d5b0e70fSEmmanuel Vadot - rockchip,px30-pmucru 35*d5b0e70fSEmmanuel Vadot 36*d5b0e70fSEmmanuel Vadot reg: 37*d5b0e70fSEmmanuel Vadot maxItems: 1 38*d5b0e70fSEmmanuel Vadot 39*d5b0e70fSEmmanuel Vadot "#clock-cells": 40*d5b0e70fSEmmanuel Vadot const: 1 41*d5b0e70fSEmmanuel Vadot 42*d5b0e70fSEmmanuel Vadot "#reset-cells": 43*d5b0e70fSEmmanuel Vadot const: 1 44*d5b0e70fSEmmanuel Vadot 45*d5b0e70fSEmmanuel Vadot clocks: 46*d5b0e70fSEmmanuel Vadot minItems: 1 47*d5b0e70fSEmmanuel Vadot items: 48*d5b0e70fSEmmanuel Vadot - description: Clock for both PMUCRU and CRU 49*d5b0e70fSEmmanuel Vadot - description: Clock for CRU (sourced from PMUCRU) 50*d5b0e70fSEmmanuel Vadot 51*d5b0e70fSEmmanuel Vadot clock-names: 52*d5b0e70fSEmmanuel Vadot minItems: 1 53*d5b0e70fSEmmanuel Vadot items: 54*d5b0e70fSEmmanuel Vadot - const: xin24m 55*d5b0e70fSEmmanuel Vadot - const: gpll 56*d5b0e70fSEmmanuel Vadot 57*d5b0e70fSEmmanuel Vadot rockchip,grf: 58*d5b0e70fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/phandle 59*d5b0e70fSEmmanuel Vadot description: 60*d5b0e70fSEmmanuel Vadot Phandle to the syscon managing the "general register files" (GRF), 61*d5b0e70fSEmmanuel Vadot if missing pll rates are not changeable, due to the missing pll 62*d5b0e70fSEmmanuel Vadot lock status. 63*d5b0e70fSEmmanuel Vadot 64*d5b0e70fSEmmanuel Vadotrequired: 65*d5b0e70fSEmmanuel Vadot - compatible 66*d5b0e70fSEmmanuel Vadot - reg 67*d5b0e70fSEmmanuel Vadot - clocks 68*d5b0e70fSEmmanuel Vadot - clock-names 69*d5b0e70fSEmmanuel Vadot - "#clock-cells" 70*d5b0e70fSEmmanuel Vadot - "#reset-cells" 71*d5b0e70fSEmmanuel Vadot 72*d5b0e70fSEmmanuel VadotallOf: 73*d5b0e70fSEmmanuel Vadot - if: 74*d5b0e70fSEmmanuel Vadot properties: 75*d5b0e70fSEmmanuel Vadot compatible: 76*d5b0e70fSEmmanuel Vadot contains: 77*d5b0e70fSEmmanuel Vadot const: rockchip,px30-cru 78*d5b0e70fSEmmanuel Vadot 79*d5b0e70fSEmmanuel Vadot then: 80*d5b0e70fSEmmanuel Vadot properties: 81*d5b0e70fSEmmanuel Vadot clocks: 82*d5b0e70fSEmmanuel Vadot minItems: 2 83*d5b0e70fSEmmanuel Vadot 84*d5b0e70fSEmmanuel Vadot clock-names: 85*d5b0e70fSEmmanuel Vadot minItems: 2 86*d5b0e70fSEmmanuel Vadot 87*d5b0e70fSEmmanuel Vadot else: 88*d5b0e70fSEmmanuel Vadot properties: 89*d5b0e70fSEmmanuel Vadot clocks: 90*d5b0e70fSEmmanuel Vadot maxItems: 1 91*d5b0e70fSEmmanuel Vadot 92*d5b0e70fSEmmanuel Vadot clock-names: 93*d5b0e70fSEmmanuel Vadot maxItems: 1 94*d5b0e70fSEmmanuel Vadot 95*d5b0e70fSEmmanuel VadotadditionalProperties: false 96*d5b0e70fSEmmanuel Vadot 97*d5b0e70fSEmmanuel Vadotexamples: 98*d5b0e70fSEmmanuel Vadot - | 99*d5b0e70fSEmmanuel Vadot #include <dt-bindings/clock/px30-cru.h> 100*d5b0e70fSEmmanuel Vadot 101*d5b0e70fSEmmanuel Vadot pmucru: clock-controller@ff2bc000 { 102*d5b0e70fSEmmanuel Vadot compatible = "rockchip,px30-pmucru"; 103*d5b0e70fSEmmanuel Vadot reg = <0xff2bc000 0x1000>; 104*d5b0e70fSEmmanuel Vadot clocks = <&xin24m>; 105*d5b0e70fSEmmanuel Vadot clock-names = "xin24m"; 106*d5b0e70fSEmmanuel Vadot rockchip,grf = <&grf>; 107*d5b0e70fSEmmanuel Vadot #clock-cells = <1>; 108*d5b0e70fSEmmanuel Vadot #reset-cells = <1>; 109*d5b0e70fSEmmanuel Vadot }; 110*d5b0e70fSEmmanuel Vadot 111*d5b0e70fSEmmanuel Vadot cru: clock-controller@ff2b0000 { 112*d5b0e70fSEmmanuel Vadot compatible = "rockchip,px30-cru"; 113*d5b0e70fSEmmanuel Vadot reg = <0xff2b0000 0x1000>; 114*d5b0e70fSEmmanuel Vadot clocks = <&xin24m>, <&pmucru PLL_GPLL>; 115*d5b0e70fSEmmanuel Vadot clock-names = "xin24m", "gpll"; 116*d5b0e70fSEmmanuel Vadot rockchip,grf = <&grf>; 117*d5b0e70fSEmmanuel Vadot #clock-cells = <1>; 118*d5b0e70fSEmmanuel Vadot #reset-cells = <1>; 119*d5b0e70fSEmmanuel Vadot }; 120