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