| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | 
|  | 2 | /* | 
|  | 3 | * Copyright (c) 2013 MundoReader S.L. | 
|  | 4 | * Author: Heiko Stuebner <heiko@sntech.de> | 
|  | 5 | */ | 
|  | 6 |  | 
|  | 7 | #include <dt-bindings/gpio/gpio.h> | 
|  | 8 | #include <dt-bindings/pinctrl/rockchip.h> | 
|  | 9 | #include <dt-bindings/clock/rk3066a-cru.h> | 
|  | 10 | #include <dt-bindings/power/rk3066-power.h> | 
|  | 11 | #include "rk3xxx.dtsi" | 
|  | 12 |  | 
|  | 13 | / { | 
|  | 14 | compatible = "rockchip,rk3066a"; | 
|  | 15 |  | 
|  | 16 | cpus { | 
|  | 17 | #address-cells = <1>; | 
|  | 18 | #size-cells = <0>; | 
|  | 19 | enable-method = "rockchip,rk3066-smp"; | 
|  | 20 |  | 
|  | 21 | cpu0: cpu@0 { | 
|  | 22 | device_type = "cpu"; | 
|  | 23 | compatible = "arm,cortex-a9"; | 
|  | 24 | next-level-cache = <&L2>; | 
|  | 25 | reg = <0x0>; | 
|  | 26 | operating-points = < | 
|  | 27 | /* kHz    uV */ | 
|  | 28 | 1416000 1300000 | 
|  | 29 | 1200000 1175000 | 
|  | 30 | 1008000 1125000 | 
|  | 31 | 816000  1125000 | 
|  | 32 | 600000  1100000 | 
|  | 33 | 504000  1100000 | 
|  | 34 | 312000  1075000 | 
|  | 35 | >; | 
|  | 36 | clock-latency = <40000>; | 
|  | 37 | clocks = <&cru ARMCLK>; | 
|  | 38 | }; | 
|  | 39 | cpu@1 { | 
|  | 40 | device_type = "cpu"; | 
|  | 41 | compatible = "arm,cortex-a9"; | 
|  | 42 | next-level-cache = <&L2>; | 
|  | 43 | reg = <0x1>; | 
|  | 44 | }; | 
|  | 45 | }; | 
|  | 46 |  | 
|  | 47 | display-subsystem { | 
|  | 48 | compatible = "rockchip,display-subsystem"; | 
|  | 49 | ports = <&vop0_out>, <&vop1_out>; | 
|  | 50 | }; | 
|  | 51 |  | 
|  | 52 | sram: sram@10080000 { | 
|  | 53 | compatible = "mmio-sram"; | 
|  | 54 | reg = <0x10080000 0x10000>; | 
|  | 55 | #address-cells = <1>; | 
|  | 56 | #size-cells = <1>; | 
|  | 57 | ranges = <0 0x10080000 0x10000>; | 
|  | 58 |  | 
|  | 59 | smp-sram@0 { | 
|  | 60 | compatible = "rockchip,rk3066-smp-sram"; | 
|  | 61 | reg = <0x0 0x50>; | 
|  | 62 | }; | 
|  | 63 | }; | 
|  | 64 |  | 
|  | 65 | vop0: vop@1010c000 { | 
|  | 66 | compatible = "rockchip,rk3066-vop"; | 
|  | 67 | reg = <0x1010c000 0x19c>; | 
|  | 68 | interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 69 | clocks = <&cru ACLK_LCDC0>, | 
|  | 70 | <&cru DCLK_LCDC0>, | 
|  | 71 | <&cru HCLK_LCDC0>; | 
|  | 72 | clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; | 
|  | 73 | power-domains = <&power RK3066_PD_VIO>; | 
|  | 74 | resets = <&cru SRST_LCDC0_AXI>, | 
|  | 75 | <&cru SRST_LCDC0_AHB>, | 
|  | 76 | <&cru SRST_LCDC0_DCLK>; | 
|  | 77 | reset-names = "axi", "ahb", "dclk"; | 
|  | 78 | status = "disabled"; | 
|  | 79 |  | 
|  | 80 | vop0_out: port { | 
|  | 81 | #address-cells = <1>; | 
|  | 82 | #size-cells = <0>; | 
|  | 83 |  | 
|  | 84 | vop0_out_hdmi: endpoint@0 { | 
|  | 85 | reg = <0>; | 
|  | 86 | remote-endpoint = <&hdmi_in_vop0>; | 
|  | 87 | }; | 
|  | 88 | }; | 
|  | 89 | }; | 
|  | 90 |  | 
|  | 91 | vop1: vop@1010e000 { | 
|  | 92 | compatible = "rockchip,rk3066-vop"; | 
|  | 93 | reg = <0x1010e000 0x19c>; | 
|  | 94 | interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 95 | clocks = <&cru ACLK_LCDC1>, | 
|  | 96 | <&cru DCLK_LCDC1>, | 
|  | 97 | <&cru HCLK_LCDC1>; | 
|  | 98 | clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; | 
|  | 99 | power-domains = <&power RK3066_PD_VIO>; | 
|  | 100 | resets = <&cru SRST_LCDC1_AXI>, | 
|  | 101 | <&cru SRST_LCDC1_AHB>, | 
|  | 102 | <&cru SRST_LCDC1_DCLK>; | 
|  | 103 | reset-names = "axi", "ahb", "dclk"; | 
|  | 104 | status = "disabled"; | 
|  | 105 |  | 
|  | 106 | vop1_out: port { | 
|  | 107 | #address-cells = <1>; | 
|  | 108 | #size-cells = <0>; | 
|  | 109 |  | 
|  | 110 | vop1_out_hdmi: endpoint@0 { | 
|  | 111 | reg = <0>; | 
|  | 112 | remote-endpoint = <&hdmi_in_vop1>; | 
|  | 113 | }; | 
|  | 114 | }; | 
|  | 115 | }; | 
|  | 116 |  | 
|  | 117 | hdmi: hdmi@10116000 { | 
|  | 118 | compatible = "rockchip,rk3066-hdmi"; | 
|  | 119 | reg = <0x10116000 0x2000>; | 
|  | 120 | interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 121 | clocks = <&cru HCLK_HDMI>; | 
|  | 122 | clock-names = "hclk"; | 
|  | 123 | pinctrl-names = "default"; | 
|  | 124 | pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>; | 
|  | 125 | power-domains = <&power RK3066_PD_VIO>; | 
|  | 126 | rockchip,grf = <&grf>; | 
|  | 127 | #sound-dai-cells = <0>; | 
|  | 128 | status = "disabled"; | 
|  | 129 |  | 
|  | 130 | ports { | 
|  | 131 | #address-cells = <1>; | 
|  | 132 | #size-cells = <0>; | 
|  | 133 |  | 
|  | 134 | hdmi_in: port@0 { | 
|  | 135 | reg = <0>; | 
|  | 136 | #address-cells = <1>; | 
|  | 137 | #size-cells = <0>; | 
|  | 138 |  | 
|  | 139 | hdmi_in_vop0: endpoint@0 { | 
|  | 140 | reg = <0>; | 
|  | 141 | remote-endpoint = <&vop0_out_hdmi>; | 
|  | 142 | }; | 
|  | 143 |  | 
|  | 144 | hdmi_in_vop1: endpoint@1 { | 
|  | 145 | reg = <1>; | 
|  | 146 | remote-endpoint = <&vop1_out_hdmi>; | 
|  | 147 | }; | 
|  | 148 | }; | 
|  | 149 |  | 
|  | 150 | hdmi_out: port@1 { | 
|  | 151 | reg = <1>; | 
|  | 152 | }; | 
|  | 153 | }; | 
|  | 154 | }; | 
|  | 155 |  | 
|  | 156 | i2s0: i2s@10118000 { | 
|  | 157 | compatible = "rockchip,rk3066-i2s"; | 
|  | 158 | reg = <0x10118000 0x2000>; | 
|  | 159 | interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 160 | #address-cells = <1>; | 
|  | 161 | #size-cells = <0>; | 
|  | 162 | pinctrl-names = "default"; | 
|  | 163 | pinctrl-0 = <&i2s0_bus>; | 
|  | 164 | dmas = <&dmac1_s 4>, <&dmac1_s 5>; | 
|  | 165 | dma-names = "tx", "rx"; | 
|  | 166 | clock-names = "i2s_hclk", "i2s_clk"; | 
|  | 167 | clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>; | 
|  | 168 | rockchip,playback-channels = <8>; | 
|  | 169 | rockchip,capture-channels = <2>; | 
|  | 170 | #sound-dai-cells = <0>; | 
|  | 171 | status = "disabled"; | 
|  | 172 | }; | 
|  | 173 |  | 
|  | 174 | i2s1: i2s@1011a000 { | 
|  | 175 | compatible = "rockchip,rk3066-i2s"; | 
|  | 176 | reg = <0x1011a000 0x2000>; | 
|  | 177 | interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 178 | #address-cells = <1>; | 
|  | 179 | #size-cells = <0>; | 
|  | 180 | pinctrl-names = "default"; | 
|  | 181 | pinctrl-0 = <&i2s1_bus>; | 
|  | 182 | dmas = <&dmac1_s 6>, <&dmac1_s 7>; | 
|  | 183 | dma-names = "tx", "rx"; | 
|  | 184 | clock-names = "i2s_hclk", "i2s_clk"; | 
|  | 185 | clocks = <&cru HCLK_I2S1>, <&cru SCLK_I2S1>; | 
|  | 186 | rockchip,playback-channels = <2>; | 
|  | 187 | rockchip,capture-channels = <2>; | 
|  | 188 | #sound-dai-cells = <0>; | 
|  | 189 | status = "disabled"; | 
|  | 190 | }; | 
|  | 191 |  | 
|  | 192 | i2s2: i2s@1011c000 { | 
|  | 193 | compatible = "rockchip,rk3066-i2s"; | 
|  | 194 | reg = <0x1011c000 0x2000>; | 
|  | 195 | interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 196 | #address-cells = <1>; | 
|  | 197 | #size-cells = <0>; | 
|  | 198 | pinctrl-names = "default"; | 
|  | 199 | pinctrl-0 = <&i2s2_bus>; | 
|  | 200 | dmas = <&dmac1_s 9>, <&dmac1_s 10>; | 
|  | 201 | dma-names = "tx", "rx"; | 
|  | 202 | clock-names = "i2s_hclk", "i2s_clk"; | 
|  | 203 | clocks = <&cru HCLK_I2S2>, <&cru SCLK_I2S2>; | 
|  | 204 | rockchip,playback-channels = <2>; | 
|  | 205 | rockchip,capture-channels = <2>; | 
|  | 206 | #sound-dai-cells = <0>; | 
|  | 207 | status = "disabled"; | 
|  | 208 | }; | 
|  | 209 |  | 
|  | 210 | cru: clock-controller@20000000 { | 
|  | 211 | compatible = "rockchip,rk3066a-cru"; | 
|  | 212 | reg = <0x20000000 0x1000>; | 
|  | 213 | rockchip,grf = <&grf>; | 
|  | 214 |  | 
|  | 215 | #clock-cells = <1>; | 
|  | 216 | #reset-cells = <1>; | 
|  | 217 | assigned-clocks = <&cru PLL_CPLL>, <&cru PLL_GPLL>, | 
|  | 218 | <&cru ACLK_CPU>, <&cru HCLK_CPU>, | 
|  | 219 | <&cru PCLK_CPU>, <&cru ACLK_PERI>, | 
|  | 220 | <&cru HCLK_PERI>, <&cru PCLK_PERI>; | 
|  | 221 | assigned-clock-rates = <400000000>, <594000000>, | 
|  | 222 | <300000000>, <150000000>, | 
|  | 223 | <75000000>, <300000000>, | 
|  | 224 | <150000000>, <75000000>; | 
|  | 225 | }; | 
|  | 226 |  | 
|  | 227 | timer@2000e000 { | 
|  | 228 | compatible = "snps,dw-apb-timer-osc"; | 
|  | 229 | reg = <0x2000e000 0x100>; | 
|  | 230 | interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 231 | clocks = <&cru SCLK_TIMER2>, <&cru PCLK_TIMER2>; | 
|  | 232 | clock-names = "timer", "pclk"; | 
|  | 233 | }; | 
|  | 234 |  | 
|  | 235 | efuse: efuse@20010000 { | 
|  | 236 | compatible = "rockchip,rk3066a-efuse"; | 
|  | 237 | reg = <0x20010000 0x4000>; | 
|  | 238 | #address-cells = <1>; | 
|  | 239 | #size-cells = <1>; | 
|  | 240 | clocks = <&cru PCLK_EFUSE>; | 
|  | 241 | clock-names = "pclk_efuse"; | 
|  | 242 |  | 
|  | 243 | cpu_leakage: cpu_leakage@17 { | 
|  | 244 | reg = <0x17 0x1>; | 
|  | 245 | }; | 
|  | 246 | }; | 
|  | 247 |  | 
|  | 248 | timer@20038000 { | 
|  | 249 | compatible = "snps,dw-apb-timer-osc"; | 
|  | 250 | reg = <0x20038000 0x100>; | 
|  | 251 | interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 252 | clocks = <&cru SCLK_TIMER0>, <&cru PCLK_TIMER0>; | 
|  | 253 | clock-names = "timer", "pclk"; | 
|  | 254 | }; | 
|  | 255 |  | 
|  | 256 | timer@2003a000 { | 
|  | 257 | compatible = "snps,dw-apb-timer-osc"; | 
|  | 258 | reg = <0x2003a000 0x100>; | 
|  | 259 | interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 260 | clocks = <&cru SCLK_TIMER1>, <&cru PCLK_TIMER1>; | 
|  | 261 | clock-names = "timer", "pclk"; | 
|  | 262 | }; | 
|  | 263 |  | 
|  | 264 | tsadc: tsadc@20060000 { | 
|  | 265 | compatible = "rockchip,rk3066-tsadc"; | 
|  | 266 | reg = <0x20060000 0x100>; | 
|  | 267 | clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>; | 
|  | 268 | clock-names = "saradc", "apb_pclk"; | 
|  | 269 | interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 270 | #io-channel-cells = <1>; | 
|  | 271 | resets = <&cru SRST_TSADC>; | 
|  | 272 | reset-names = "saradc-apb"; | 
|  | 273 | status = "disabled"; | 
|  | 274 | }; | 
|  | 275 |  | 
|  | 276 | usbphy: phy { | 
|  | 277 | compatible = "rockchip,rk3066a-usb-phy", "rockchip,rk3288-usb-phy"; | 
|  | 278 | rockchip,grf = <&grf>; | 
|  | 279 | #address-cells = <1>; | 
|  | 280 | #size-cells = <0>; | 
|  | 281 | status = "disabled"; | 
|  | 282 |  | 
|  | 283 | usbphy0: usb-phy@17c { | 
|  | 284 | #phy-cells = <0>; | 
|  | 285 | reg = <0x17c>; | 
|  | 286 | clocks = <&cru SCLK_OTGPHY0>; | 
|  | 287 | clock-names = "phyclk"; | 
|  | 288 | #clock-cells = <0>; | 
|  | 289 | }; | 
|  | 290 |  | 
|  | 291 | usbphy1: usb-phy@188 { | 
|  | 292 | #phy-cells = <0>; | 
|  | 293 | reg = <0x188>; | 
|  | 294 | clocks = <&cru SCLK_OTGPHY1>; | 
|  | 295 | clock-names = "phyclk"; | 
|  | 296 | #clock-cells = <0>; | 
|  | 297 | }; | 
|  | 298 | }; | 
|  | 299 |  | 
|  | 300 | pinctrl: pinctrl { | 
|  | 301 | compatible = "rockchip,rk3066a-pinctrl"; | 
|  | 302 | rockchip,grf = <&grf>; | 
|  | 303 | #address-cells = <1>; | 
|  | 304 | #size-cells = <1>; | 
|  | 305 | ranges; | 
|  | 306 |  | 
|  | 307 | gpio0: gpio0@20034000 { | 
|  | 308 | compatible = "rockchip,gpio-bank"; | 
|  | 309 | reg = <0x20034000 0x100>; | 
|  | 310 | interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 311 | clocks = <&cru PCLK_GPIO0>; | 
|  | 312 |  | 
|  | 313 | gpio-controller; | 
|  | 314 | #gpio-cells = <2>; | 
|  | 315 |  | 
|  | 316 | interrupt-controller; | 
|  | 317 | #interrupt-cells = <2>; | 
|  | 318 | }; | 
|  | 319 |  | 
|  | 320 | gpio1: gpio1@2003c000 { | 
|  | 321 | compatible = "rockchip,gpio-bank"; | 
|  | 322 | reg = <0x2003c000 0x100>; | 
|  | 323 | interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 324 | clocks = <&cru PCLK_GPIO1>; | 
|  | 325 |  | 
|  | 326 | gpio-controller; | 
|  | 327 | #gpio-cells = <2>; | 
|  | 328 |  | 
|  | 329 | interrupt-controller; | 
|  | 330 | #interrupt-cells = <2>; | 
|  | 331 | }; | 
|  | 332 |  | 
|  | 333 | gpio2: gpio2@2003e000 { | 
|  | 334 | compatible = "rockchip,gpio-bank"; | 
|  | 335 | reg = <0x2003e000 0x100>; | 
|  | 336 | interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 337 | clocks = <&cru PCLK_GPIO2>; | 
|  | 338 |  | 
|  | 339 | gpio-controller; | 
|  | 340 | #gpio-cells = <2>; | 
|  | 341 |  | 
|  | 342 | interrupt-controller; | 
|  | 343 | #interrupt-cells = <2>; | 
|  | 344 | }; | 
|  | 345 |  | 
|  | 346 | gpio3: gpio3@20080000 { | 
|  | 347 | compatible = "rockchip,gpio-bank"; | 
|  | 348 | reg = <0x20080000 0x100>; | 
|  | 349 | interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 350 | clocks = <&cru PCLK_GPIO3>; | 
|  | 351 |  | 
|  | 352 | gpio-controller; | 
|  | 353 | #gpio-cells = <2>; | 
|  | 354 |  | 
|  | 355 | interrupt-controller; | 
|  | 356 | #interrupt-cells = <2>; | 
|  | 357 | }; | 
|  | 358 |  | 
|  | 359 | gpio4: gpio4@20084000 { | 
|  | 360 | compatible = "rockchip,gpio-bank"; | 
|  | 361 | reg = <0x20084000 0x100>; | 
|  | 362 | interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 363 | clocks = <&cru PCLK_GPIO4>; | 
|  | 364 |  | 
|  | 365 | gpio-controller; | 
|  | 366 | #gpio-cells = <2>; | 
|  | 367 |  | 
|  | 368 | interrupt-controller; | 
|  | 369 | #interrupt-cells = <2>; | 
|  | 370 | }; | 
|  | 371 |  | 
|  | 372 | gpio6: gpio6@2000a000 { | 
|  | 373 | compatible = "rockchip,gpio-bank"; | 
|  | 374 | reg = <0x2000a000 0x100>; | 
|  | 375 | interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 376 | clocks = <&cru PCLK_GPIO6>; | 
|  | 377 |  | 
|  | 378 | gpio-controller; | 
|  | 379 | #gpio-cells = <2>; | 
|  | 380 |  | 
|  | 381 | interrupt-controller; | 
|  | 382 | #interrupt-cells = <2>; | 
|  | 383 | }; | 
|  | 384 |  | 
|  | 385 | pcfg_pull_default: pcfg_pull_default { | 
|  | 386 | bias-pull-pin-default; | 
|  | 387 | }; | 
|  | 388 |  | 
|  | 389 | pcfg_pull_none: pcfg_pull_none { | 
|  | 390 | bias-disable; | 
|  | 391 | }; | 
|  | 392 |  | 
|  | 393 | emac { | 
|  | 394 | emac_xfer: emac-xfer { | 
|  | 395 | rockchip,pins = <1 RK_PC0 2 &pcfg_pull_none>, /* mac_clk */ | 
|  | 396 | <1 RK_PC1 2 &pcfg_pull_none>, /* tx_en */ | 
|  | 397 | <1 RK_PC2 2 &pcfg_pull_none>, /* txd1 */ | 
|  | 398 | <1 RK_PC3 2 &pcfg_pull_none>, /* txd0 */ | 
|  | 399 | <1 RK_PC4 2 &pcfg_pull_none>, /* rx_err */ | 
|  | 400 | <1 RK_PC5 2 &pcfg_pull_none>, /* crs_dvalid */ | 
|  | 401 | <1 RK_PC6 2 &pcfg_pull_none>, /* rxd1 */ | 
|  | 402 | <1 RK_PC7 2 &pcfg_pull_none>; /* rxd0 */ | 
|  | 403 | }; | 
|  | 404 |  | 
|  | 405 | emac_mdio: emac-mdio { | 
|  | 406 | rockchip,pins = <1 RK_PD0 2 &pcfg_pull_none>, /* mac_md */ | 
|  | 407 | <1 RK_PD1 2 &pcfg_pull_none>; /* mac_mdclk */ | 
|  | 408 | }; | 
|  | 409 | }; | 
|  | 410 |  | 
|  | 411 | emmc { | 
|  | 412 | emmc_clk: emmc-clk { | 
|  | 413 | rockchip,pins = <3 RK_PD7 2 &pcfg_pull_default>; | 
|  | 414 | }; | 
|  | 415 |  | 
|  | 416 | emmc_cmd: emmc-cmd { | 
|  | 417 | rockchip,pins = <4 RK_PB1 2 &pcfg_pull_default>; | 
|  | 418 | }; | 
|  | 419 |  | 
|  | 420 | emmc_rst: emmc-rst { | 
|  | 421 | rockchip,pins = <4 RK_PB2 2 &pcfg_pull_default>; | 
|  | 422 | }; | 
|  | 423 |  | 
|  | 424 | /* | 
|  | 425 | * The data pins are shared between nandc and emmc and | 
|  | 426 | * not accessible through pinctrl. Also they should've | 
|  | 427 | * been already set correctly by firmware, as | 
|  | 428 | * flash/emmc is the boot-device. | 
|  | 429 | */ | 
|  | 430 | }; | 
|  | 431 |  | 
|  | 432 | hdmi { | 
|  | 433 | hdmi_hpd: hdmi-hpd { | 
|  | 434 | rockchip,pins = <0 RK_PA0 1 &pcfg_pull_default>; | 
|  | 435 | }; | 
|  | 436 |  | 
|  | 437 | hdmii2c_xfer: hdmii2c-xfer { | 
|  | 438 | rockchip,pins = <0 RK_PA1 1 &pcfg_pull_none>, | 
|  | 439 | <0 RK_PA2 1 &pcfg_pull_none>; | 
|  | 440 | }; | 
|  | 441 | }; | 
|  | 442 |  | 
|  | 443 | i2c0 { | 
|  | 444 | i2c0_xfer: i2c0-xfer { | 
|  | 445 | rockchip,pins = <2 RK_PD4 1 &pcfg_pull_none>, | 
|  | 446 | <2 RK_PD5 1 &pcfg_pull_none>; | 
|  | 447 | }; | 
|  | 448 | }; | 
|  | 449 |  | 
|  | 450 | i2c1 { | 
|  | 451 | i2c1_xfer: i2c1-xfer { | 
|  | 452 | rockchip,pins = <2 RK_PD6 1 &pcfg_pull_none>, | 
|  | 453 | <2 RK_PD7 1 &pcfg_pull_none>; | 
|  | 454 | }; | 
|  | 455 | }; | 
|  | 456 |  | 
|  | 457 | i2c2 { | 
|  | 458 | i2c2_xfer: i2c2-xfer { | 
|  | 459 | rockchip,pins = <3 RK_PA0 1 &pcfg_pull_none>, | 
|  | 460 | <3 RK_PA1 1 &pcfg_pull_none>; | 
|  | 461 | }; | 
|  | 462 | }; | 
|  | 463 |  | 
|  | 464 | i2c3 { | 
|  | 465 | i2c3_xfer: i2c3-xfer { | 
|  | 466 | rockchip,pins = <3 RK_PA2 2 &pcfg_pull_none>, | 
|  | 467 | <3 RK_PA3 2 &pcfg_pull_none>; | 
|  | 468 | }; | 
|  | 469 | }; | 
|  | 470 |  | 
|  | 471 | i2c4 { | 
|  | 472 | i2c4_xfer: i2c4-xfer { | 
|  | 473 | rockchip,pins = <3 RK_PA4 1 &pcfg_pull_none>, | 
|  | 474 | <3 RK_PA5 1 &pcfg_pull_none>; | 
|  | 475 | }; | 
|  | 476 | }; | 
|  | 477 |  | 
|  | 478 | pwm0 { | 
|  | 479 | pwm0_out: pwm0-out { | 
|  | 480 | rockchip,pins = <0 RK_PA3 1 &pcfg_pull_none>; | 
|  | 481 | }; | 
|  | 482 | }; | 
|  | 483 |  | 
|  | 484 | pwm1 { | 
|  | 485 | pwm1_out: pwm1-out { | 
|  | 486 | rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>; | 
|  | 487 | }; | 
|  | 488 | }; | 
|  | 489 |  | 
|  | 490 | pwm2 { | 
|  | 491 | pwm2_out: pwm2-out { | 
|  | 492 | rockchip,pins = <0 RK_PD6 1 &pcfg_pull_none>; | 
|  | 493 | }; | 
|  | 494 | }; | 
|  | 495 |  | 
|  | 496 | pwm3 { | 
|  | 497 | pwm3_out: pwm3-out { | 
|  | 498 | rockchip,pins = <0 RK_PD7 1 &pcfg_pull_none>; | 
|  | 499 | }; | 
|  | 500 | }; | 
|  | 501 |  | 
|  | 502 | spi0 { | 
|  | 503 | spi0_clk: spi0-clk { | 
|  | 504 | rockchip,pins = <1 RK_PA5 2 &pcfg_pull_default>; | 
|  | 505 | }; | 
|  | 506 | spi0_cs0: spi0-cs0 { | 
|  | 507 | rockchip,pins = <1 RK_PA4 2 &pcfg_pull_default>; | 
|  | 508 | }; | 
|  | 509 | spi0_tx: spi0-tx { | 
|  | 510 | rockchip,pins = <1 RK_PA7 2 &pcfg_pull_default>; | 
|  | 511 | }; | 
|  | 512 | spi0_rx: spi0-rx { | 
|  | 513 | rockchip,pins = <1 RK_PA6 2 &pcfg_pull_default>; | 
|  | 514 | }; | 
|  | 515 | spi0_cs1: spi0-cs1 { | 
|  | 516 | rockchip,pins = <4 RK_PB7 1 &pcfg_pull_default>; | 
|  | 517 | }; | 
|  | 518 | }; | 
|  | 519 |  | 
|  | 520 | spi1 { | 
|  | 521 | spi1_clk: spi1-clk { | 
|  | 522 | rockchip,pins = <2 RK_PC3 2 &pcfg_pull_default>; | 
|  | 523 | }; | 
|  | 524 | spi1_cs0: spi1-cs0 { | 
|  | 525 | rockchip,pins = <2 RK_PC4 2 &pcfg_pull_default>; | 
|  | 526 | }; | 
|  | 527 | spi1_rx: spi1-rx { | 
|  | 528 | rockchip,pins = <2 RK_PC6 2 &pcfg_pull_default>; | 
|  | 529 | }; | 
|  | 530 | spi1_tx: spi1-tx { | 
|  | 531 | rockchip,pins = <2 RK_PC5 2 &pcfg_pull_default>; | 
|  | 532 | }; | 
|  | 533 | spi1_cs1: spi1-cs1 { | 
|  | 534 | rockchip,pins = <2 RK_PC7 2 &pcfg_pull_default>; | 
|  | 535 | }; | 
|  | 536 | }; | 
|  | 537 |  | 
|  | 538 | uart0 { | 
|  | 539 | uart0_xfer: uart0-xfer { | 
|  | 540 | rockchip,pins = <1 RK_PA0 1 &pcfg_pull_default>, | 
|  | 541 | <1 RK_PA1 1 &pcfg_pull_default>; | 
|  | 542 | }; | 
|  | 543 |  | 
|  | 544 | uart0_cts: uart0-cts { | 
|  | 545 | rockchip,pins = <1 RK_PA2 1 &pcfg_pull_default>; | 
|  | 546 | }; | 
|  | 547 |  | 
|  | 548 | uart0_rts: uart0-rts { | 
|  | 549 | rockchip,pins = <1 RK_PA3 1 &pcfg_pull_default>; | 
|  | 550 | }; | 
|  | 551 | }; | 
|  | 552 |  | 
|  | 553 | uart1 { | 
|  | 554 | uart1_xfer: uart1-xfer { | 
|  | 555 | rockchip,pins = <1 RK_PA4 1 &pcfg_pull_default>, | 
|  | 556 | <1 RK_PA5 1 &pcfg_pull_default>; | 
|  | 557 | }; | 
|  | 558 |  | 
|  | 559 | uart1_cts: uart1-cts { | 
|  | 560 | rockchip,pins = <1 RK_PA6 1 &pcfg_pull_default>; | 
|  | 561 | }; | 
|  | 562 |  | 
|  | 563 | uart1_rts: uart1-rts { | 
|  | 564 | rockchip,pins = <1 RK_PA7 1 &pcfg_pull_default>; | 
|  | 565 | }; | 
|  | 566 | }; | 
|  | 567 |  | 
|  | 568 | uart2 { | 
|  | 569 | uart2_xfer: uart2-xfer { | 
|  | 570 | rockchip,pins = <1 RK_PB0 1 &pcfg_pull_default>, | 
|  | 571 | <1 RK_PB1 1 &pcfg_pull_default>; | 
|  | 572 | }; | 
|  | 573 | /* no rts / cts for uart2 */ | 
|  | 574 | }; | 
|  | 575 |  | 
|  | 576 | uart3 { | 
|  | 577 | uart3_xfer: uart3-xfer { | 
|  | 578 | rockchip,pins = <3 RK_PD3 1 &pcfg_pull_default>, | 
|  | 579 | <3 RK_PD4 1 &pcfg_pull_default>; | 
|  | 580 | }; | 
|  | 581 |  | 
|  | 582 | uart3_cts: uart3-cts { | 
|  | 583 | rockchip,pins = <3 RK_PD5 1 &pcfg_pull_default>; | 
|  | 584 | }; | 
|  | 585 |  | 
|  | 586 | uart3_rts: uart3-rts { | 
|  | 587 | rockchip,pins = <3 RK_PD6 1 &pcfg_pull_default>; | 
|  | 588 | }; | 
|  | 589 | }; | 
|  | 590 |  | 
|  | 591 | sd0 { | 
|  | 592 | sd0_clk: sd0-clk { | 
|  | 593 | rockchip,pins = <3 RK_PB0 1 &pcfg_pull_default>; | 
|  | 594 | }; | 
|  | 595 |  | 
|  | 596 | sd0_cmd: sd0-cmd { | 
|  | 597 | rockchip,pins = <3 RK_PB1 1 &pcfg_pull_default>; | 
|  | 598 | }; | 
|  | 599 |  | 
|  | 600 | sd0_cd: sd0-cd { | 
|  | 601 | rockchip,pins = <3 RK_PB6 1 &pcfg_pull_default>; | 
|  | 602 | }; | 
|  | 603 |  | 
|  | 604 | sd0_wp: sd0-wp { | 
|  | 605 | rockchip,pins = <3 RK_PB7 1 &pcfg_pull_default>; | 
|  | 606 | }; | 
|  | 607 |  | 
|  | 608 | sd0_bus1: sd0-bus-width1 { | 
|  | 609 | rockchip,pins = <3 RK_PB2 1 &pcfg_pull_default>; | 
|  | 610 | }; | 
|  | 611 |  | 
|  | 612 | sd0_bus4: sd0-bus-width4 { | 
|  | 613 | rockchip,pins = <3 RK_PB2 1 &pcfg_pull_default>, | 
|  | 614 | <3 RK_PB3 1 &pcfg_pull_default>, | 
|  | 615 | <3 RK_PB4 1 &pcfg_pull_default>, | 
|  | 616 | <3 RK_PB5 1 &pcfg_pull_default>; | 
|  | 617 | }; | 
|  | 618 | }; | 
|  | 619 |  | 
|  | 620 | sd1 { | 
|  | 621 | sd1_clk: sd1-clk { | 
|  | 622 | rockchip,pins = <3 RK_PC5 1 &pcfg_pull_default>; | 
|  | 623 | }; | 
|  | 624 |  | 
|  | 625 | sd1_cmd: sd1-cmd { | 
|  | 626 | rockchip,pins = <3 RK_PC0 1 &pcfg_pull_default>; | 
|  | 627 | }; | 
|  | 628 |  | 
|  | 629 | sd1_cd: sd1-cd { | 
|  | 630 | rockchip,pins = <3 RK_PC6 1 &pcfg_pull_default>; | 
|  | 631 | }; | 
|  | 632 |  | 
|  | 633 | sd1_wp: sd1-wp { | 
|  | 634 | rockchip,pins = <3 RK_PC7 1 &pcfg_pull_default>; | 
|  | 635 | }; | 
|  | 636 |  | 
|  | 637 | sd1_bus1: sd1-bus-width1 { | 
|  | 638 | rockchip,pins = <3 RK_PC1 1 &pcfg_pull_default>; | 
|  | 639 | }; | 
|  | 640 |  | 
|  | 641 | sd1_bus4: sd1-bus-width4 { | 
|  | 642 | rockchip,pins = <3 RK_PC1 1 &pcfg_pull_default>, | 
|  | 643 | <3 RK_PC2 1 &pcfg_pull_default>, | 
|  | 644 | <3 RK_PC3 1 &pcfg_pull_default>, | 
|  | 645 | <3 RK_PC4 1 &pcfg_pull_default>; | 
|  | 646 | }; | 
|  | 647 | }; | 
|  | 648 |  | 
|  | 649 | i2s0 { | 
|  | 650 | i2s0_bus: i2s0-bus { | 
|  | 651 | rockchip,pins = <0 RK_PA7 1 &pcfg_pull_default>, | 
|  | 652 | <0 RK_PB0 1 &pcfg_pull_default>, | 
|  | 653 | <0 RK_PB1 1 &pcfg_pull_default>, | 
|  | 654 | <0 RK_PB2 1 &pcfg_pull_default>, | 
|  | 655 | <0 RK_PB3 1 &pcfg_pull_default>, | 
|  | 656 | <0 RK_PB4 1 &pcfg_pull_default>, | 
|  | 657 | <0 RK_PB5 1 &pcfg_pull_default>, | 
|  | 658 | <0 RK_PB6 1 &pcfg_pull_default>, | 
|  | 659 | <0 RK_PB7 1 &pcfg_pull_default>; | 
|  | 660 | }; | 
|  | 661 | }; | 
|  | 662 |  | 
|  | 663 | i2s1 { | 
|  | 664 | i2s1_bus: i2s1-bus { | 
|  | 665 | rockchip,pins = <0 RK_PC0 1 &pcfg_pull_default>, | 
|  | 666 | <0 RK_PC1 1 &pcfg_pull_default>, | 
|  | 667 | <0 RK_PC2 1 &pcfg_pull_default>, | 
|  | 668 | <0 RK_PC3 1 &pcfg_pull_default>, | 
|  | 669 | <0 RK_PC4 1 &pcfg_pull_default>, | 
|  | 670 | <0 RK_PC5 1 &pcfg_pull_default>; | 
|  | 671 | }; | 
|  | 672 | }; | 
|  | 673 |  | 
|  | 674 | i2s2 { | 
|  | 675 | i2s2_bus: i2s2-bus { | 
|  | 676 | rockchip,pins = <0 RK_PD0 1 &pcfg_pull_default>, | 
|  | 677 | <0 RK_PD1 1 &pcfg_pull_default>, | 
|  | 678 | <0 RK_PD2 1 &pcfg_pull_default>, | 
|  | 679 | <0 RK_PD3 1 &pcfg_pull_default>, | 
|  | 680 | <0 RK_PD4 1 &pcfg_pull_default>, | 
|  | 681 | <0 RK_PD5 1 &pcfg_pull_default>; | 
|  | 682 | }; | 
|  | 683 | }; | 
|  | 684 | }; | 
|  | 685 | }; | 
|  | 686 |  | 
|  | 687 | &gpu { | 
|  | 688 | compatible = "rockchip,rk3066-mali", "arm,mali-400"; | 
|  | 689 | interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 690 | <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 691 | <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 692 | <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 693 | <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 694 | <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 695 | <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 696 | <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 697 | <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, | 
|  | 698 | <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; | 
|  | 699 | interrupt-names = "gp", | 
|  | 700 | "gpmmu", | 
|  | 701 | "pp0", | 
|  | 702 | "ppmmu0", | 
|  | 703 | "pp1", | 
|  | 704 | "ppmmu1", | 
|  | 705 | "pp2", | 
|  | 706 | "ppmmu2", | 
|  | 707 | "pp3", | 
|  | 708 | "ppmmu3"; | 
|  | 709 | power-domains = <&power RK3066_PD_GPU>; | 
|  | 710 | }; | 
|  | 711 |  | 
|  | 712 | &i2c0 { | 
|  | 713 | pinctrl-names = "default"; | 
|  | 714 | pinctrl-0 = <&i2c0_xfer>; | 
|  | 715 | }; | 
|  | 716 |  | 
|  | 717 | &i2c1 { | 
|  | 718 | pinctrl-names = "default"; | 
|  | 719 | pinctrl-0 = <&i2c1_xfer>; | 
|  | 720 | }; | 
|  | 721 |  | 
|  | 722 | &i2c2 { | 
|  | 723 | pinctrl-names = "default"; | 
|  | 724 | pinctrl-0 = <&i2c2_xfer>; | 
|  | 725 | }; | 
|  | 726 |  | 
|  | 727 | &i2c3 { | 
|  | 728 | pinctrl-names = "default"; | 
|  | 729 | pinctrl-0 = <&i2c3_xfer>; | 
|  | 730 | }; | 
|  | 731 |  | 
|  | 732 | &i2c4 { | 
|  | 733 | pinctrl-names = "default"; | 
|  | 734 | pinctrl-0 = <&i2c4_xfer>; | 
|  | 735 | }; | 
|  | 736 |  | 
|  | 737 | &mmc0 { | 
|  | 738 | clock-frequency = <50000000>; | 
|  | 739 | dmas = <&dmac2 1>; | 
|  | 740 | dma-names = "rx-tx"; | 
|  | 741 | max-frequency = <50000000>; | 
|  | 742 | pinctrl-names = "default"; | 
|  | 743 | pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4>; | 
|  | 744 | }; | 
|  | 745 |  | 
|  | 746 | &mmc1 { | 
|  | 747 | dmas = <&dmac2 3>; | 
|  | 748 | dma-names = "rx-tx"; | 
|  | 749 | pinctrl-names = "default"; | 
|  | 750 | pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_cd &sd1_bus4>; | 
|  | 751 | }; | 
|  | 752 |  | 
|  | 753 | &emmc { | 
|  | 754 | dmas = <&dmac2 4>; | 
|  | 755 | dma-names = "rx-tx"; | 
|  | 756 | }; | 
|  | 757 |  | 
|  | 758 | &pmu { | 
|  | 759 | power: power-controller { | 
|  | 760 | compatible = "rockchip,rk3066-power-controller"; | 
|  | 761 | #power-domain-cells = <1>; | 
|  | 762 | #address-cells = <1>; | 
|  | 763 | #size-cells = <0>; | 
|  | 764 |  | 
|  | 765 | power-domain@RK3066_PD_VIO { | 
|  | 766 | reg = <RK3066_PD_VIO>; | 
|  | 767 | clocks = <&cru ACLK_LCDC0>, | 
|  | 768 | <&cru ACLK_LCDC1>, | 
|  | 769 | <&cru DCLK_LCDC0>, | 
|  | 770 | <&cru DCLK_LCDC1>, | 
|  | 771 | <&cru HCLK_LCDC0>, | 
|  | 772 | <&cru HCLK_LCDC1>, | 
|  | 773 | <&cru SCLK_CIF1>, | 
|  | 774 | <&cru ACLK_CIF1>, | 
|  | 775 | <&cru HCLK_CIF1>, | 
|  | 776 | <&cru SCLK_CIF0>, | 
|  | 777 | <&cru ACLK_CIF0>, | 
|  | 778 | <&cru HCLK_CIF0>, | 
|  | 779 | <&cru HCLK_HDMI>, | 
|  | 780 | <&cru ACLK_IPP>, | 
|  | 781 | <&cru HCLK_IPP>, | 
|  | 782 | <&cru ACLK_RGA>, | 
|  | 783 | <&cru HCLK_RGA>; | 
|  | 784 | pm_qos = <&qos_lcdc0>, | 
|  | 785 | <&qos_lcdc1>, | 
|  | 786 | <&qos_cif0>, | 
|  | 787 | <&qos_cif1>, | 
|  | 788 | <&qos_ipp>, | 
|  | 789 | <&qos_rga>; | 
|  | 790 | }; | 
|  | 791 |  | 
|  | 792 | power-domain@RK3066_PD_VIDEO { | 
|  | 793 | reg = <RK3066_PD_VIDEO>; | 
|  | 794 | clocks = <&cru ACLK_VDPU>, | 
|  | 795 | <&cru ACLK_VEPU>, | 
|  | 796 | <&cru HCLK_VDPU>, | 
|  | 797 | <&cru HCLK_VEPU>; | 
|  | 798 | pm_qos = <&qos_vpu>; | 
|  | 799 | }; | 
|  | 800 |  | 
|  | 801 | power-domain@RK3066_PD_GPU { | 
|  | 802 | reg = <RK3066_PD_GPU>; | 
|  | 803 | clocks = <&cru ACLK_GPU>; | 
|  | 804 | pm_qos = <&qos_gpu>; | 
|  | 805 | }; | 
|  | 806 | }; | 
|  | 807 | }; | 
|  | 808 |  | 
|  | 809 | &pwm0 { | 
|  | 810 | pinctrl-names = "default"; | 
|  | 811 | pinctrl-0 = <&pwm0_out>; | 
|  | 812 | }; | 
|  | 813 |  | 
|  | 814 | &pwm1 { | 
|  | 815 | pinctrl-names = "default"; | 
|  | 816 | pinctrl-0 = <&pwm1_out>; | 
|  | 817 | }; | 
|  | 818 |  | 
|  | 819 | &pwm2 { | 
|  | 820 | pinctrl-names = "default"; | 
|  | 821 | pinctrl-0 = <&pwm2_out>; | 
|  | 822 | }; | 
|  | 823 |  | 
|  | 824 | &pwm3 { | 
|  | 825 | pinctrl-names = "default"; | 
|  | 826 | pinctrl-0 = <&pwm3_out>; | 
|  | 827 | }; | 
|  | 828 |  | 
|  | 829 | &spi0 { | 
|  | 830 | pinctrl-names = "default"; | 
|  | 831 | pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>; | 
|  | 832 | }; | 
|  | 833 |  | 
|  | 834 | &spi1 { | 
|  | 835 | pinctrl-names = "default"; | 
|  | 836 | pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>; | 
|  | 837 | }; | 
|  | 838 |  | 
|  | 839 | &uart0 { | 
|  | 840 | compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; | 
|  | 841 | dmas = <&dmac1_s 0>, <&dmac1_s 1>; | 
|  | 842 | dma-names = "tx", "rx"; | 
|  | 843 | pinctrl-names = "default"; | 
|  | 844 | pinctrl-0 = <&uart0_xfer>; | 
|  | 845 | }; | 
|  | 846 |  | 
|  | 847 | &uart1 { | 
|  | 848 | compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; | 
|  | 849 | dmas = <&dmac1_s 2>, <&dmac1_s 3>; | 
|  | 850 | dma-names = "tx", "rx"; | 
|  | 851 | pinctrl-names = "default"; | 
|  | 852 | pinctrl-0 = <&uart1_xfer>; | 
|  | 853 | }; | 
|  | 854 |  | 
|  | 855 | &uart2 { | 
|  | 856 | compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; | 
|  | 857 | dmas = <&dmac2 6>, <&dmac2 7>; | 
|  | 858 | dma-names = "tx", "rx"; | 
|  | 859 | pinctrl-names = "default"; | 
|  | 860 | pinctrl-0 = <&uart2_xfer>; | 
|  | 861 | }; | 
|  | 862 |  | 
|  | 863 | &uart3 { | 
|  | 864 | compatible = "rockchip,rk3066-uart", "snps,dw-apb-uart"; | 
|  | 865 | dmas = <&dmac2 8>, <&dmac2 9>; | 
|  | 866 | dma-names = "tx", "rx"; | 
|  | 867 | pinctrl-names = "default"; | 
|  | 868 | pinctrl-0 = <&uart3_xfer>; | 
|  | 869 | }; | 
|  | 870 |  | 
|  | 871 | &wdt { | 
|  | 872 | compatible = "rockchip,rk3066-wdt", "snps,dw-wdt"; | 
|  | 873 | }; | 
|  | 874 |  | 
|  | 875 | &emac { | 
|  | 876 | compatible = "rockchip,rk3066-emac"; | 
|  | 877 | }; |