1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Copyright 2014 Chen-Yu Tsai 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Chen-Yu Tsai <wens@csie.org> 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms 7*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual 8*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a 9*4882a593Smuzhiyun * whole. 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * a) This file is free software; you can redistribute it and/or 12*4882a593Smuzhiyun * modify it under the terms of the GNU General Public License as 13*4882a593Smuzhiyun * published by the Free Software Foundation; either version 2 of the 14*4882a593Smuzhiyun * License, or (at your option) any later version. 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun * This file is distributed in the hope that it will be useful, 17*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 18*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*4882a593Smuzhiyun * GNU General Public License for more details. 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun * Or, alternatively, 22*4882a593Smuzhiyun * 23*4882a593Smuzhiyun * b) Permission is hereby granted, free of charge, to any person 24*4882a593Smuzhiyun * obtaining a copy of this software and associated documentation 25*4882a593Smuzhiyun * files (the "Software"), to deal in the Software without 26*4882a593Smuzhiyun * restriction, including without limitation the rights to use, 27*4882a593Smuzhiyun * copy, modify, merge, publish, distribute, sublicense, and/or 28*4882a593Smuzhiyun * sell copies of the Software, and to permit persons to whom the 29*4882a593Smuzhiyun * Software is furnished to do so, subject to the following 30*4882a593Smuzhiyun * conditions: 31*4882a593Smuzhiyun * 32*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be 33*4882a593Smuzhiyun * included in all copies or substantial portions of the Software. 34*4882a593Smuzhiyun * 35*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37*4882a593Smuzhiyun * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39*4882a593Smuzhiyun * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40*4882a593Smuzhiyun * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41*4882a593Smuzhiyun * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42*4882a593Smuzhiyun * OTHER DEALINGS IN THE SOFTWARE. 43*4882a593Smuzhiyun */ 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun#include <dt-bindings/clock/sun8i-a23-a33-ccu.h> 48*4882a593Smuzhiyun#include <dt-bindings/reset/sun8i-a23-a33-ccu.h> 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun/ { 51*4882a593Smuzhiyun interrupt-parent = <&gic>; 52*4882a593Smuzhiyun #address-cells = <1>; 53*4882a593Smuzhiyun #size-cells = <1>; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun chosen { 56*4882a593Smuzhiyun #address-cells = <1>; 57*4882a593Smuzhiyun #size-cells = <1>; 58*4882a593Smuzhiyun ranges; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun simplefb_lcd: framebuffer-lcd0 { 61*4882a593Smuzhiyun compatible = "allwinner,simple-framebuffer", 62*4882a593Smuzhiyun "simple-framebuffer"; 63*4882a593Smuzhiyun allwinner,pipeline = "de_be0-lcd0"; 64*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_LCD>, <&ccu CLK_BUS_DE_BE>, 65*4882a593Smuzhiyun <&ccu CLK_LCD_CH0>, <&ccu CLK_DE_BE>, 66*4882a593Smuzhiyun <&ccu CLK_DRAM_DE_BE>, <&ccu CLK_DRC>; 67*4882a593Smuzhiyun status = "disabled"; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun de: display-engine { 72*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 73*4882a593Smuzhiyun allwinner,pipelines = <&fe0>; 74*4882a593Smuzhiyun status = "disabled"; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun timer { 78*4882a593Smuzhiyun compatible = "arm,armv7-timer"; 79*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 80*4882a593Smuzhiyun <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 81*4882a593Smuzhiyun <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 82*4882a593Smuzhiyun <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 83*4882a593Smuzhiyun clock-frequency = <24000000>; 84*4882a593Smuzhiyun arm,cpu-registers-not-fw-configured; 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun cpus { 88*4882a593Smuzhiyun enable-method = "allwinner,sun8i-a23"; 89*4882a593Smuzhiyun #address-cells = <1>; 90*4882a593Smuzhiyun #size-cells = <0>; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun cpu0: cpu@0 { 93*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 94*4882a593Smuzhiyun device_type = "cpu"; 95*4882a593Smuzhiyun reg = <0>; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun cpu@1 { 99*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 100*4882a593Smuzhiyun device_type = "cpu"; 101*4882a593Smuzhiyun reg = <1>; 102*4882a593Smuzhiyun }; 103*4882a593Smuzhiyun }; 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun clocks { 106*4882a593Smuzhiyun #address-cells = <1>; 107*4882a593Smuzhiyun #size-cells = <1>; 108*4882a593Smuzhiyun ranges; 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun osc24M: osc24M_clk { 111*4882a593Smuzhiyun #clock-cells = <0>; 112*4882a593Smuzhiyun compatible = "fixed-clock"; 113*4882a593Smuzhiyun clock-frequency = <24000000>; 114*4882a593Smuzhiyun clock-accuracy = <50000>; 115*4882a593Smuzhiyun clock-output-names = "osc24M"; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun ext_osc32k: ext_osc32k_clk { 119*4882a593Smuzhiyun #clock-cells = <0>; 120*4882a593Smuzhiyun compatible = "fixed-clock"; 121*4882a593Smuzhiyun clock-frequency = <32768>; 122*4882a593Smuzhiyun clock-accuracy = <50000>; 123*4882a593Smuzhiyun clock-output-names = "ext-osc32k"; 124*4882a593Smuzhiyun }; 125*4882a593Smuzhiyun }; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun soc { 128*4882a593Smuzhiyun compatible = "simple-bus"; 129*4882a593Smuzhiyun #address-cells = <1>; 130*4882a593Smuzhiyun #size-cells = <1>; 131*4882a593Smuzhiyun ranges; 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun system-control@1c00000 { 134*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-system-control"; 135*4882a593Smuzhiyun reg = <0x01c00000 0x30>; 136*4882a593Smuzhiyun #address-cells = <1>; 137*4882a593Smuzhiyun #size-cells = <1>; 138*4882a593Smuzhiyun ranges; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun sram_c: sram@1d00000 { 141*4882a593Smuzhiyun compatible = "mmio-sram"; 142*4882a593Smuzhiyun reg = <0x01d00000 0x80000>; 143*4882a593Smuzhiyun #address-cells = <1>; 144*4882a593Smuzhiyun #size-cells = <1>; 145*4882a593Smuzhiyun ranges = <0 0x01d00000 0x80000>; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun ve_sram: sram-section@0 { 148*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-sram-c1", 149*4882a593Smuzhiyun "allwinner,sun4i-a10-sram-c1"; 150*4882a593Smuzhiyun reg = <0x000000 0x80000>; 151*4882a593Smuzhiyun }; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun dma: dma-controller@1c02000 { 156*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-dma"; 157*4882a593Smuzhiyun reg = <0x01c02000 0x1000>; 158*4882a593Smuzhiyun interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 159*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_DMA>; 160*4882a593Smuzhiyun resets = <&ccu RST_BUS_DMA>; 161*4882a593Smuzhiyun #dma-cells = <1>; 162*4882a593Smuzhiyun }; 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun nfc: nand-controller@1c03000 { 165*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-nand-controller"; 166*4882a593Smuzhiyun reg = <0x01c03000 0x1000>; 167*4882a593Smuzhiyun interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>; 168*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_NAND>, <&ccu CLK_NAND>; 169*4882a593Smuzhiyun clock-names = "ahb", "mod"; 170*4882a593Smuzhiyun resets = <&ccu RST_BUS_NAND>; 171*4882a593Smuzhiyun reset-names = "ahb"; 172*4882a593Smuzhiyun dmas = <&dma 5>; 173*4882a593Smuzhiyun dma-names = "rxtx"; 174*4882a593Smuzhiyun pinctrl-names = "default"; 175*4882a593Smuzhiyun pinctrl-0 = <&nand_pins &nand_cs0_pin &nand_rb0_pin>; 176*4882a593Smuzhiyun status = "disabled"; 177*4882a593Smuzhiyun #address-cells = <1>; 178*4882a593Smuzhiyun #size-cells = <0>; 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun tcon0: lcd-controller@1c0c000 { 182*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 183*4882a593Smuzhiyun reg = <0x01c0c000 0x1000>; 184*4882a593Smuzhiyun interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; 185*4882a593Smuzhiyun dmas = <&dma 12>; 186*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_LCD>, 187*4882a593Smuzhiyun <&ccu CLK_LCD_CH0>, 188*4882a593Smuzhiyun <&ccu 13>; 189*4882a593Smuzhiyun clock-names = "ahb", 190*4882a593Smuzhiyun "tcon-ch0", 191*4882a593Smuzhiyun "lvds-alt"; 192*4882a593Smuzhiyun clock-output-names = "tcon-pixel-clock"; 193*4882a593Smuzhiyun #clock-cells = <0>; 194*4882a593Smuzhiyun resets = <&ccu RST_BUS_LCD>, 195*4882a593Smuzhiyun <&ccu RST_BUS_LVDS>; 196*4882a593Smuzhiyun reset-names = "lcd", 197*4882a593Smuzhiyun "lvds"; 198*4882a593Smuzhiyun status = "disabled"; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun ports { 201*4882a593Smuzhiyun #address-cells = <1>; 202*4882a593Smuzhiyun #size-cells = <0>; 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun tcon0_in: port@0 { 205*4882a593Smuzhiyun reg = <0>; 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun tcon0_in_drc0: endpoint { 208*4882a593Smuzhiyun remote-endpoint = <&drc0_out_tcon0>; 209*4882a593Smuzhiyun }; 210*4882a593Smuzhiyun }; 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun tcon0_out: port@1 { 213*4882a593Smuzhiyun reg = <1>; 214*4882a593Smuzhiyun }; 215*4882a593Smuzhiyun }; 216*4882a593Smuzhiyun }; 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun mmc0: mmc@1c0f000 { 219*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-mmc"; 220*4882a593Smuzhiyun reg = <0x01c0f000 0x1000>; 221*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_MMC0>, 222*4882a593Smuzhiyun <&ccu CLK_MMC0>, 223*4882a593Smuzhiyun <&ccu CLK_MMC0_OUTPUT>, 224*4882a593Smuzhiyun <&ccu CLK_MMC0_SAMPLE>; 225*4882a593Smuzhiyun clock-names = "ahb", 226*4882a593Smuzhiyun "mmc", 227*4882a593Smuzhiyun "output", 228*4882a593Smuzhiyun "sample"; 229*4882a593Smuzhiyun resets = <&ccu RST_BUS_MMC0>; 230*4882a593Smuzhiyun reset-names = "ahb"; 231*4882a593Smuzhiyun interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 232*4882a593Smuzhiyun pinctrl-names = "default"; 233*4882a593Smuzhiyun pinctrl-0 = <&mmc0_pins>; 234*4882a593Smuzhiyun status = "disabled"; 235*4882a593Smuzhiyun #address-cells = <1>; 236*4882a593Smuzhiyun #size-cells = <0>; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun mmc1: mmc@1c10000 { 240*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-mmc"; 241*4882a593Smuzhiyun reg = <0x01c10000 0x1000>; 242*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_MMC1>, 243*4882a593Smuzhiyun <&ccu CLK_MMC1>, 244*4882a593Smuzhiyun <&ccu CLK_MMC1_OUTPUT>, 245*4882a593Smuzhiyun <&ccu CLK_MMC1_SAMPLE>; 246*4882a593Smuzhiyun clock-names = "ahb", 247*4882a593Smuzhiyun "mmc", 248*4882a593Smuzhiyun "output", 249*4882a593Smuzhiyun "sample"; 250*4882a593Smuzhiyun resets = <&ccu RST_BUS_MMC1>; 251*4882a593Smuzhiyun reset-names = "ahb"; 252*4882a593Smuzhiyun interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 253*4882a593Smuzhiyun status = "disabled"; 254*4882a593Smuzhiyun #address-cells = <1>; 255*4882a593Smuzhiyun #size-cells = <0>; 256*4882a593Smuzhiyun }; 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun mmc2: mmc@1c11000 { 259*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-mmc"; 260*4882a593Smuzhiyun reg = <0x01c11000 0x1000>; 261*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_MMC2>, 262*4882a593Smuzhiyun <&ccu CLK_MMC2>, 263*4882a593Smuzhiyun <&ccu CLK_MMC2_OUTPUT>, 264*4882a593Smuzhiyun <&ccu CLK_MMC2_SAMPLE>; 265*4882a593Smuzhiyun clock-names = "ahb", 266*4882a593Smuzhiyun "mmc", 267*4882a593Smuzhiyun "output", 268*4882a593Smuzhiyun "sample"; 269*4882a593Smuzhiyun resets = <&ccu RST_BUS_MMC2>; 270*4882a593Smuzhiyun reset-names = "ahb"; 271*4882a593Smuzhiyun interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 272*4882a593Smuzhiyun status = "disabled"; 273*4882a593Smuzhiyun #address-cells = <1>; 274*4882a593Smuzhiyun #size-cells = <0>; 275*4882a593Smuzhiyun }; 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun usb_otg: usb@1c19000 { 278*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 279*4882a593Smuzhiyun reg = <0x01c19000 0x0400>; 280*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_OTG>; 281*4882a593Smuzhiyun resets = <&ccu RST_BUS_OTG>; 282*4882a593Smuzhiyun interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 283*4882a593Smuzhiyun interrupt-names = "mc"; 284*4882a593Smuzhiyun phys = <&usbphy 0>; 285*4882a593Smuzhiyun phy-names = "usb"; 286*4882a593Smuzhiyun extcon = <&usbphy 0>; 287*4882a593Smuzhiyun dr_mode = "otg"; 288*4882a593Smuzhiyun status = "disabled"; 289*4882a593Smuzhiyun }; 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun usbphy: phy@1c19400 { 292*4882a593Smuzhiyun /* 293*4882a593Smuzhiyun * compatible and address regions get set in 294*4882a593Smuzhiyun * SoC specific dtsi file 295*4882a593Smuzhiyun */ 296*4882a593Smuzhiyun clocks = <&ccu CLK_USB_PHY0>, 297*4882a593Smuzhiyun <&ccu CLK_USB_PHY1>; 298*4882a593Smuzhiyun clock-names = "usb0_phy", 299*4882a593Smuzhiyun "usb1_phy"; 300*4882a593Smuzhiyun resets = <&ccu RST_USB_PHY0>, 301*4882a593Smuzhiyun <&ccu RST_USB_PHY1>; 302*4882a593Smuzhiyun reset-names = "usb0_reset", 303*4882a593Smuzhiyun "usb1_reset"; 304*4882a593Smuzhiyun status = "disabled"; 305*4882a593Smuzhiyun #phy-cells = <1>; 306*4882a593Smuzhiyun }; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun ehci0: usb@1c1a000 { 309*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-ehci", "generic-ehci"; 310*4882a593Smuzhiyun reg = <0x01c1a000 0x100>; 311*4882a593Smuzhiyun interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 312*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_EHCI>; 313*4882a593Smuzhiyun resets = <&ccu RST_BUS_EHCI>; 314*4882a593Smuzhiyun phys = <&usbphy 1>; 315*4882a593Smuzhiyun phy-names = "usb"; 316*4882a593Smuzhiyun status = "disabled"; 317*4882a593Smuzhiyun }; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun ohci0: usb@1c1a400 { 320*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-ohci", "generic-ohci"; 321*4882a593Smuzhiyun reg = <0x01c1a400 0x100>; 322*4882a593Smuzhiyun interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 323*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_OHCI>, <&ccu CLK_USB_OHCI>; 324*4882a593Smuzhiyun resets = <&ccu RST_BUS_OHCI>; 325*4882a593Smuzhiyun phys = <&usbphy 1>; 326*4882a593Smuzhiyun phy-names = "usb"; 327*4882a593Smuzhiyun status = "disabled"; 328*4882a593Smuzhiyun }; 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun ccu: clock@1c20000 { 331*4882a593Smuzhiyun reg = <0x01c20000 0x400>; 332*4882a593Smuzhiyun clocks = <&osc24M>, <&rtc 0>; 333*4882a593Smuzhiyun clock-names = "hosc", "losc"; 334*4882a593Smuzhiyun #clock-cells = <1>; 335*4882a593Smuzhiyun #reset-cells = <1>; 336*4882a593Smuzhiyun }; 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun pio: pinctrl@1c20800 { 339*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 340*4882a593Smuzhiyun reg = <0x01c20800 0x400>; 341*4882a593Smuzhiyun /* interrupts get set in SoC specific dtsi file */ 342*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; 343*4882a593Smuzhiyun clock-names = "apb", "hosc", "losc"; 344*4882a593Smuzhiyun gpio-controller; 345*4882a593Smuzhiyun interrupt-controller; 346*4882a593Smuzhiyun #interrupt-cells = <3>; 347*4882a593Smuzhiyun #gpio-cells = <3>; 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun i2c0_pins: i2c0-pins { 350*4882a593Smuzhiyun pins = "PH2", "PH3"; 351*4882a593Smuzhiyun function = "i2c0"; 352*4882a593Smuzhiyun }; 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun i2c1_pins: i2c1-pins { 355*4882a593Smuzhiyun pins = "PH4", "PH5"; 356*4882a593Smuzhiyun function = "i2c1"; 357*4882a593Smuzhiyun }; 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun i2c2_pins: i2c2-pins { 360*4882a593Smuzhiyun pins = "PE12", "PE13"; 361*4882a593Smuzhiyun function = "i2c2"; 362*4882a593Smuzhiyun }; 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun lcd_rgb666_pins: lcd-rgb666-pins { 365*4882a593Smuzhiyun pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", 366*4882a593Smuzhiyun "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", 367*4882a593Smuzhiyun "PD18", "PD19", "PD20", "PD21", "PD22", "PD23", 368*4882a593Smuzhiyun "PD24", "PD25", "PD26", "PD27"; 369*4882a593Smuzhiyun function = "lcd0"; 370*4882a593Smuzhiyun }; 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun mmc0_pins: mmc0-pins { 373*4882a593Smuzhiyun pins = "PF0", "PF1", "PF2", 374*4882a593Smuzhiyun "PF3", "PF4", "PF5"; 375*4882a593Smuzhiyun function = "mmc0"; 376*4882a593Smuzhiyun drive-strength = <30>; 377*4882a593Smuzhiyun bias-pull-up; 378*4882a593Smuzhiyun }; 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun mmc1_pg_pins: mmc1-pg-pins { 381*4882a593Smuzhiyun pins = "PG0", "PG1", "PG2", 382*4882a593Smuzhiyun "PG3", "PG4", "PG5"; 383*4882a593Smuzhiyun function = "mmc1"; 384*4882a593Smuzhiyun drive-strength = <30>; 385*4882a593Smuzhiyun bias-pull-up; 386*4882a593Smuzhiyun }; 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun mmc2_8bit_pins: mmc2-8bit-pins { 389*4882a593Smuzhiyun pins = "PC5", "PC6", "PC8", 390*4882a593Smuzhiyun "PC9", "PC10", "PC11", 391*4882a593Smuzhiyun "PC12", "PC13", "PC14", 392*4882a593Smuzhiyun "PC15", "PC16"; 393*4882a593Smuzhiyun function = "mmc2"; 394*4882a593Smuzhiyun drive-strength = <30>; 395*4882a593Smuzhiyun bias-pull-up; 396*4882a593Smuzhiyun }; 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun nand_pins: nand-pins { 399*4882a593Smuzhiyun pins = "PC0", "PC1", "PC2", "PC5", 400*4882a593Smuzhiyun "PC8", "PC9", "PC10", "PC11", 401*4882a593Smuzhiyun "PC12", "PC13", "PC14", "PC15"; 402*4882a593Smuzhiyun function = "nand0"; 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun nand_cs0_pin: nand-cs0-pin { 406*4882a593Smuzhiyun pins = "PC4"; 407*4882a593Smuzhiyun function = "nand0"; 408*4882a593Smuzhiyun bias-pull-up; 409*4882a593Smuzhiyun }; 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun nand_cs1_pin: nand-cs1-pin { 412*4882a593Smuzhiyun pins = "PC3"; 413*4882a593Smuzhiyun function = "nand0"; 414*4882a593Smuzhiyun bias-pull-up; 415*4882a593Smuzhiyun }; 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun nand_rb0_pin: nand-rb0-pin { 418*4882a593Smuzhiyun pins = "PC6"; 419*4882a593Smuzhiyun function = "nand0"; 420*4882a593Smuzhiyun bias-pull-up; 421*4882a593Smuzhiyun }; 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun nand_rb1_pin: nand-rb1-pin { 424*4882a593Smuzhiyun pins = "PC7"; 425*4882a593Smuzhiyun function = "nand0"; 426*4882a593Smuzhiyun bias-pull-up; 427*4882a593Smuzhiyun }; 428*4882a593Smuzhiyun 429*4882a593Smuzhiyun pwm0_pin: pwm0-pin { 430*4882a593Smuzhiyun pins = "PH0"; 431*4882a593Smuzhiyun function = "pwm0"; 432*4882a593Smuzhiyun }; 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun uart0_pf_pins: uart0-pf-pins { 435*4882a593Smuzhiyun pins = "PF2", "PF4"; 436*4882a593Smuzhiyun function = "uart0"; 437*4882a593Smuzhiyun }; 438*4882a593Smuzhiyun 439*4882a593Smuzhiyun uart1_pg_pins: uart1-pg-pins { 440*4882a593Smuzhiyun pins = "PG6", "PG7"; 441*4882a593Smuzhiyun function = "uart1"; 442*4882a593Smuzhiyun }; 443*4882a593Smuzhiyun 444*4882a593Smuzhiyun uart1_cts_rts_pg_pins: uart1-cts-rts-pg-pins { 445*4882a593Smuzhiyun pins = "PG8", "PG9"; 446*4882a593Smuzhiyun function = "uart1"; 447*4882a593Smuzhiyun }; 448*4882a593Smuzhiyun }; 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun timer@1c20c00 { 451*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-timer"; 452*4882a593Smuzhiyun reg = <0x01c20c00 0xa0>; 453*4882a593Smuzhiyun interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 454*4882a593Smuzhiyun <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; 455*4882a593Smuzhiyun clocks = <&osc24M>; 456*4882a593Smuzhiyun }; 457*4882a593Smuzhiyun 458*4882a593Smuzhiyun wdt0: watchdog@1c20ca0 { 459*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-wdt"; 460*4882a593Smuzhiyun reg = <0x01c20ca0 0x20>; 461*4882a593Smuzhiyun interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 462*4882a593Smuzhiyun clocks = <&osc24M>; 463*4882a593Smuzhiyun }; 464*4882a593Smuzhiyun 465*4882a593Smuzhiyun pwm: pwm@1c21400 { 466*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-pwm"; 467*4882a593Smuzhiyun reg = <0x01c21400 0xc>; 468*4882a593Smuzhiyun clocks = <&osc24M>; 469*4882a593Smuzhiyun #pwm-cells = <3>; 470*4882a593Smuzhiyun status = "disabled"; 471*4882a593Smuzhiyun }; 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun lradc: lradc@1c22800 { 474*4882a593Smuzhiyun compatible = "allwinner,sun4i-a10-lradc-keys"; 475*4882a593Smuzhiyun reg = <0x01c22800 0x100>; 476*4882a593Smuzhiyun interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 477*4882a593Smuzhiyun status = "disabled"; 478*4882a593Smuzhiyun }; 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun uart0: serial@1c28000 { 481*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 482*4882a593Smuzhiyun reg = <0x01c28000 0x400>; 483*4882a593Smuzhiyun interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 484*4882a593Smuzhiyun reg-shift = <2>; 485*4882a593Smuzhiyun reg-io-width = <4>; 486*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART0>; 487*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART0>; 488*4882a593Smuzhiyun dmas = <&dma 6>, <&dma 6>; 489*4882a593Smuzhiyun dma-names = "rx", "tx"; 490*4882a593Smuzhiyun status = "disabled"; 491*4882a593Smuzhiyun }; 492*4882a593Smuzhiyun 493*4882a593Smuzhiyun uart1: serial@1c28400 { 494*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 495*4882a593Smuzhiyun reg = <0x01c28400 0x400>; 496*4882a593Smuzhiyun interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 497*4882a593Smuzhiyun reg-shift = <2>; 498*4882a593Smuzhiyun reg-io-width = <4>; 499*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART1>; 500*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART1>; 501*4882a593Smuzhiyun dmas = <&dma 7>, <&dma 7>; 502*4882a593Smuzhiyun dma-names = "rx", "tx"; 503*4882a593Smuzhiyun status = "disabled"; 504*4882a593Smuzhiyun }; 505*4882a593Smuzhiyun 506*4882a593Smuzhiyun uart2: serial@1c28800 { 507*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 508*4882a593Smuzhiyun reg = <0x01c28800 0x400>; 509*4882a593Smuzhiyun interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 510*4882a593Smuzhiyun reg-shift = <2>; 511*4882a593Smuzhiyun reg-io-width = <4>; 512*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART2>; 513*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART2>; 514*4882a593Smuzhiyun dmas = <&dma 8>, <&dma 8>; 515*4882a593Smuzhiyun dma-names = "rx", "tx"; 516*4882a593Smuzhiyun status = "disabled"; 517*4882a593Smuzhiyun }; 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun uart3: serial@1c28c00 { 520*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 521*4882a593Smuzhiyun reg = <0x01c28c00 0x400>; 522*4882a593Smuzhiyun interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 523*4882a593Smuzhiyun reg-shift = <2>; 524*4882a593Smuzhiyun reg-io-width = <4>; 525*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART3>; 526*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART3>; 527*4882a593Smuzhiyun dmas = <&dma 9>, <&dma 9>; 528*4882a593Smuzhiyun dma-names = "rx", "tx"; 529*4882a593Smuzhiyun status = "disabled"; 530*4882a593Smuzhiyun }; 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun uart4: serial@1c29000 { 533*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 534*4882a593Smuzhiyun reg = <0x01c29000 0x400>; 535*4882a593Smuzhiyun interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 536*4882a593Smuzhiyun reg-shift = <2>; 537*4882a593Smuzhiyun reg-io-width = <4>; 538*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART4>; 539*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART4>; 540*4882a593Smuzhiyun dmas = <&dma 10>, <&dma 10>; 541*4882a593Smuzhiyun dma-names = "rx", "tx"; 542*4882a593Smuzhiyun status = "disabled"; 543*4882a593Smuzhiyun }; 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun i2c0: i2c@1c2ac00 { 546*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-i2c"; 547*4882a593Smuzhiyun reg = <0x01c2ac00 0x400>; 548*4882a593Smuzhiyun interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 549*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_I2C0>; 550*4882a593Smuzhiyun resets = <&ccu RST_BUS_I2C0>; 551*4882a593Smuzhiyun pinctrl-names = "default"; 552*4882a593Smuzhiyun pinctrl-0 = <&i2c0_pins>; 553*4882a593Smuzhiyun status = "disabled"; 554*4882a593Smuzhiyun #address-cells = <1>; 555*4882a593Smuzhiyun #size-cells = <0>; 556*4882a593Smuzhiyun }; 557*4882a593Smuzhiyun 558*4882a593Smuzhiyun i2c1: i2c@1c2b000 { 559*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-i2c"; 560*4882a593Smuzhiyun reg = <0x01c2b000 0x400>; 561*4882a593Smuzhiyun interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 562*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_I2C1>; 563*4882a593Smuzhiyun resets = <&ccu RST_BUS_I2C1>; 564*4882a593Smuzhiyun pinctrl-names = "default"; 565*4882a593Smuzhiyun pinctrl-0 = <&i2c1_pins>; 566*4882a593Smuzhiyun status = "disabled"; 567*4882a593Smuzhiyun #address-cells = <1>; 568*4882a593Smuzhiyun #size-cells = <0>; 569*4882a593Smuzhiyun }; 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun i2c2: i2c@1c2b400 { 572*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-i2c"; 573*4882a593Smuzhiyun reg = <0x01c2b400 0x400>; 574*4882a593Smuzhiyun interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 575*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_I2C2>; 576*4882a593Smuzhiyun resets = <&ccu RST_BUS_I2C2>; 577*4882a593Smuzhiyun pinctrl-names = "default"; 578*4882a593Smuzhiyun pinctrl-0 = <&i2c2_pins>; 579*4882a593Smuzhiyun status = "disabled"; 580*4882a593Smuzhiyun #address-cells = <1>; 581*4882a593Smuzhiyun #size-cells = <0>; 582*4882a593Smuzhiyun }; 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun mali: gpu@1c40000 { 585*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-mali", 586*4882a593Smuzhiyun "allwinner,sun7i-a20-mali", "arm,mali-400"; 587*4882a593Smuzhiyun reg = <0x01c40000 0x10000>; 588*4882a593Smuzhiyun interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>, 589*4882a593Smuzhiyun <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, 590*4882a593Smuzhiyun <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>, 591*4882a593Smuzhiyun <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>, 592*4882a593Smuzhiyun <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>, 593*4882a593Smuzhiyun <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>, 594*4882a593Smuzhiyun <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; 595*4882a593Smuzhiyun interrupt-names = "gp", 596*4882a593Smuzhiyun "gpmmu", 597*4882a593Smuzhiyun "pp0", 598*4882a593Smuzhiyun "ppmmu0", 599*4882a593Smuzhiyun "pp1", 600*4882a593Smuzhiyun "ppmmu1", 601*4882a593Smuzhiyun "pmu"; 602*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_GPU>, <&ccu CLK_GPU>; 603*4882a593Smuzhiyun clock-names = "bus", "core"; 604*4882a593Smuzhiyun resets = <&ccu RST_BUS_GPU>; 605*4882a593Smuzhiyun #cooling-cells = <2>; 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun assigned-clocks = <&ccu CLK_GPU>; 608*4882a593Smuzhiyun assigned-clock-rates = <384000000>; 609*4882a593Smuzhiyun }; 610*4882a593Smuzhiyun 611*4882a593Smuzhiyun gic: interrupt-controller@1c81000 { 612*4882a593Smuzhiyun compatible = "arm,gic-400"; 613*4882a593Smuzhiyun reg = <0x01c81000 0x1000>, 614*4882a593Smuzhiyun <0x01c82000 0x2000>, 615*4882a593Smuzhiyun <0x01c84000 0x2000>, 616*4882a593Smuzhiyun <0x01c86000 0x2000>; 617*4882a593Smuzhiyun interrupt-controller; 618*4882a593Smuzhiyun #interrupt-cells = <3>; 619*4882a593Smuzhiyun interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 620*4882a593Smuzhiyun }; 621*4882a593Smuzhiyun 622*4882a593Smuzhiyun fe0: display-frontend@1e00000 { 623*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 624*4882a593Smuzhiyun reg = <0x01e00000 0x20000>; 625*4882a593Smuzhiyun interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; 626*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_DE_FE>, <&ccu CLK_DE_FE>, 627*4882a593Smuzhiyun <&ccu CLK_DRAM_DE_FE>; 628*4882a593Smuzhiyun clock-names = "ahb", "mod", 629*4882a593Smuzhiyun "ram"; 630*4882a593Smuzhiyun resets = <&ccu RST_BUS_DE_FE>; 631*4882a593Smuzhiyun 632*4882a593Smuzhiyun ports { 633*4882a593Smuzhiyun #address-cells = <1>; 634*4882a593Smuzhiyun #size-cells = <0>; 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun fe0_out: port@1 { 637*4882a593Smuzhiyun reg = <1>; 638*4882a593Smuzhiyun 639*4882a593Smuzhiyun fe0_out_be0: endpoint { 640*4882a593Smuzhiyun remote-endpoint = <&be0_in_fe0>; 641*4882a593Smuzhiyun }; 642*4882a593Smuzhiyun }; 643*4882a593Smuzhiyun }; 644*4882a593Smuzhiyun }; 645*4882a593Smuzhiyun 646*4882a593Smuzhiyun be0: display-backend@1e60000 { 647*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 648*4882a593Smuzhiyun reg = <0x01e60000 0x10000>; 649*4882a593Smuzhiyun interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; 650*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>, 651*4882a593Smuzhiyun <&ccu CLK_DRAM_DE_BE>; 652*4882a593Smuzhiyun clock-names = "ahb", "mod", 653*4882a593Smuzhiyun "ram"; 654*4882a593Smuzhiyun resets = <&ccu RST_BUS_DE_BE>; 655*4882a593Smuzhiyun 656*4882a593Smuzhiyun ports { 657*4882a593Smuzhiyun #address-cells = <1>; 658*4882a593Smuzhiyun #size-cells = <0>; 659*4882a593Smuzhiyun 660*4882a593Smuzhiyun be0_in: port@0 { 661*4882a593Smuzhiyun reg = <0>; 662*4882a593Smuzhiyun 663*4882a593Smuzhiyun be0_in_fe0: endpoint { 664*4882a593Smuzhiyun remote-endpoint = <&fe0_out_be0>; 665*4882a593Smuzhiyun }; 666*4882a593Smuzhiyun }; 667*4882a593Smuzhiyun 668*4882a593Smuzhiyun be0_out: port@1 { 669*4882a593Smuzhiyun reg = <1>; 670*4882a593Smuzhiyun 671*4882a593Smuzhiyun be0_out_drc0: endpoint { 672*4882a593Smuzhiyun remote-endpoint = <&drc0_in_be0>; 673*4882a593Smuzhiyun }; 674*4882a593Smuzhiyun }; 675*4882a593Smuzhiyun }; 676*4882a593Smuzhiyun }; 677*4882a593Smuzhiyun 678*4882a593Smuzhiyun drc0: drc@1e70000 { 679*4882a593Smuzhiyun /* compatible gets set in SoC specific dtsi file */ 680*4882a593Smuzhiyun reg = <0x01e70000 0x10000>; 681*4882a593Smuzhiyun interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 682*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_DRC>, <&ccu CLK_DRC>, 683*4882a593Smuzhiyun <&ccu CLK_DRAM_DRC>; 684*4882a593Smuzhiyun clock-names = "ahb", "mod", "ram"; 685*4882a593Smuzhiyun resets = <&ccu RST_BUS_DRC>; 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun ports { 688*4882a593Smuzhiyun #address-cells = <1>; 689*4882a593Smuzhiyun #size-cells = <0>; 690*4882a593Smuzhiyun 691*4882a593Smuzhiyun drc0_in: port@0 { 692*4882a593Smuzhiyun reg = <0>; 693*4882a593Smuzhiyun 694*4882a593Smuzhiyun drc0_in_be0: endpoint { 695*4882a593Smuzhiyun remote-endpoint = <&be0_out_drc0>; 696*4882a593Smuzhiyun }; 697*4882a593Smuzhiyun }; 698*4882a593Smuzhiyun 699*4882a593Smuzhiyun drc0_out: port@1 { 700*4882a593Smuzhiyun reg = <1>; 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun drc0_out_tcon0: endpoint { 703*4882a593Smuzhiyun remote-endpoint = <&tcon0_in_drc0>; 704*4882a593Smuzhiyun }; 705*4882a593Smuzhiyun }; 706*4882a593Smuzhiyun }; 707*4882a593Smuzhiyun }; 708*4882a593Smuzhiyun 709*4882a593Smuzhiyun rtc: rtc@1f00000 { 710*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-rtc"; 711*4882a593Smuzhiyun reg = <0x01f00000 0x400>; 712*4882a593Smuzhiyun interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 713*4882a593Smuzhiyun <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 714*4882a593Smuzhiyun clock-output-names = "osc32k", "osc32k-out"; 715*4882a593Smuzhiyun clocks = <&ext_osc32k>; 716*4882a593Smuzhiyun #clock-cells = <1>; 717*4882a593Smuzhiyun }; 718*4882a593Smuzhiyun 719*4882a593Smuzhiyun nmi_intc: interrupt-controller@1f00c00 { 720*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-r-intc"; 721*4882a593Smuzhiyun interrupt-controller; 722*4882a593Smuzhiyun #interrupt-cells = <2>; 723*4882a593Smuzhiyun reg = <0x01f00c00 0x400>; 724*4882a593Smuzhiyun interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 725*4882a593Smuzhiyun }; 726*4882a593Smuzhiyun 727*4882a593Smuzhiyun prcm@1f01400 { 728*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-prcm"; 729*4882a593Smuzhiyun reg = <0x01f01400 0x200>; 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun ar100: ar100_clk { 732*4882a593Smuzhiyun compatible = "fixed-factor-clock"; 733*4882a593Smuzhiyun #clock-cells = <0>; 734*4882a593Smuzhiyun clock-div = <1>; 735*4882a593Smuzhiyun clock-mult = <1>; 736*4882a593Smuzhiyun clocks = <&osc24M>; 737*4882a593Smuzhiyun clock-output-names = "ar100"; 738*4882a593Smuzhiyun }; 739*4882a593Smuzhiyun 740*4882a593Smuzhiyun ahb0: ahb0_clk { 741*4882a593Smuzhiyun compatible = "fixed-factor-clock"; 742*4882a593Smuzhiyun #clock-cells = <0>; 743*4882a593Smuzhiyun clock-div = <1>; 744*4882a593Smuzhiyun clock-mult = <1>; 745*4882a593Smuzhiyun clocks = <&ar100>; 746*4882a593Smuzhiyun clock-output-names = "ahb0"; 747*4882a593Smuzhiyun }; 748*4882a593Smuzhiyun 749*4882a593Smuzhiyun apb0: apb0_clk { 750*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-apb0-clk"; 751*4882a593Smuzhiyun #clock-cells = <0>; 752*4882a593Smuzhiyun clocks = <&ahb0>; 753*4882a593Smuzhiyun clock-output-names = "apb0"; 754*4882a593Smuzhiyun }; 755*4882a593Smuzhiyun 756*4882a593Smuzhiyun apb0_gates: apb0_gates_clk { 757*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-apb0-gates-clk"; 758*4882a593Smuzhiyun #clock-cells = <1>; 759*4882a593Smuzhiyun clocks = <&apb0>; 760*4882a593Smuzhiyun clock-output-names = "apb0_pio", "apb0_timer", 761*4882a593Smuzhiyun "apb0_rsb", "apb0_uart", 762*4882a593Smuzhiyun "apb0_i2c"; 763*4882a593Smuzhiyun }; 764*4882a593Smuzhiyun 765*4882a593Smuzhiyun apb0_rst: apb0_rst { 766*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-clock-reset"; 767*4882a593Smuzhiyun #reset-cells = <1>; 768*4882a593Smuzhiyun }; 769*4882a593Smuzhiyun 770*4882a593Smuzhiyun codec_analog: codec-analog { 771*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-codec-analog"; 772*4882a593Smuzhiyun }; 773*4882a593Smuzhiyun }; 774*4882a593Smuzhiyun 775*4882a593Smuzhiyun cpucfg@1f01c00 { 776*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-cpuconfig"; 777*4882a593Smuzhiyun reg = <0x01f01c00 0x300>; 778*4882a593Smuzhiyun }; 779*4882a593Smuzhiyun 780*4882a593Smuzhiyun r_uart: serial@1f02800 { 781*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 782*4882a593Smuzhiyun reg = <0x01f02800 0x400>; 783*4882a593Smuzhiyun interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 784*4882a593Smuzhiyun reg-shift = <2>; 785*4882a593Smuzhiyun reg-io-width = <4>; 786*4882a593Smuzhiyun clocks = <&apb0_gates 4>; 787*4882a593Smuzhiyun resets = <&apb0_rst 4>; 788*4882a593Smuzhiyun status = "disabled"; 789*4882a593Smuzhiyun }; 790*4882a593Smuzhiyun 791*4882a593Smuzhiyun r_i2c: i2c@1f02400 { 792*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-i2c", 793*4882a593Smuzhiyun "allwinner,sun6i-a31-i2c"; 794*4882a593Smuzhiyun reg = <0x01f02400 0x400>; 795*4882a593Smuzhiyun interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; 796*4882a593Smuzhiyun pinctrl-names = "default"; 797*4882a593Smuzhiyun pinctrl-0 = <&r_i2c_pins>; 798*4882a593Smuzhiyun clocks = <&apb0_gates 6>; 799*4882a593Smuzhiyun resets = <&apb0_rst 6>; 800*4882a593Smuzhiyun status = "disabled"; 801*4882a593Smuzhiyun #address-cells = <1>; 802*4882a593Smuzhiyun #size-cells = <0>; 803*4882a593Smuzhiyun }; 804*4882a593Smuzhiyun 805*4882a593Smuzhiyun r_pio: pinctrl@1f02c00 { 806*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-r-pinctrl"; 807*4882a593Smuzhiyun reg = <0x01f02c00 0x400>; 808*4882a593Smuzhiyun interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; 809*4882a593Smuzhiyun clocks = <&apb0_gates 0>, <&osc24M>, <&rtc 0>; 810*4882a593Smuzhiyun clock-names = "apb", "hosc", "losc"; 811*4882a593Smuzhiyun resets = <&apb0_rst 0>; 812*4882a593Smuzhiyun gpio-controller; 813*4882a593Smuzhiyun interrupt-controller; 814*4882a593Smuzhiyun #interrupt-cells = <3>; 815*4882a593Smuzhiyun #gpio-cells = <3>; 816*4882a593Smuzhiyun 817*4882a593Smuzhiyun r_i2c_pins: r-i2c-pins { 818*4882a593Smuzhiyun pins = "PL0", "PL1"; 819*4882a593Smuzhiyun function = "s_i2c"; 820*4882a593Smuzhiyun bias-pull-up; 821*4882a593Smuzhiyun }; 822*4882a593Smuzhiyun 823*4882a593Smuzhiyun r_rsb_pins: r-rsb-pins { 824*4882a593Smuzhiyun pins = "PL0", "PL1"; 825*4882a593Smuzhiyun function = "s_rsb"; 826*4882a593Smuzhiyun drive-strength = <20>; 827*4882a593Smuzhiyun bias-pull-up; 828*4882a593Smuzhiyun }; 829*4882a593Smuzhiyun 830*4882a593Smuzhiyun r_uart_pins_a: r-uart-pins { 831*4882a593Smuzhiyun pins = "PL2", "PL3"; 832*4882a593Smuzhiyun function = "s_uart"; 833*4882a593Smuzhiyun }; 834*4882a593Smuzhiyun }; 835*4882a593Smuzhiyun 836*4882a593Smuzhiyun r_rsb: rsb@1f03400 { 837*4882a593Smuzhiyun compatible = "allwinner,sun8i-a23-rsb"; 838*4882a593Smuzhiyun reg = <0x01f03400 0x400>; 839*4882a593Smuzhiyun interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; 840*4882a593Smuzhiyun clocks = <&apb0_gates 3>; 841*4882a593Smuzhiyun clock-frequency = <3000000>; 842*4882a593Smuzhiyun resets = <&apb0_rst 3>; 843*4882a593Smuzhiyun pinctrl-names = "default"; 844*4882a593Smuzhiyun pinctrl-0 = <&r_rsb_pins>; 845*4882a593Smuzhiyun status = "disabled"; 846*4882a593Smuzhiyun #address-cells = <1>; 847*4882a593Smuzhiyun #size-cells = <0>; 848*4882a593Smuzhiyun }; 849*4882a593Smuzhiyun }; 850*4882a593Smuzhiyun}; 851