1*c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 2*c66ec88fSEmmanuel Vadot%YAML 1.2 3*c66ec88fSEmmanuel Vadot--- 4*c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/mfd/allwinner,sun6i-a31-prcm.yaml# 5*c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel Vadottitle: Allwinner A31 PRCM Device Tree Bindings 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel Vadotmaintainers: 10*c66ec88fSEmmanuel Vadot - Chen-Yu Tsai <wens@csie.org> 11*c66ec88fSEmmanuel Vadot - Maxime Ripard <mripard@kernel.org> 12*c66ec88fSEmmanuel Vadot 13*c66ec88fSEmmanuel Vadotdeprecated: true 14*c66ec88fSEmmanuel Vadot 15*c66ec88fSEmmanuel Vadotproperties: 16*c66ec88fSEmmanuel Vadot compatible: 17*c66ec88fSEmmanuel Vadot const: allwinner,sun6i-a31-prcm 18*c66ec88fSEmmanuel Vadot 19*c66ec88fSEmmanuel Vadot reg: 20*c66ec88fSEmmanuel Vadot maxItems: 1 21*c66ec88fSEmmanuel Vadot 22*c66ec88fSEmmanuel VadotpatternProperties: 23*c66ec88fSEmmanuel Vadot "^.*_(clk|rst)$": 24*c66ec88fSEmmanuel Vadot type: object 25*c66ec88fSEmmanuel Vadot 26*c66ec88fSEmmanuel Vadot properties: 27*c66ec88fSEmmanuel Vadot compatible: 28*c66ec88fSEmmanuel Vadot enum: 29*c66ec88fSEmmanuel Vadot - allwinner,sun4i-a10-mod0-clk 30*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-apb0-clk 31*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-apb0-gates-clk 32*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-ar100-clk 33*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-clock-reset 34*c66ec88fSEmmanuel Vadot - fixed-factor-clock 35*c66ec88fSEmmanuel Vadot 36*c66ec88fSEmmanuel Vadot allOf: 37*c66ec88fSEmmanuel Vadot - if: 38*c66ec88fSEmmanuel Vadot properties: 39*c66ec88fSEmmanuel Vadot compatible: 40*c66ec88fSEmmanuel Vadot contains: 41*c66ec88fSEmmanuel Vadot const: allwinner,sun6i-a31-apb0-clk 42*c66ec88fSEmmanuel Vadot 43*c66ec88fSEmmanuel Vadot then: 44*c66ec88fSEmmanuel Vadot properties: 45*c66ec88fSEmmanuel Vadot "#clock-cells": 46*c66ec88fSEmmanuel Vadot const: 0 47*c66ec88fSEmmanuel Vadot 48*c66ec88fSEmmanuel Vadot # Already checked in the main schema 49*c66ec88fSEmmanuel Vadot compatible: true 50*c66ec88fSEmmanuel Vadot 51*c66ec88fSEmmanuel Vadot clocks: 52*c66ec88fSEmmanuel Vadot maxItems: 1 53*c66ec88fSEmmanuel Vadot 54*c66ec88fSEmmanuel Vadot clock-output-names: 55*c66ec88fSEmmanuel Vadot maxItems: 1 56*c66ec88fSEmmanuel Vadot 57*c66ec88fSEmmanuel Vadot phandle: true 58*c66ec88fSEmmanuel Vadot 59*c66ec88fSEmmanuel Vadot required: 60*c66ec88fSEmmanuel Vadot - "#clock-cells" 61*c66ec88fSEmmanuel Vadot - compatible 62*c66ec88fSEmmanuel Vadot - clocks 63*c66ec88fSEmmanuel Vadot - clock-output-names 64*c66ec88fSEmmanuel Vadot 65*c66ec88fSEmmanuel Vadot additionalProperties: false 66*c66ec88fSEmmanuel Vadot 67*c66ec88fSEmmanuel Vadot - if: 68*c66ec88fSEmmanuel Vadot properties: 69*c66ec88fSEmmanuel Vadot compatible: 70*c66ec88fSEmmanuel Vadot contains: 71*c66ec88fSEmmanuel Vadot const: allwinner,sun6i-a31-apb0-gates-clk 72*c66ec88fSEmmanuel Vadot 73*c66ec88fSEmmanuel Vadot then: 74*c66ec88fSEmmanuel Vadot properties: 75*c66ec88fSEmmanuel Vadot "#clock-cells": 76*c66ec88fSEmmanuel Vadot const: 1 77*c66ec88fSEmmanuel Vadot description: > 78*c66ec88fSEmmanuel Vadot This additional argument passed to that clock is the 79*c66ec88fSEmmanuel Vadot offset of the bit controlling this particular gate in 80*c66ec88fSEmmanuel Vadot the register. 81*c66ec88fSEmmanuel Vadot 82*c66ec88fSEmmanuel Vadot # Already checked in the main schema 83*c66ec88fSEmmanuel Vadot compatible: true 84*c66ec88fSEmmanuel Vadot 85*c66ec88fSEmmanuel Vadot clocks: 86*c66ec88fSEmmanuel Vadot maxItems: 1 87*c66ec88fSEmmanuel Vadot 88*c66ec88fSEmmanuel Vadot clock-output-names: 89*c66ec88fSEmmanuel Vadot minItems: 1 90*c66ec88fSEmmanuel Vadot maxItems: 32 91*c66ec88fSEmmanuel Vadot 92*c66ec88fSEmmanuel Vadot phandle: true 93*c66ec88fSEmmanuel Vadot 94*c66ec88fSEmmanuel Vadot required: 95*c66ec88fSEmmanuel Vadot - "#clock-cells" 96*c66ec88fSEmmanuel Vadot - compatible 97*c66ec88fSEmmanuel Vadot - clocks 98*c66ec88fSEmmanuel Vadot - clock-output-names 99*c66ec88fSEmmanuel Vadot 100*c66ec88fSEmmanuel Vadot additionalProperties: false 101*c66ec88fSEmmanuel Vadot 102*c66ec88fSEmmanuel Vadot - if: 103*c66ec88fSEmmanuel Vadot properties: 104*c66ec88fSEmmanuel Vadot compatible: 105*c66ec88fSEmmanuel Vadot contains: 106*c66ec88fSEmmanuel Vadot const: allwinner,sun6i-a31-ar100-clk 107*c66ec88fSEmmanuel Vadot 108*c66ec88fSEmmanuel Vadot then: 109*c66ec88fSEmmanuel Vadot properties: 110*c66ec88fSEmmanuel Vadot "#clock-cells": 111*c66ec88fSEmmanuel Vadot const: 0 112*c66ec88fSEmmanuel Vadot 113*c66ec88fSEmmanuel Vadot # Already checked in the main schema 114*c66ec88fSEmmanuel Vadot compatible: true 115*c66ec88fSEmmanuel Vadot 116*c66ec88fSEmmanuel Vadot clocks: 117*c66ec88fSEmmanuel Vadot maxItems: 4 118*c66ec88fSEmmanuel Vadot description: > 119*c66ec88fSEmmanuel Vadot The parent order must match the hardware programming 120*c66ec88fSEmmanuel Vadot order. 121*c66ec88fSEmmanuel Vadot 122*c66ec88fSEmmanuel Vadot clock-output-names: 123*c66ec88fSEmmanuel Vadot maxItems: 1 124*c66ec88fSEmmanuel Vadot 125*c66ec88fSEmmanuel Vadot phandle: true 126*c66ec88fSEmmanuel Vadot 127*c66ec88fSEmmanuel Vadot required: 128*c66ec88fSEmmanuel Vadot - "#clock-cells" 129*c66ec88fSEmmanuel Vadot - compatible 130*c66ec88fSEmmanuel Vadot - clocks 131*c66ec88fSEmmanuel Vadot - clock-output-names 132*c66ec88fSEmmanuel Vadot 133*c66ec88fSEmmanuel Vadot additionalProperties: false 134*c66ec88fSEmmanuel Vadot 135*c66ec88fSEmmanuel Vadot - if: 136*c66ec88fSEmmanuel Vadot properties: 137*c66ec88fSEmmanuel Vadot compatible: 138*c66ec88fSEmmanuel Vadot contains: 139*c66ec88fSEmmanuel Vadot const: allwinner,sun6i-a31-clock-reset 140*c66ec88fSEmmanuel Vadot 141*c66ec88fSEmmanuel Vadot then: 142*c66ec88fSEmmanuel Vadot properties: 143*c66ec88fSEmmanuel Vadot "#reset-cells": 144*c66ec88fSEmmanuel Vadot const: 1 145*c66ec88fSEmmanuel Vadot 146*c66ec88fSEmmanuel Vadot # Already checked in the main schema 147*c66ec88fSEmmanuel Vadot compatible: true 148*c66ec88fSEmmanuel Vadot 149*c66ec88fSEmmanuel Vadot phandle: true 150*c66ec88fSEmmanuel Vadot 151*c66ec88fSEmmanuel Vadot required: 152*c66ec88fSEmmanuel Vadot - "#reset-cells" 153*c66ec88fSEmmanuel Vadot - compatible 154*c66ec88fSEmmanuel Vadot 155*c66ec88fSEmmanuel Vadot additionalProperties: false 156*c66ec88fSEmmanuel Vadot 157*c66ec88fSEmmanuel Vadotrequired: 158*c66ec88fSEmmanuel Vadot - compatible 159*c66ec88fSEmmanuel Vadot - reg 160*c66ec88fSEmmanuel Vadot 161*c66ec88fSEmmanuel VadotadditionalProperties: false 162*c66ec88fSEmmanuel Vadot 163*c66ec88fSEmmanuel Vadotexamples: 164*c66ec88fSEmmanuel Vadot - | 165*c66ec88fSEmmanuel Vadot #include <dt-bindings/clock/sun6i-a31-ccu.h> 166*c66ec88fSEmmanuel Vadot 167*c66ec88fSEmmanuel Vadot prcm@1f01400 { 168*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun6i-a31-prcm"; 169*c66ec88fSEmmanuel Vadot reg = <0x01f01400 0x200>; 170*c66ec88fSEmmanuel Vadot 171*c66ec88fSEmmanuel Vadot ar100: ar100_clk { 172*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun6i-a31-ar100-clk"; 173*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 174*c66ec88fSEmmanuel Vadot clocks = <&rtc 0>, <&osc24M>, 175*c66ec88fSEmmanuel Vadot <&ccu CLK_PLL_PERIPH>, 176*c66ec88fSEmmanuel Vadot <&ccu CLK_PLL_PERIPH>; 177*c66ec88fSEmmanuel Vadot clock-output-names = "ar100"; 178*c66ec88fSEmmanuel Vadot }; 179*c66ec88fSEmmanuel Vadot 180*c66ec88fSEmmanuel Vadot ahb0: ahb0_clk { 181*c66ec88fSEmmanuel Vadot compatible = "fixed-factor-clock"; 182*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 183*c66ec88fSEmmanuel Vadot clock-div = <1>; 184*c66ec88fSEmmanuel Vadot clock-mult = <1>; 185*c66ec88fSEmmanuel Vadot clocks = <&ar100>; 186*c66ec88fSEmmanuel Vadot clock-output-names = "ahb0"; 187*c66ec88fSEmmanuel Vadot }; 188*c66ec88fSEmmanuel Vadot 189*c66ec88fSEmmanuel Vadot apb0: apb0_clk { 190*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun6i-a31-apb0-clk"; 191*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 192*c66ec88fSEmmanuel Vadot clocks = <&ahb0>; 193*c66ec88fSEmmanuel Vadot clock-output-names = "apb0"; 194*c66ec88fSEmmanuel Vadot }; 195*c66ec88fSEmmanuel Vadot 196*c66ec88fSEmmanuel Vadot apb0_gates: apb0_gates_clk { 197*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun6i-a31-apb0-gates-clk"; 198*c66ec88fSEmmanuel Vadot #clock-cells = <1>; 199*c66ec88fSEmmanuel Vadot clocks = <&apb0>; 200*c66ec88fSEmmanuel Vadot clock-output-names = "apb0_pio", "apb0_ir", 201*c66ec88fSEmmanuel Vadot "apb0_timer", "apb0_p2wi", 202*c66ec88fSEmmanuel Vadot "apb0_uart", "apb0_1wire", 203*c66ec88fSEmmanuel Vadot "apb0_i2c"; 204*c66ec88fSEmmanuel Vadot }; 205*c66ec88fSEmmanuel Vadot 206*c66ec88fSEmmanuel Vadot ir_clk: ir_clk { 207*c66ec88fSEmmanuel Vadot #clock-cells = <0>; 208*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun4i-a10-mod0-clk"; 209*c66ec88fSEmmanuel Vadot clocks = <&rtc 0>, <&osc24M>; 210*c66ec88fSEmmanuel Vadot clock-output-names = "ir"; 211*c66ec88fSEmmanuel Vadot }; 212*c66ec88fSEmmanuel Vadot 213*c66ec88fSEmmanuel Vadot apb0_rst: apb0_rst { 214*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun6i-a31-clock-reset"; 215*c66ec88fSEmmanuel Vadot #reset-cells = <1>; 216*c66ec88fSEmmanuel Vadot }; 217*c66ec88fSEmmanuel Vadot }; 218*c66ec88fSEmmanuel Vadot 219*c66ec88fSEmmanuel Vadot... 220