1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Copyright (C) 2016 Icenowy Zheng <icenowy@aosc.xyz> 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms 5*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual 6*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a 7*4882a593Smuzhiyun * whole. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * a) This file is free software; you can redistribute it and/or 10*4882a593Smuzhiyun * modify it under the terms of the GNU General Public License as 11*4882a593Smuzhiyun * published by the Free Software Foundation; either version 2 of the 12*4882a593Smuzhiyun * License, or (at your option) any later version. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * This file is distributed in the hope that it will be useful, 15*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*4882a593Smuzhiyun * GNU General Public License for more details. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun * Or, alternatively, 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun * b) Permission is hereby granted, free of charge, to any person 22*4882a593Smuzhiyun * obtaining a copy of this software and associated documentation 23*4882a593Smuzhiyun * files (the "Software"), to deal in the Software without 24*4882a593Smuzhiyun * restriction, including without limitation the rights to use, 25*4882a593Smuzhiyun * copy, modify, merge, publish, distribute, sublicense, and/or 26*4882a593Smuzhiyun * sell copies of the Software, and to permit persons to whom the 27*4882a593Smuzhiyun * Software is furnished to do so, subject to the following 28*4882a593Smuzhiyun * conditions: 29*4882a593Smuzhiyun * 30*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be 31*4882a593Smuzhiyun * included in all copies or substantial portions of the Software. 32*4882a593Smuzhiyun * 33*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35*4882a593Smuzhiyun * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37*4882a593Smuzhiyun * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38*4882a593Smuzhiyun * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39*4882a593Smuzhiyun * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40*4882a593Smuzhiyun * OTHER DEALINGS IN THE SOFTWARE. 41*4882a593Smuzhiyun */ 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h> 44*4882a593Smuzhiyun#include <dt-bindings/clock/sun8i-v3s-ccu.h> 45*4882a593Smuzhiyun#include <dt-bindings/reset/sun8i-v3s-ccu.h> 46*4882a593Smuzhiyun#include <dt-bindings/clock/sun8i-de2.h> 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun/ { 49*4882a593Smuzhiyun #address-cells = <1>; 50*4882a593Smuzhiyun #size-cells = <1>; 51*4882a593Smuzhiyun interrupt-parent = <&gic>; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun chosen { 54*4882a593Smuzhiyun #address-cells = <1>; 55*4882a593Smuzhiyun #size-cells = <1>; 56*4882a593Smuzhiyun ranges; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun framebuffer-lcd { 59*4882a593Smuzhiyun compatible = "allwinner,simple-framebuffer", 60*4882a593Smuzhiyun "simple-framebuffer"; 61*4882a593Smuzhiyun allwinner,pipeline = "mixer0-lcd0"; 62*4882a593Smuzhiyun clocks = <&display_clocks CLK_MIXER0>, 63*4882a593Smuzhiyun <&ccu CLK_TCON0>; 64*4882a593Smuzhiyun status = "disabled"; 65*4882a593Smuzhiyun }; 66*4882a593Smuzhiyun }; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun cpus { 69*4882a593Smuzhiyun #address-cells = <1>; 70*4882a593Smuzhiyun #size-cells = <0>; 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun cpu@0 { 73*4882a593Smuzhiyun compatible = "arm,cortex-a7"; 74*4882a593Smuzhiyun device_type = "cpu"; 75*4882a593Smuzhiyun reg = <0>; 76*4882a593Smuzhiyun clocks = <&ccu CLK_CPU>; 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun }; 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun de: display-engine { 81*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-display-engine"; 82*4882a593Smuzhiyun allwinner,pipelines = <&mixer0>; 83*4882a593Smuzhiyun status = "disabled"; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun timer { 87*4882a593Smuzhiyun compatible = "arm,armv7-timer"; 88*4882a593Smuzhiyun interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 89*4882a593Smuzhiyun <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 90*4882a593Smuzhiyun <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 91*4882a593Smuzhiyun <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 92*4882a593Smuzhiyun }; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun clocks { 95*4882a593Smuzhiyun #address-cells = <1>; 96*4882a593Smuzhiyun #size-cells = <1>; 97*4882a593Smuzhiyun ranges; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun osc24M: osc24M_clk { 100*4882a593Smuzhiyun #clock-cells = <0>; 101*4882a593Smuzhiyun compatible = "fixed-clock"; 102*4882a593Smuzhiyun clock-frequency = <24000000>; 103*4882a593Smuzhiyun clock-accuracy = <50000>; 104*4882a593Smuzhiyun clock-output-names = "osc24M"; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun osc32k: osc32k_clk { 108*4882a593Smuzhiyun #clock-cells = <0>; 109*4882a593Smuzhiyun compatible = "fixed-clock"; 110*4882a593Smuzhiyun clock-frequency = <32768>; 111*4882a593Smuzhiyun clock-accuracy = <50000>; 112*4882a593Smuzhiyun clock-output-names = "ext-osc32k"; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun soc { 117*4882a593Smuzhiyun compatible = "simple-bus"; 118*4882a593Smuzhiyun #address-cells = <1>; 119*4882a593Smuzhiyun #size-cells = <1>; 120*4882a593Smuzhiyun ranges; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun display_clocks: clock@1000000 { 123*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-de2-clk"; 124*4882a593Smuzhiyun reg = <0x01000000 0x10000>; 125*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_DE>, 126*4882a593Smuzhiyun <&ccu CLK_DE>; 127*4882a593Smuzhiyun clock-names = "bus", 128*4882a593Smuzhiyun "mod"; 129*4882a593Smuzhiyun resets = <&ccu RST_BUS_DE>; 130*4882a593Smuzhiyun #clock-cells = <1>; 131*4882a593Smuzhiyun #reset-cells = <1>; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun mixer0: mixer@1100000 { 135*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-de2-mixer"; 136*4882a593Smuzhiyun reg = <0x01100000 0x100000>; 137*4882a593Smuzhiyun clocks = <&display_clocks 0>, 138*4882a593Smuzhiyun <&display_clocks 6>; 139*4882a593Smuzhiyun clock-names = "bus", 140*4882a593Smuzhiyun "mod"; 141*4882a593Smuzhiyun resets = <&display_clocks 0>; 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun ports { 144*4882a593Smuzhiyun #address-cells = <1>; 145*4882a593Smuzhiyun #size-cells = <0>; 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun mixer0_out: port@1 { 148*4882a593Smuzhiyun reg = <1>; 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun mixer0_out_tcon0: endpoint { 151*4882a593Smuzhiyun remote-endpoint = <&tcon0_in_mixer0>; 152*4882a593Smuzhiyun }; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun }; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun syscon: system-control@1c00000 { 158*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-system-control", 159*4882a593Smuzhiyun "allwinner,sun8i-h3-system-control"; 160*4882a593Smuzhiyun reg = <0x01c00000 0x1000>; 161*4882a593Smuzhiyun #address-cells = <1>; 162*4882a593Smuzhiyun #size-cells = <1>; 163*4882a593Smuzhiyun ranges; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun tcon0: lcd-controller@1c0c000 { 167*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-tcon"; 168*4882a593Smuzhiyun reg = <0x01c0c000 0x1000>; 169*4882a593Smuzhiyun interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; 170*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_TCON0>, 171*4882a593Smuzhiyun <&ccu CLK_TCON0>; 172*4882a593Smuzhiyun clock-names = "ahb", 173*4882a593Smuzhiyun "tcon-ch0"; 174*4882a593Smuzhiyun clock-output-names = "tcon-pixel-clock"; 175*4882a593Smuzhiyun #clock-cells = <0>; 176*4882a593Smuzhiyun resets = <&ccu RST_BUS_TCON0>; 177*4882a593Smuzhiyun reset-names = "lcd"; 178*4882a593Smuzhiyun status = "disabled"; 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun ports { 181*4882a593Smuzhiyun #address-cells = <1>; 182*4882a593Smuzhiyun #size-cells = <0>; 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun tcon0_in: port@0 { 185*4882a593Smuzhiyun reg = <0>; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun tcon0_in_mixer0: endpoint { 188*4882a593Smuzhiyun remote-endpoint = <&mixer0_out_tcon0>; 189*4882a593Smuzhiyun }; 190*4882a593Smuzhiyun }; 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun tcon0_out: port@1 { 193*4882a593Smuzhiyun #address-cells = <1>; 194*4882a593Smuzhiyun #size-cells = <0>; 195*4882a593Smuzhiyun reg = <1>; 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun mmc0: mmc@1c0f000 { 202*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-mmc"; 203*4882a593Smuzhiyun reg = <0x01c0f000 0x1000>; 204*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_MMC0>, 205*4882a593Smuzhiyun <&ccu CLK_MMC0>, 206*4882a593Smuzhiyun <&ccu CLK_MMC0_OUTPUT>, 207*4882a593Smuzhiyun <&ccu CLK_MMC0_SAMPLE>; 208*4882a593Smuzhiyun clock-names = "ahb", 209*4882a593Smuzhiyun "mmc", 210*4882a593Smuzhiyun "output", 211*4882a593Smuzhiyun "sample"; 212*4882a593Smuzhiyun resets = <&ccu RST_BUS_MMC0>; 213*4882a593Smuzhiyun reset-names = "ahb"; 214*4882a593Smuzhiyun interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 215*4882a593Smuzhiyun pinctrl-names = "default"; 216*4882a593Smuzhiyun pinctrl-0 = <&mmc0_pins>; 217*4882a593Smuzhiyun status = "disabled"; 218*4882a593Smuzhiyun #address-cells = <1>; 219*4882a593Smuzhiyun #size-cells = <0>; 220*4882a593Smuzhiyun }; 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun mmc1: mmc@1c10000 { 223*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-mmc"; 224*4882a593Smuzhiyun reg = <0x01c10000 0x1000>; 225*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_MMC1>, 226*4882a593Smuzhiyun <&ccu CLK_MMC1>, 227*4882a593Smuzhiyun <&ccu CLK_MMC1_OUTPUT>, 228*4882a593Smuzhiyun <&ccu CLK_MMC1_SAMPLE>; 229*4882a593Smuzhiyun clock-names = "ahb", 230*4882a593Smuzhiyun "mmc", 231*4882a593Smuzhiyun "output", 232*4882a593Smuzhiyun "sample"; 233*4882a593Smuzhiyun resets = <&ccu RST_BUS_MMC1>; 234*4882a593Smuzhiyun reset-names = "ahb"; 235*4882a593Smuzhiyun interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 236*4882a593Smuzhiyun pinctrl-names = "default"; 237*4882a593Smuzhiyun pinctrl-0 = <&mmc1_pins>; 238*4882a593Smuzhiyun status = "disabled"; 239*4882a593Smuzhiyun #address-cells = <1>; 240*4882a593Smuzhiyun #size-cells = <0>; 241*4882a593Smuzhiyun }; 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun mmc2: mmc@1c11000 { 244*4882a593Smuzhiyun compatible = "allwinner,sun7i-a20-mmc"; 245*4882a593Smuzhiyun reg = <0x01c11000 0x1000>; 246*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_MMC2>, 247*4882a593Smuzhiyun <&ccu CLK_MMC2>, 248*4882a593Smuzhiyun <&ccu CLK_MMC2_OUTPUT>, 249*4882a593Smuzhiyun <&ccu CLK_MMC2_SAMPLE>; 250*4882a593Smuzhiyun clock-names = "ahb", 251*4882a593Smuzhiyun "mmc", 252*4882a593Smuzhiyun "output", 253*4882a593Smuzhiyun "sample"; 254*4882a593Smuzhiyun resets = <&ccu RST_BUS_MMC2>; 255*4882a593Smuzhiyun reset-names = "ahb"; 256*4882a593Smuzhiyun interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 257*4882a593Smuzhiyun status = "disabled"; 258*4882a593Smuzhiyun #address-cells = <1>; 259*4882a593Smuzhiyun #size-cells = <0>; 260*4882a593Smuzhiyun }; 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun crypto@1c15000 { 263*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-crypto", 264*4882a593Smuzhiyun "allwinner,sun8i-a33-crypto"; 265*4882a593Smuzhiyun reg = <0x01c15000 0x1000>; 266*4882a593Smuzhiyun interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 267*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>; 268*4882a593Smuzhiyun clock-names = "ahb", "mod"; 269*4882a593Smuzhiyun resets = <&ccu RST_BUS_CE>; 270*4882a593Smuzhiyun reset-names = "ahb"; 271*4882a593Smuzhiyun }; 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun usb_otg: usb@1c19000 { 274*4882a593Smuzhiyun compatible = "allwinner,sun8i-h3-musb"; 275*4882a593Smuzhiyun reg = <0x01c19000 0x0400>; 276*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_OTG>; 277*4882a593Smuzhiyun resets = <&ccu RST_BUS_OTG>; 278*4882a593Smuzhiyun interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 279*4882a593Smuzhiyun interrupt-names = "mc"; 280*4882a593Smuzhiyun phys = <&usbphy 0>; 281*4882a593Smuzhiyun phy-names = "usb"; 282*4882a593Smuzhiyun extcon = <&usbphy 0>; 283*4882a593Smuzhiyun status = "disabled"; 284*4882a593Smuzhiyun }; 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun usbphy: phy@1c19400 { 287*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-usb-phy"; 288*4882a593Smuzhiyun reg = <0x01c19400 0x2c>, 289*4882a593Smuzhiyun <0x01c1a800 0x4>; 290*4882a593Smuzhiyun reg-names = "phy_ctrl", 291*4882a593Smuzhiyun "pmu0"; 292*4882a593Smuzhiyun clocks = <&ccu CLK_USB_PHY0>; 293*4882a593Smuzhiyun clock-names = "usb0_phy"; 294*4882a593Smuzhiyun resets = <&ccu RST_USB_PHY0>; 295*4882a593Smuzhiyun reset-names = "usb0_reset"; 296*4882a593Smuzhiyun status = "disabled"; 297*4882a593Smuzhiyun #phy-cells = <1>; 298*4882a593Smuzhiyun }; 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun ccu: clock@1c20000 { 301*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-ccu"; 302*4882a593Smuzhiyun reg = <0x01c20000 0x400>; 303*4882a593Smuzhiyun clocks = <&osc24M>, <&rtc 0>; 304*4882a593Smuzhiyun clock-names = "hosc", "losc"; 305*4882a593Smuzhiyun #clock-cells = <1>; 306*4882a593Smuzhiyun #reset-cells = <1>; 307*4882a593Smuzhiyun }; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun rtc: rtc@1c20400 { 310*4882a593Smuzhiyun #clock-cells = <1>; 311*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3-rtc"; 312*4882a593Smuzhiyun reg = <0x01c20400 0x54>; 313*4882a593Smuzhiyun interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 314*4882a593Smuzhiyun <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 315*4882a593Smuzhiyun clocks = <&osc32k>; 316*4882a593Smuzhiyun clock-output-names = "osc32k", "osc32k-out"; 317*4882a593Smuzhiyun }; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun pio: pinctrl@1c20800 { 320*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-pinctrl"; 321*4882a593Smuzhiyun reg = <0x01c20800 0x400>; 322*4882a593Smuzhiyun interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, 323*4882a593Smuzhiyun <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 324*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; 325*4882a593Smuzhiyun clock-names = "apb", "hosc", "losc"; 326*4882a593Smuzhiyun gpio-controller; 327*4882a593Smuzhiyun #gpio-cells = <3>; 328*4882a593Smuzhiyun interrupt-controller; 329*4882a593Smuzhiyun #interrupt-cells = <3>; 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun /omit-if-no-ref/ 332*4882a593Smuzhiyun csi1_8bit_pins: csi1-8bit-pins { 333*4882a593Smuzhiyun pins = "PE0", "PE2", "PE3", "PE8", "PE9", 334*4882a593Smuzhiyun "PE10", "PE11", "PE12", "PE13", "PE14", 335*4882a593Smuzhiyun "PE15"; 336*4882a593Smuzhiyun function = "csi"; 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun /omit-if-no-ref/ 340*4882a593Smuzhiyun csi1_mclk_pin: csi1-mclk-pin { 341*4882a593Smuzhiyun pins = "PE1"; 342*4882a593Smuzhiyun function = "csi"; 343*4882a593Smuzhiyun }; 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun i2c0_pins: i2c0-pins { 346*4882a593Smuzhiyun pins = "PB6", "PB7"; 347*4882a593Smuzhiyun function = "i2c0"; 348*4882a593Smuzhiyun }; 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun /omit-if-no-ref/ 351*4882a593Smuzhiyun i2c1_pe_pins: i2c1-pe-pins { 352*4882a593Smuzhiyun pins = "PE21", "PE22"; 353*4882a593Smuzhiyun function = "i2c1"; 354*4882a593Smuzhiyun }; 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun uart0_pb_pins: uart0-pb-pins { 357*4882a593Smuzhiyun pins = "PB8", "PB9"; 358*4882a593Smuzhiyun function = "uart0"; 359*4882a593Smuzhiyun }; 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun uart2_pins: uart2-pins { 362*4882a593Smuzhiyun pins = "PB0", "PB1"; 363*4882a593Smuzhiyun function = "uart2"; 364*4882a593Smuzhiyun }; 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun mmc0_pins: mmc0-pins { 367*4882a593Smuzhiyun pins = "PF0", "PF1", "PF2", "PF3", 368*4882a593Smuzhiyun "PF4", "PF5"; 369*4882a593Smuzhiyun function = "mmc0"; 370*4882a593Smuzhiyun drive-strength = <30>; 371*4882a593Smuzhiyun bias-pull-up; 372*4882a593Smuzhiyun }; 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun mmc1_pins: mmc1-pins { 375*4882a593Smuzhiyun pins = "PG0", "PG1", "PG2", "PG3", 376*4882a593Smuzhiyun "PG4", "PG5"; 377*4882a593Smuzhiyun function = "mmc1"; 378*4882a593Smuzhiyun drive-strength = <30>; 379*4882a593Smuzhiyun bias-pull-up; 380*4882a593Smuzhiyun }; 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun spi0_pins: spi0-pins { 383*4882a593Smuzhiyun pins = "PC0", "PC1", "PC2", "PC3"; 384*4882a593Smuzhiyun function = "spi0"; 385*4882a593Smuzhiyun }; 386*4882a593Smuzhiyun }; 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun timer@1c20c00 { 389*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-timer"; 390*4882a593Smuzhiyun reg = <0x01c20c00 0xa0>; 391*4882a593Smuzhiyun interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 392*4882a593Smuzhiyun <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 393*4882a593Smuzhiyun <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 394*4882a593Smuzhiyun clocks = <&osc24M>; 395*4882a593Smuzhiyun }; 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun wdt0: watchdog@1c20ca0 { 398*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-wdt"; 399*4882a593Smuzhiyun reg = <0x01c20ca0 0x20>; 400*4882a593Smuzhiyun interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 401*4882a593Smuzhiyun clocks = <&osc24M>; 402*4882a593Smuzhiyun }; 403*4882a593Smuzhiyun 404*4882a593Smuzhiyun lradc: lradc@1c22800 { 405*4882a593Smuzhiyun compatible = "allwinner,sun4i-a10-lradc-keys"; 406*4882a593Smuzhiyun reg = <0x01c22800 0x400>; 407*4882a593Smuzhiyun interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 408*4882a593Smuzhiyun status = "disabled"; 409*4882a593Smuzhiyun }; 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun uart0: serial@1c28000 { 412*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 413*4882a593Smuzhiyun reg = <0x01c28000 0x400>; 414*4882a593Smuzhiyun interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 415*4882a593Smuzhiyun reg-shift = <2>; 416*4882a593Smuzhiyun reg-io-width = <4>; 417*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART0>; 418*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART0>; 419*4882a593Smuzhiyun status = "disabled"; 420*4882a593Smuzhiyun }; 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun uart1: serial@1c28400 { 423*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 424*4882a593Smuzhiyun reg = <0x01c28400 0x400>; 425*4882a593Smuzhiyun interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 426*4882a593Smuzhiyun reg-shift = <2>; 427*4882a593Smuzhiyun reg-io-width = <4>; 428*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART1>; 429*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART1>; 430*4882a593Smuzhiyun status = "disabled"; 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun uart2: serial@1c28800 { 434*4882a593Smuzhiyun compatible = "snps,dw-apb-uart"; 435*4882a593Smuzhiyun reg = <0x01c28800 0x400>; 436*4882a593Smuzhiyun interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 437*4882a593Smuzhiyun reg-shift = <2>; 438*4882a593Smuzhiyun reg-io-width = <4>; 439*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_UART2>; 440*4882a593Smuzhiyun resets = <&ccu RST_BUS_UART2>; 441*4882a593Smuzhiyun pinctrl-0 = <&uart2_pins>; 442*4882a593Smuzhiyun pinctrl-names = "default"; 443*4882a593Smuzhiyun status = "disabled"; 444*4882a593Smuzhiyun }; 445*4882a593Smuzhiyun 446*4882a593Smuzhiyun i2c0: i2c@1c2ac00 { 447*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-i2c"; 448*4882a593Smuzhiyun reg = <0x01c2ac00 0x400>; 449*4882a593Smuzhiyun interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 450*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_I2C0>; 451*4882a593Smuzhiyun resets = <&ccu RST_BUS_I2C0>; 452*4882a593Smuzhiyun pinctrl-names = "default"; 453*4882a593Smuzhiyun pinctrl-0 = <&i2c0_pins>; 454*4882a593Smuzhiyun status = "disabled"; 455*4882a593Smuzhiyun #address-cells = <1>; 456*4882a593Smuzhiyun #size-cells = <0>; 457*4882a593Smuzhiyun }; 458*4882a593Smuzhiyun 459*4882a593Smuzhiyun i2c1: i2c@1c2b000 { 460*4882a593Smuzhiyun compatible = "allwinner,sun6i-a31-i2c"; 461*4882a593Smuzhiyun reg = <0x01c2b000 0x400>; 462*4882a593Smuzhiyun interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 463*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_I2C1>; 464*4882a593Smuzhiyun resets = <&ccu RST_BUS_I2C1>; 465*4882a593Smuzhiyun status = "disabled"; 466*4882a593Smuzhiyun #address-cells = <1>; 467*4882a593Smuzhiyun #size-cells = <0>; 468*4882a593Smuzhiyun }; 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun emac: ethernet@1c30000 { 471*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-emac"; 472*4882a593Smuzhiyun syscon = <&syscon>; 473*4882a593Smuzhiyun reg = <0x01c30000 0x10000>; 474*4882a593Smuzhiyun interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 475*4882a593Smuzhiyun interrupt-names = "macirq"; 476*4882a593Smuzhiyun resets = <&ccu RST_BUS_EMAC>; 477*4882a593Smuzhiyun reset-names = "stmmaceth"; 478*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_EMAC>; 479*4882a593Smuzhiyun clock-names = "stmmaceth"; 480*4882a593Smuzhiyun phy-handle = <&int_mii_phy>; 481*4882a593Smuzhiyun phy-mode = "mii"; 482*4882a593Smuzhiyun status = "disabled"; 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun mdio: mdio { 485*4882a593Smuzhiyun #address-cells = <1>; 486*4882a593Smuzhiyun #size-cells = <0>; 487*4882a593Smuzhiyun compatible = "snps,dwmac-mdio"; 488*4882a593Smuzhiyun }; 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun mdio_mux: mdio-mux { 491*4882a593Smuzhiyun compatible = "allwinner,sun8i-h3-mdio-mux"; 492*4882a593Smuzhiyun #address-cells = <1>; 493*4882a593Smuzhiyun #size-cells = <0>; 494*4882a593Smuzhiyun 495*4882a593Smuzhiyun mdio-parent-bus = <&mdio>; 496*4882a593Smuzhiyun /* Only one MDIO is usable at the time */ 497*4882a593Smuzhiyun internal_mdio: mdio@1 { 498*4882a593Smuzhiyun compatible = "allwinner,sun8i-h3-mdio-internal"; 499*4882a593Smuzhiyun reg = <1>; 500*4882a593Smuzhiyun #address-cells = <1>; 501*4882a593Smuzhiyun #size-cells = <0>; 502*4882a593Smuzhiyun 503*4882a593Smuzhiyun int_mii_phy: ethernet-phy@1 { 504*4882a593Smuzhiyun compatible = "ethernet-phy-ieee802.3-c22"; 505*4882a593Smuzhiyun reg = <1>; 506*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_EPHY>; 507*4882a593Smuzhiyun resets = <&ccu RST_BUS_EPHY>; 508*4882a593Smuzhiyun }; 509*4882a593Smuzhiyun }; 510*4882a593Smuzhiyun }; 511*4882a593Smuzhiyun }; 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun spi0: spi@1c68000 { 514*4882a593Smuzhiyun compatible = "allwinner,sun8i-h3-spi"; 515*4882a593Smuzhiyun reg = <0x01c68000 0x1000>; 516*4882a593Smuzhiyun interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 517*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>; 518*4882a593Smuzhiyun clock-names = "ahb", "mod"; 519*4882a593Smuzhiyun pinctrl-names = "default"; 520*4882a593Smuzhiyun pinctrl-0 = <&spi0_pins>; 521*4882a593Smuzhiyun resets = <&ccu RST_BUS_SPI0>; 522*4882a593Smuzhiyun status = "disabled"; 523*4882a593Smuzhiyun #address-cells = <1>; 524*4882a593Smuzhiyun #size-cells = <0>; 525*4882a593Smuzhiyun }; 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun gic: interrupt-controller@1c81000 { 528*4882a593Smuzhiyun compatible = "arm,gic-400"; 529*4882a593Smuzhiyun reg = <0x01c81000 0x1000>, 530*4882a593Smuzhiyun <0x01c82000 0x2000>, 531*4882a593Smuzhiyun <0x01c84000 0x2000>, 532*4882a593Smuzhiyun <0x01c86000 0x2000>; 533*4882a593Smuzhiyun interrupt-controller; 534*4882a593Smuzhiyun #interrupt-cells = <3>; 535*4882a593Smuzhiyun interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 536*4882a593Smuzhiyun }; 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun csi1: camera@1cb4000 { 539*4882a593Smuzhiyun compatible = "allwinner,sun8i-v3s-csi"; 540*4882a593Smuzhiyun reg = <0x01cb4000 0x3000>; 541*4882a593Smuzhiyun interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 542*4882a593Smuzhiyun clocks = <&ccu CLK_BUS_CSI>, 543*4882a593Smuzhiyun <&ccu CLK_CSI1_SCLK>, 544*4882a593Smuzhiyun <&ccu CLK_DRAM_CSI>; 545*4882a593Smuzhiyun clock-names = "bus", "mod", "ram"; 546*4882a593Smuzhiyun resets = <&ccu RST_BUS_CSI>; 547*4882a593Smuzhiyun status = "disabled"; 548*4882a593Smuzhiyun }; 549*4882a593Smuzhiyun }; 550*4882a593Smuzhiyun}; 551