1f989086cSIcenowy Zheng/* 2f989086cSIcenowy Zheng * Copyright (C) 2016 Icenowy Zheng <icenowy@aosc.xyz> 349b9e240STobias Schramm * Copyright (C) 2021 Tobias Schramm <t.schramm@manjaro.org> 4f989086cSIcenowy Zheng * 5f989086cSIcenowy Zheng * This file is dual-licensed: you can use it either under the terms 6f989086cSIcenowy Zheng * of the GPL or the X11 license, at your option. Note that this dual 7f989086cSIcenowy Zheng * licensing only applies to this file, and not this project as a 8f989086cSIcenowy Zheng * whole. 9f989086cSIcenowy Zheng * 10f989086cSIcenowy Zheng * a) This file is free software; you can redistribute it and/or 11f989086cSIcenowy Zheng * modify it under the terms of the GNU General Public License as 12f989086cSIcenowy Zheng * published by the Free Software Foundation; either version 2 of the 13f989086cSIcenowy Zheng * License, or (at your option) any later version. 14f989086cSIcenowy Zheng * 15f989086cSIcenowy Zheng * This file is distributed in the hope that it will be useful, 16f989086cSIcenowy Zheng * but WITHOUT ANY WARRANTY; without even the implied warranty of 17f989086cSIcenowy Zheng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18f989086cSIcenowy Zheng * GNU General Public License for more details. 19f989086cSIcenowy Zheng * 20f989086cSIcenowy Zheng * Or, alternatively, 21f989086cSIcenowy Zheng * 22f989086cSIcenowy Zheng * b) Permission is hereby granted, free of charge, to any person 23f989086cSIcenowy Zheng * obtaining a copy of this software and associated documentation 24f989086cSIcenowy Zheng * files (the "Software"), to deal in the Software without 25f989086cSIcenowy Zheng * restriction, including without limitation the rights to use, 26f989086cSIcenowy Zheng * copy, modify, merge, publish, distribute, sublicense, and/or 27f989086cSIcenowy Zheng * sell copies of the Software, and to permit persons to whom the 28f989086cSIcenowy Zheng * Software is furnished to do so, subject to the following 29f989086cSIcenowy Zheng * conditions: 30f989086cSIcenowy Zheng * 31f989086cSIcenowy Zheng * The above copyright notice and this permission notice shall be 32f989086cSIcenowy Zheng * included in all copies or substantial portions of the Software. 33f989086cSIcenowy Zheng * 34f989086cSIcenowy Zheng * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 35f989086cSIcenowy Zheng * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 36f989086cSIcenowy Zheng * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 37f989086cSIcenowy Zheng * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 38f989086cSIcenowy Zheng * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 39f989086cSIcenowy Zheng * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 40f989086cSIcenowy Zheng * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 41f989086cSIcenowy Zheng * OTHER DEALINGS IN THE SOFTWARE. 42f989086cSIcenowy Zheng */ 43f989086cSIcenowy Zheng 44f989086cSIcenowy Zheng#include <dt-bindings/interrupt-controller/arm-gic.h> 458cce5702SSamuel Holland#include <dt-bindings/clock/sun6i-rtc.h> 468378be87SIcenowy Zheng#include <dt-bindings/clock/sun8i-v3s-ccu.h> 478378be87SIcenowy Zheng#include <dt-bindings/reset/sun8i-v3s-ccu.h> 482bd5298aSMartin Cerveny#include <dt-bindings/clock/sun8i-de2.h> 49f989086cSIcenowy Zheng 50f989086cSIcenowy Zheng/ { 51f989086cSIcenowy Zheng #address-cells = <1>; 52f989086cSIcenowy Zheng #size-cells = <1>; 53f989086cSIcenowy Zheng interrupt-parent = <&gic>; 54f989086cSIcenowy Zheng 552bd5298aSMartin Cerveny chosen { 562bd5298aSMartin Cerveny #address-cells = <1>; 572bd5298aSMartin Cerveny #size-cells = <1>; 582bd5298aSMartin Cerveny ranges; 592bd5298aSMartin Cerveny 602bd5298aSMartin Cerveny framebuffer-lcd { 612bd5298aSMartin Cerveny compatible = "allwinner,simple-framebuffer", 622bd5298aSMartin Cerveny "simple-framebuffer"; 632bd5298aSMartin Cerveny allwinner,pipeline = "mixer0-lcd0"; 642bd5298aSMartin Cerveny clocks = <&display_clocks CLK_MIXER0>, 652bd5298aSMartin Cerveny <&ccu CLK_TCON0>; 662bd5298aSMartin Cerveny status = "disabled"; 672bd5298aSMartin Cerveny }; 682bd5298aSMartin Cerveny }; 692bd5298aSMartin Cerveny 70f989086cSIcenowy Zheng cpus { 71f989086cSIcenowy Zheng #address-cells = <1>; 72f989086cSIcenowy Zheng #size-cells = <0>; 73f989086cSIcenowy Zheng 74f989086cSIcenowy Zheng cpu@0 { 75f989086cSIcenowy Zheng compatible = "arm,cortex-a7"; 76f989086cSIcenowy Zheng device_type = "cpu"; 77f989086cSIcenowy Zheng reg = <0>; 788378be87SIcenowy Zheng clocks = <&ccu CLK_CPU>; 79f989086cSIcenowy Zheng }; 80f989086cSIcenowy Zheng }; 81f989086cSIcenowy Zheng 8221b29920SIcenowy Zheng de: display-engine { 8321b29920SIcenowy Zheng compatible = "allwinner,sun8i-v3s-display-engine"; 8421b29920SIcenowy Zheng allwinner,pipelines = <&mixer0>; 8521b29920SIcenowy Zheng status = "disabled"; 8621b29920SIcenowy Zheng }; 8721b29920SIcenowy Zheng 88f989086cSIcenowy Zheng timer { 89f989086cSIcenowy Zheng compatible = "arm,armv7-timer"; 90f989086cSIcenowy Zheng interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 91f989086cSIcenowy Zheng <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 92f989086cSIcenowy Zheng <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 93f989086cSIcenowy Zheng <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 94f989086cSIcenowy Zheng }; 95f989086cSIcenowy Zheng 96f989086cSIcenowy Zheng clocks { 97f989086cSIcenowy Zheng #address-cells = <1>; 98f989086cSIcenowy Zheng #size-cells = <1>; 99f989086cSIcenowy Zheng ranges; 100f989086cSIcenowy Zheng 1010f47ef3fSKrzysztof Kozlowski osc24M: osc24M-clk { 102f989086cSIcenowy Zheng #clock-cells = <0>; 103f989086cSIcenowy Zheng compatible = "fixed-clock"; 104f989086cSIcenowy Zheng clock-frequency = <24000000>; 10533e877f3SMaxime Ripard clock-accuracy = <50000>; 106f989086cSIcenowy Zheng clock-output-names = "osc24M"; 107f989086cSIcenowy Zheng }; 108f989086cSIcenowy Zheng 1090f47ef3fSKrzysztof Kozlowski osc32k: osc32k-clk { 110f989086cSIcenowy Zheng #clock-cells = <0>; 111f989086cSIcenowy Zheng compatible = "fixed-clock"; 112f989086cSIcenowy Zheng clock-frequency = <32768>; 11333e877f3SMaxime Ripard clock-accuracy = <50000>; 11465a4a402SMaxime Ripard clock-output-names = "ext-osc32k"; 115f989086cSIcenowy Zheng }; 116f989086cSIcenowy Zheng }; 117f989086cSIcenowy Zheng 118f989086cSIcenowy Zheng soc { 119f989086cSIcenowy Zheng compatible = "simple-bus"; 120f989086cSIcenowy Zheng #address-cells = <1>; 121f989086cSIcenowy Zheng #size-cells = <1>; 122f989086cSIcenowy Zheng ranges; 123f989086cSIcenowy Zheng 12421b29920SIcenowy Zheng display_clocks: clock@1000000 { 12521b29920SIcenowy Zheng compatible = "allwinner,sun8i-v3s-de2-clk"; 126da180322SJernej Skrabec reg = <0x01000000 0x10000>; 1275ea40f71SMaxime Ripard clocks = <&ccu CLK_BUS_DE>, 1285ea40f71SMaxime Ripard <&ccu CLK_DE>; 1295ea40f71SMaxime Ripard clock-names = "bus", 1305ea40f71SMaxime Ripard "mod"; 13121b29920SIcenowy Zheng resets = <&ccu RST_BUS_DE>; 13221b29920SIcenowy Zheng #clock-cells = <1>; 13321b29920SIcenowy Zheng #reset-cells = <1>; 13421b29920SIcenowy Zheng }; 13521b29920SIcenowy Zheng 13621b29920SIcenowy Zheng mixer0: mixer@1100000 { 13721b29920SIcenowy Zheng compatible = "allwinner,sun8i-v3s-de2-mixer"; 13821b29920SIcenowy Zheng reg = <0x01100000 0x100000>; 13921b29920SIcenowy Zheng clocks = <&display_clocks 0>, 14021b29920SIcenowy Zheng <&display_clocks 6>; 14121b29920SIcenowy Zheng clock-names = "bus", 14221b29920SIcenowy Zheng "mod"; 14321b29920SIcenowy Zheng resets = <&display_clocks 0>; 14421b29920SIcenowy Zheng 14521b29920SIcenowy Zheng ports { 14621b29920SIcenowy Zheng #address-cells = <1>; 14721b29920SIcenowy Zheng #size-cells = <0>; 14821b29920SIcenowy Zheng 14921b29920SIcenowy Zheng mixer0_out: port@1 { 15021b29920SIcenowy Zheng reg = <1>; 15121b29920SIcenowy Zheng 152f79d7953SMaxime Ripard mixer0_out_tcon0: endpoint { 15321b29920SIcenowy Zheng remote-endpoint = <&tcon0_in_mixer0>; 15421b29920SIcenowy Zheng }; 15521b29920SIcenowy Zheng }; 15621b29920SIcenowy Zheng }; 15721b29920SIcenowy Zheng }; 15821b29920SIcenowy Zheng 15902ed6bb8SIcenowy Zheng syscon: system-control@1c00000 { 16002ed6bb8SIcenowy Zheng compatible = "allwinner,sun8i-v3s-system-control", 16102ed6bb8SIcenowy Zheng "allwinner,sun8i-h3-system-control"; 162c20e9e76SPaul Kocialkowski reg = <0x01c00000 0xd0>; 16302ed6bb8SIcenowy Zheng #address-cells = <1>; 16402ed6bb8SIcenowy Zheng #size-cells = <1>; 16502ed6bb8SIcenowy Zheng ranges; 16602ed6bb8SIcenowy Zheng }; 16702ed6bb8SIcenowy Zheng 168c20e9e76SPaul Kocialkowski nmi_intc: interrupt-controller@1c000d0 { 169c20e9e76SPaul Kocialkowski compatible = "allwinner,sun8i-v3s-nmi", 170c20e9e76SPaul Kocialkowski "allwinner,sun9i-a80-nmi"; 171c20e9e76SPaul Kocialkowski interrupt-controller; 172c20e9e76SPaul Kocialkowski #interrupt-cells = <2>; 173c20e9e76SPaul Kocialkowski reg = <0x01c000d0 0x0c>; 174c20e9e76SPaul Kocialkowski interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 175c20e9e76SPaul Kocialkowski }; 176c20e9e76SPaul Kocialkowski 17749b9e240STobias Schramm dma: dma-controller@1c02000 { 17849b9e240STobias Schramm compatible = "allwinner,sun8i-v3s-dma"; 17949b9e240STobias Schramm reg = <0x01c02000 0x1000>; 18049b9e240STobias Schramm interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 18149b9e240STobias Schramm clocks = <&ccu CLK_BUS_DMA>; 18249b9e240STobias Schramm resets = <&ccu RST_BUS_DMA>; 18349b9e240STobias Schramm #dma-cells = <1>; 18449b9e240STobias Schramm }; 18549b9e240STobias Schramm 18621b29920SIcenowy Zheng tcon0: lcd-controller@1c0c000 { 18721b29920SIcenowy Zheng compatible = "allwinner,sun8i-v3s-tcon"; 18821b29920SIcenowy Zheng reg = <0x01c0c000 0x1000>; 18921b29920SIcenowy Zheng interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; 19021b29920SIcenowy Zheng clocks = <&ccu CLK_BUS_TCON0>, 19121b29920SIcenowy Zheng <&ccu CLK_TCON0>; 19221b29920SIcenowy Zheng clock-names = "ahb", 19321b29920SIcenowy Zheng "tcon-ch0"; 194ec4c5458SRoman Beranek clock-output-names = "tcon-data-clock"; 19509f29dccSMaxime Ripard #clock-cells = <0>; 19621b29920SIcenowy Zheng resets = <&ccu RST_BUS_TCON0>; 19721b29920SIcenowy Zheng reset-names = "lcd"; 19821b29920SIcenowy Zheng status = "disabled"; 19921b29920SIcenowy Zheng 20021b29920SIcenowy Zheng ports { 20121b29920SIcenowy Zheng #address-cells = <1>; 20221b29920SIcenowy Zheng #size-cells = <0>; 20321b29920SIcenowy Zheng 20421b29920SIcenowy Zheng tcon0_in: port@0 { 20521b29920SIcenowy Zheng reg = <0>; 20621b29920SIcenowy Zheng 207f79d7953SMaxime Ripard tcon0_in_mixer0: endpoint { 20821b29920SIcenowy Zheng remote-endpoint = <&mixer0_out_tcon0>; 20921b29920SIcenowy Zheng }; 21021b29920SIcenowy Zheng }; 21121b29920SIcenowy Zheng 21221b29920SIcenowy Zheng tcon0_out: port@1 { 21321b29920SIcenowy Zheng #address-cells = <1>; 21421b29920SIcenowy Zheng #size-cells = <0>; 21521b29920SIcenowy Zheng reg = <1>; 21621b29920SIcenowy Zheng }; 21721b29920SIcenowy Zheng }; 21821b29920SIcenowy Zheng }; 21921b29920SIcenowy Zheng 22021b29920SIcenowy Zheng 2218dccafaaSRob Herring mmc0: mmc@1c0f000 { 222f989086cSIcenowy Zheng compatible = "allwinner,sun7i-a20-mmc"; 223f989086cSIcenowy Zheng reg = <0x01c0f000 0x1000>; 2248378be87SIcenowy Zheng clocks = <&ccu CLK_BUS_MMC0>, 2258378be87SIcenowy Zheng <&ccu CLK_MMC0>, 2268378be87SIcenowy Zheng <&ccu CLK_MMC0_OUTPUT>, 2278378be87SIcenowy Zheng <&ccu CLK_MMC0_SAMPLE>; 228f989086cSIcenowy Zheng clock-names = "ahb", 229f989086cSIcenowy Zheng "mmc", 230f989086cSIcenowy Zheng "output", 231f989086cSIcenowy Zheng "sample"; 2328378be87SIcenowy Zheng resets = <&ccu RST_BUS_MMC0>; 233f989086cSIcenowy Zheng reset-names = "ahb"; 234f989086cSIcenowy Zheng interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 23593870e41SMaxime Ripard pinctrl-names = "default"; 23693870e41SMaxime Ripard pinctrl-0 = <&mmc0_pins>; 237f989086cSIcenowy Zheng status = "disabled"; 238f989086cSIcenowy Zheng #address-cells = <1>; 239f989086cSIcenowy Zheng #size-cells = <0>; 240f989086cSIcenowy Zheng }; 241f989086cSIcenowy Zheng 2428dccafaaSRob Herring mmc1: mmc@1c10000 { 243f989086cSIcenowy Zheng compatible = "allwinner,sun7i-a20-mmc"; 244f989086cSIcenowy Zheng reg = <0x01c10000 0x1000>; 2458378be87SIcenowy Zheng clocks = <&ccu CLK_BUS_MMC1>, 2468378be87SIcenowy Zheng <&ccu CLK_MMC1>, 2478378be87SIcenowy Zheng <&ccu CLK_MMC1_OUTPUT>, 2488378be87SIcenowy Zheng <&ccu CLK_MMC1_SAMPLE>; 249f989086cSIcenowy Zheng clock-names = "ahb", 250f989086cSIcenowy Zheng "mmc", 251f989086cSIcenowy Zheng "output", 252f989086cSIcenowy Zheng "sample"; 2538378be87SIcenowy Zheng resets = <&ccu RST_BUS_MMC1>; 254f989086cSIcenowy Zheng reset-names = "ahb"; 255f989086cSIcenowy Zheng interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 256be3c1392SIcenowy Zheng pinctrl-names = "default"; 257be3c1392SIcenowy Zheng pinctrl-0 = <&mmc1_pins>; 258f989086cSIcenowy Zheng status = "disabled"; 259f989086cSIcenowy Zheng #address-cells = <1>; 260f989086cSIcenowy Zheng #size-cells = <0>; 261f989086cSIcenowy Zheng }; 262f989086cSIcenowy Zheng 2638dccafaaSRob Herring mmc2: mmc@1c11000 { 264f989086cSIcenowy Zheng compatible = "allwinner,sun7i-a20-mmc"; 265f989086cSIcenowy Zheng reg = <0x01c11000 0x1000>; 2668378be87SIcenowy Zheng clocks = <&ccu CLK_BUS_MMC2>, 2678378be87SIcenowy Zheng <&ccu CLK_MMC2>, 2688378be87SIcenowy Zheng <&ccu CLK_MMC2_OUTPUT>, 2698378be87SIcenowy Zheng <&ccu CLK_MMC2_SAMPLE>; 270f989086cSIcenowy Zheng clock-names = "ahb", 271f989086cSIcenowy Zheng "mmc", 272f989086cSIcenowy Zheng "output", 273f989086cSIcenowy Zheng "sample"; 2748378be87SIcenowy Zheng resets = <&ccu RST_BUS_MMC2>; 275f989086cSIcenowy Zheng reset-names = "ahb"; 276f989086cSIcenowy Zheng interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 277f989086cSIcenowy Zheng status = "disabled"; 278f989086cSIcenowy Zheng #address-cells = <1>; 279f989086cSIcenowy Zheng #size-cells = <0>; 280f989086cSIcenowy Zheng }; 281f989086cSIcenowy Zheng 28296820e35SMartin Cerveny crypto@1c15000 { 28396820e35SMartin Cerveny compatible = "allwinner,sun8i-v3s-crypto", 28496820e35SMartin Cerveny "allwinner,sun8i-a33-crypto"; 28596820e35SMartin Cerveny reg = <0x01c15000 0x1000>; 28696820e35SMartin Cerveny interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 28796820e35SMartin Cerveny clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>; 28896820e35SMartin Cerveny clock-names = "ahb", "mod"; 28993bc32b0STobias Schramm dmas = <&dma 16>, <&dma 16>; 29093bc32b0STobias Schramm dma-names = "rx", "tx"; 29196820e35SMartin Cerveny resets = <&ccu RST_BUS_CE>; 29296820e35SMartin Cerveny reset-names = "ahb"; 29396820e35SMartin Cerveny }; 29496820e35SMartin Cerveny 2958dccafaaSRob Herring usb_otg: usb@1c19000 { 296f989086cSIcenowy Zheng compatible = "allwinner,sun8i-h3-musb"; 297f989086cSIcenowy Zheng reg = <0x01c19000 0x0400>; 2988378be87SIcenowy Zheng clocks = <&ccu CLK_BUS_OTG>; 2998378be87SIcenowy Zheng resets = <&ccu RST_BUS_OTG>; 300f989086cSIcenowy Zheng interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 301f989086cSIcenowy Zheng interrupt-names = "mc"; 302f989086cSIcenowy Zheng phys = <&usbphy 0>; 303f989086cSIcenowy Zheng phy-names = "usb"; 304f989086cSIcenowy Zheng extcon = <&usbphy 0>; 305f989086cSIcenowy Zheng status = "disabled"; 306f989086cSIcenowy Zheng }; 307f989086cSIcenowy Zheng 3088dccafaaSRob Herring usbphy: phy@1c19400 { 309f989086cSIcenowy Zheng compatible = "allwinner,sun8i-v3s-usb-phy"; 310f989086cSIcenowy Zheng reg = <0x01c19400 0x2c>, 311f989086cSIcenowy Zheng <0x01c1a800 0x4>; 312f989086cSIcenowy Zheng reg-names = "phy_ctrl", 313f989086cSIcenowy Zheng "pmu0"; 3148378be87SIcenowy Zheng clocks = <&ccu CLK_USB_PHY0>; 315f989086cSIcenowy Zheng clock-names = "usb0_phy"; 3168378be87SIcenowy Zheng resets = <&ccu RST_USB_PHY0>; 317f989086cSIcenowy Zheng reset-names = "usb0_reset"; 318f989086cSIcenowy Zheng status = "disabled"; 319f989086cSIcenowy Zheng #phy-cells = <1>; 320f989086cSIcenowy Zheng }; 321f989086cSIcenowy Zheng 32204aff09cSChris Morgan ehci: usb@1c1a000 { 32304aff09cSChris Morgan compatible = "allwinner,sun8i-v3s-ehci", "generic-ehci"; 32404aff09cSChris Morgan reg = <0x01c1a000 0x100>; 32504aff09cSChris Morgan interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 32604aff09cSChris Morgan clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>; 32704aff09cSChris Morgan resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>; 32804aff09cSChris Morgan phys = <&usbphy 0>; 32904aff09cSChris Morgan phy-names = "usb"; 33004aff09cSChris Morgan status = "disabled"; 33104aff09cSChris Morgan }; 33204aff09cSChris Morgan 33304aff09cSChris Morgan ohci: usb@1c1a400 { 33404aff09cSChris Morgan compatible = "allwinner,sun8i-v3s-ohci", "generic-ohci"; 33504aff09cSChris Morgan reg = <0x01c1a400 0x100>; 33604aff09cSChris Morgan interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 33704aff09cSChris Morgan clocks = <&ccu CLK_BUS_EHCI0>, <&ccu CLK_BUS_OHCI0>, 33804aff09cSChris Morgan <&ccu CLK_USB_OHCI0>; 33904aff09cSChris Morgan resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_BUS_OHCI0>; 34004aff09cSChris Morgan phys = <&usbphy 0>; 34104aff09cSChris Morgan phy-names = "usb"; 34204aff09cSChris Morgan status = "disabled"; 34304aff09cSChris Morgan }; 34404aff09cSChris Morgan 3458dccafaaSRob Herring ccu: clock@1c20000 { 346f989086cSIcenowy Zheng compatible = "allwinner,sun8i-v3s-ccu"; 347f989086cSIcenowy Zheng reg = <0x01c20000 0x400>; 3488cce5702SSamuel Holland clocks = <&osc24M>, <&rtc CLK_OSC32K>; 349f989086cSIcenowy Zheng clock-names = "hosc", "losc"; 350f989086cSIcenowy Zheng #clock-cells = <1>; 351f989086cSIcenowy Zheng #reset-cells = <1>; 352f989086cSIcenowy Zheng }; 353f989086cSIcenowy Zheng 3548dccafaaSRob Herring rtc: rtc@1c20400 { 35565a4a402SMaxime Ripard #clock-cells = <1>; 35665a4a402SMaxime Ripard compatible = "allwinner,sun8i-v3-rtc"; 357f989086cSIcenowy Zheng reg = <0x01c20400 0x54>; 358f989086cSIcenowy Zheng interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 359f989086cSIcenowy Zheng <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 36065a4a402SMaxime Ripard clocks = <&osc32k>; 36165a4a402SMaxime Ripard clock-output-names = "osc32k", "osc32k-out"; 362f989086cSIcenowy Zheng }; 363f989086cSIcenowy Zheng 3648dccafaaSRob Herring pio: pinctrl@1c20800 { 365f989086cSIcenowy Zheng compatible = "allwinner,sun8i-v3s-pinctrl"; 366f989086cSIcenowy Zheng reg = <0x01c20800 0x400>; 367f989086cSIcenowy Zheng interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, 368f989086cSIcenowy Zheng <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 3698cce5702SSamuel Holland clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, 3708cce5702SSamuel Holland <&rtc CLK_OSC32K>; 371f989086cSIcenowy Zheng clock-names = "apb", "hosc", "losc"; 372f989086cSIcenowy Zheng gpio-controller; 373f989086cSIcenowy Zheng #gpio-cells = <3>; 374f989086cSIcenowy Zheng interrupt-controller; 375f989086cSIcenowy Zheng #interrupt-cells = <3>; 376f989086cSIcenowy Zheng 377e174afa6SIcenowy Zheng /omit-if-no-ref/ 378b67b3c9bSPaul Kocialkowski csi0_mclk_pin: csi0-mclk-pin { 379b67b3c9bSPaul Kocialkowski pins = "PE20"; 380b67b3c9bSPaul Kocialkowski function = "csi_mipi"; 381b67b3c9bSPaul Kocialkowski }; 382b67b3c9bSPaul Kocialkowski 383b67b3c9bSPaul Kocialkowski /omit-if-no-ref/ 384e174afa6SIcenowy Zheng csi1_8bit_pins: csi1-8bit-pins { 385e174afa6SIcenowy Zheng pins = "PE0", "PE2", "PE3", "PE8", "PE9", 386e174afa6SIcenowy Zheng "PE10", "PE11", "PE12", "PE13", "PE14", 387e174afa6SIcenowy Zheng "PE15"; 388e174afa6SIcenowy Zheng function = "csi"; 389e174afa6SIcenowy Zheng }; 390e174afa6SIcenowy Zheng 391e174afa6SIcenowy Zheng /omit-if-no-ref/ 392e174afa6SIcenowy Zheng csi1_mclk_pin: csi1-mclk-pin { 393e174afa6SIcenowy Zheng pins = "PE1"; 394e174afa6SIcenowy Zheng function = "csi"; 395e174afa6SIcenowy Zheng }; 396e174afa6SIcenowy Zheng 397438a44ceSMaxime Ripard i2c0_pins: i2c0-pins { 398f989086cSIcenowy Zheng pins = "PB6", "PB7"; 399f989086cSIcenowy Zheng function = "i2c0"; 400f989086cSIcenowy Zheng }; 401f989086cSIcenowy Zheng 402b5a2221cSIcenowy Zheng /omit-if-no-ref/ 40352a70e64SPaul Kocialkowski i2c1_pb_pins: i2c1-pb-pins { 40452a70e64SPaul Kocialkowski pins = "PB8", "PB9"; 40552a70e64SPaul Kocialkowski function = "i2c1"; 40652a70e64SPaul Kocialkowski }; 40752a70e64SPaul Kocialkowski 40852a70e64SPaul Kocialkowski /omit-if-no-ref/ 409b5a2221cSIcenowy Zheng i2c1_pe_pins: i2c1-pe-pins { 410b5a2221cSIcenowy Zheng pins = "PE21", "PE22"; 411b5a2221cSIcenowy Zheng function = "i2c1"; 412b5a2221cSIcenowy Zheng }; 413b5a2221cSIcenowy Zheng 414438a44ceSMaxime Ripard /omit-if-no-ref/ 415f989086cSIcenowy Zheng lcd_rgb666_pe_pins: lcd-rgb666-pe-pins { 416f989086cSIcenowy Zheng pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", 417f989086cSIcenowy Zheng "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", 418f989086cSIcenowy Zheng "PE12", "PE13", "PE14", "PE15", "PE16", "PE17", 4193199ed9bSLukas Schmid "PE18", "PE19", "PE23", "PE24"; 4203199ed9bSLukas Schmid function = "lcd"; 4213199ed9bSLukas Schmid }; 4223199ed9bSLukas Schmid 4233199ed9bSLukas Schmid uart0_pb_pins: uart0-pb-pins { 4243199ed9bSLukas Schmid pins = "PB8", "PB9"; 425c0dcfbe2SIcenowy Zheng function = "uart0"; 426c0dcfbe2SIcenowy Zheng }; 427c0dcfbe2SIcenowy Zheng 428c0dcfbe2SIcenowy Zheng /omit-if-no-ref/ 429c0dcfbe2SIcenowy Zheng uart1_pe_pins: uart1-pe-pins { 430438a44ceSMaxime Ripard pins = "PE21", "PE22"; 431f989086cSIcenowy Zheng function = "uart1"; 432f989086cSIcenowy Zheng }; 433f989086cSIcenowy Zheng 434f989086cSIcenowy Zheng uart2_pins: uart2-pins { 435f989086cSIcenowy Zheng pins = "PB0", "PB1"; 436f989086cSIcenowy Zheng function = "uart2"; 437be3c1392SIcenowy Zheng }; 438438a44ceSMaxime Ripard 439be3c1392SIcenowy Zheng mmc0_pins: mmc0-pins { 440be3c1392SIcenowy Zheng pins = "PF0", "PF1", "PF2", "PF3", 441be3c1392SIcenowy Zheng "PF4", "PF5"; 442be3c1392SIcenowy Zheng function = "mmc0"; 443be3c1392SIcenowy Zheng drive-strength = <30>; 444be3c1392SIcenowy Zheng bias-pull-up; 4452a451bfaSIcenowy Zheng }; 44641192b67SChris Morgan 44741192b67SChris Morgan mmc1_pins: mmc1-pins { 44841192b67SChris Morgan pins = "PG0", "PG1", "PG2", "PG3", 44941192b67SChris Morgan "PG4", "PG5"; 45041192b67SChris Morgan function = "mmc1"; 45141192b67SChris Morgan drive-strength = <30>; 45241192b67SChris Morgan bias-pull-up; 45341192b67SChris Morgan }; 45441192b67SChris Morgan 45541192b67SChris Morgan /omit-if-no-ref/ 45641192b67SChris Morgan pwm0_pin: pwm0-pin { 45741192b67SChris Morgan pins = "PB4"; 458438a44ceSMaxime Ripard function = "pwm0"; 4592a451bfaSIcenowy Zheng }; 4602a451bfaSIcenowy Zheng 4612a451bfaSIcenowy Zheng /omit-if-no-ref/ 462f989086cSIcenowy Zheng pwm1_pin: pwm1-pin { 463f989086cSIcenowy Zheng pins = "PB5"; 4648dccafaaSRob Herring function = "pwm1"; 46518742b24SMaxime Ripard }; 466f989086cSIcenowy Zheng 467f989086cSIcenowy Zheng spi0_pins: spi0-pins { 46818742b24SMaxime Ripard pins = "PC0", "PC1", "PC2", "PC3"; 46918742b24SMaxime Ripard function = "spi0"; 470f989086cSIcenowy Zheng }; 471f989086cSIcenowy Zheng }; 472f989086cSIcenowy Zheng 4738dccafaaSRob Herring timer@1c20c00 { 474f989086cSIcenowy Zheng compatible = "allwinner,sun8i-v3s-timer"; 475f989086cSIcenowy Zheng reg = <0x01c20c00 0xa0>; 476f989086cSIcenowy Zheng interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 4779e1975f0SMaxime Ripard <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 478f989086cSIcenowy Zheng <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 479f989086cSIcenowy Zheng clocks = <&osc24M>; 4801d34350cSTobias Schramm }; 4811d34350cSTobias Schramm 4821d34350cSTobias Schramm wdt0: watchdog@1c20ca0 { 4831d34350cSTobias Schramm compatible = "allwinner,sun6i-a31-wdt"; 4841d34350cSTobias Schramm reg = <0x01c20ca0 0x20>; 4851d34350cSTobias Schramm interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 4861d34350cSTobias Schramm clocks = <&osc24M>; 4871d34350cSTobias Schramm }; 4881d34350cSTobias Schramm 48937eac4f9SIcenowy Zheng pwm: pwm@1c21400 { 49037eac4f9SIcenowy Zheng compatible = "allwinner,sun8i-v3s-pwm", 49137eac4f9SIcenowy Zheng "allwinner,sun7i-a20-pwm"; 49237eac4f9SIcenowy Zheng reg = <0x01c21400 0xc>; 49337eac4f9SIcenowy Zheng clocks = <&osc24M>; 49437eac4f9SIcenowy Zheng #pwm-cells = <3>; 49537eac4f9SIcenowy Zheng status = "disabled"; 4965348915dSTobias Schramm }; 4975348915dSTobias Schramm 4985348915dSTobias Schramm lradc: lradc@1c22800 { 4995348915dSTobias Schramm compatible = "allwinner,sun4i-a10-lradc-keys"; 5005348915dSTobias Schramm reg = <0x01c22800 0x400>; 5015348915dSTobias Schramm interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 5025348915dSTobias Schramm status = "disabled"; 5035348915dSTobias Schramm }; 5045348915dSTobias Schramm 5055348915dSTobias Schramm codec: codec@1c22c00 { 5065348915dSTobias Schramm #sound-dai-cells = <0>; 5075348915dSTobias Schramm compatible = "allwinner,sun8i-v3s-codec"; 5085348915dSTobias Schramm reg = <0x01c22c00 0x400>; 5095348915dSTobias Schramm interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 5105348915dSTobias Schramm clocks = <&ccu CLK_BUS_CODEC>, <&ccu CLK_AC_DIG>; 5115348915dSTobias Schramm clock-names = "apb", "codec"; 5125348915dSTobias Schramm resets = <&ccu RST_BUS_CODEC>; 5135348915dSTobias Schramm dmas = <&dma 15>, <&dma 15>; 5145348915dSTobias Schramm dma-names = "rx", "tx"; 5158dccafaaSRob Herring allwinner,codec-analog-controls = <&codec_analog>; 516f989086cSIcenowy Zheng status = "disabled"; 517f989086cSIcenowy Zheng }; 518f989086cSIcenowy Zheng 519f989086cSIcenowy Zheng codec_analog: codec-analog@1c23000 { 520f989086cSIcenowy Zheng compatible = "allwinner,sun8i-v3s-codec-analog"; 5218378be87SIcenowy Zheng reg = <0x01c23000 0x4>; 52293bc32b0STobias Schramm }; 5231532d4f4SCristian Ciocaltea 5248378be87SIcenowy Zheng uart0: serial@1c28000 { 525f989086cSIcenowy Zheng compatible = "snps,dw-apb-uart"; 526f989086cSIcenowy Zheng reg = <0x01c28000 0x400>; 527f989086cSIcenowy Zheng interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 5288dccafaaSRob Herring reg-shift = <2>; 529f989086cSIcenowy Zheng reg-io-width = <4>; 530f989086cSIcenowy Zheng clocks = <&ccu CLK_BUS_UART0>; 531f989086cSIcenowy Zheng dmas = <&dma 6>, <&dma 6>; 532f989086cSIcenowy Zheng dma-names = "tx", "rx"; 533f989086cSIcenowy Zheng resets = <&ccu RST_BUS_UART0>; 5348378be87SIcenowy Zheng status = "disabled"; 53593bc32b0STobias Schramm }; 5361532d4f4SCristian Ciocaltea 5378378be87SIcenowy Zheng uart1: serial@1c28400 { 538f989086cSIcenowy Zheng compatible = "snps,dw-apb-uart"; 539f989086cSIcenowy Zheng reg = <0x01c28400 0x400>; 540f989086cSIcenowy Zheng interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 5418dccafaaSRob Herring reg-shift = <2>; 542f989086cSIcenowy Zheng reg-io-width = <4>; 543f989086cSIcenowy Zheng clocks = <&ccu CLK_BUS_UART1>; 544f989086cSIcenowy Zheng dmas = <&dma 7>, <&dma 7>; 545f989086cSIcenowy Zheng dma-names = "tx", "rx"; 546f989086cSIcenowy Zheng resets = <&ccu RST_BUS_UART1>; 5478378be87SIcenowy Zheng status = "disabled"; 54893bc32b0STobias Schramm }; 5491532d4f4SCristian Ciocaltea 5508378be87SIcenowy Zheng uart2: serial@1c28800 { 551c0dcfbe2SIcenowy Zheng compatible = "snps,dw-apb-uart"; 552c0dcfbe2SIcenowy Zheng reg = <0x01c28800 0x400>; 553f989086cSIcenowy Zheng interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 554f989086cSIcenowy Zheng reg-shift = <2>; 555f989086cSIcenowy Zheng reg-io-width = <4>; 5568dccafaaSRob Herring clocks = <&ccu CLK_BUS_UART2>; 557f989086cSIcenowy Zheng dmas = <&dma 8>, <&dma 8>; 558f989086cSIcenowy Zheng dma-names = "tx", "rx"; 559f989086cSIcenowy Zheng resets = <&ccu RST_BUS_UART2>; 5608378be87SIcenowy Zheng pinctrl-0 = <&uart2_pins>; 5618378be87SIcenowy Zheng pinctrl-names = "default"; 562f989086cSIcenowy Zheng status = "disabled"; 563f989086cSIcenowy Zheng }; 564f989086cSIcenowy Zheng 565f989086cSIcenowy Zheng i2c0: i2c@1c2ac00 { 566f989086cSIcenowy Zheng compatible = "allwinner,sun6i-a31-i2c"; 567f989086cSIcenowy Zheng reg = <0x01c2ac00 0x400>; 568f989086cSIcenowy Zheng interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 5698dccafaaSRob Herring clocks = <&ccu CLK_BUS_I2C0>; 570f989086cSIcenowy Zheng resets = <&ccu RST_BUS_I2C0>; 571f989086cSIcenowy Zheng pinctrl-names = "default"; 572f989086cSIcenowy Zheng pinctrl-0 = <&i2c0_pins>; 5738378be87SIcenowy Zheng status = "disabled"; 5748378be87SIcenowy Zheng #address-cells = <1>; 575f989086cSIcenowy Zheng #size-cells = <0>; 576f989086cSIcenowy Zheng }; 577f989086cSIcenowy Zheng 578f989086cSIcenowy Zheng i2c1: i2c@1c2b000 { 579f989086cSIcenowy Zheng compatible = "allwinner,sun6i-a31-i2c"; 58002ed6bb8SIcenowy Zheng reg = <0x01c2b000 0x400>; 58102ed6bb8SIcenowy Zheng interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 58202ed6bb8SIcenowy Zheng clocks = <&ccu CLK_BUS_I2C1>; 58302ed6bb8SIcenowy Zheng resets = <&ccu RST_BUS_I2C1>; 58402ed6bb8SIcenowy Zheng status = "disabled"; 58502ed6bb8SIcenowy Zheng #address-cells = <1>; 58602ed6bb8SIcenowy Zheng #size-cells = <0>; 58702ed6bb8SIcenowy Zheng }; 58802ed6bb8SIcenowy Zheng 58902ed6bb8SIcenowy Zheng emac: ethernet@1c30000 { 59002ed6bb8SIcenowy Zheng compatible = "allwinner,sun8i-v3s-emac"; 59102ed6bb8SIcenowy Zheng syscon = <&syscon>; 59202ed6bb8SIcenowy Zheng reg = <0x01c30000 0x10000>; 59302ed6bb8SIcenowy Zheng interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 59402ed6bb8SIcenowy Zheng interrupt-names = "macirq"; 59502ed6bb8SIcenowy Zheng resets = <&ccu RST_BUS_EMAC>; 59602ed6bb8SIcenowy Zheng reset-names = "stmmaceth"; 59702ed6bb8SIcenowy Zheng clocks = <&ccu CLK_BUS_EMAC>; 59802ed6bb8SIcenowy Zheng clock-names = "stmmaceth"; 59902ed6bb8SIcenowy Zheng phy-handle = <&int_mii_phy>; 60002ed6bb8SIcenowy Zheng phy-mode = "mii"; 60102ed6bb8SIcenowy Zheng status = "disabled"; 60202ed6bb8SIcenowy Zheng 60302ed6bb8SIcenowy Zheng mdio: mdio { 60402ed6bb8SIcenowy Zheng #address-cells = <1>; 60502ed6bb8SIcenowy Zheng #size-cells = <0>; 60602ed6bb8SIcenowy Zheng compatible = "snps,dwmac-mdio"; 60702ed6bb8SIcenowy Zheng }; 60802ed6bb8SIcenowy Zheng 60902ed6bb8SIcenowy Zheng mdio_mux: mdio-mux { 61002ed6bb8SIcenowy Zheng compatible = "allwinner,sun8i-h3-mdio-mux"; 61102ed6bb8SIcenowy Zheng #address-cells = <1>; 61202ed6bb8SIcenowy Zheng #size-cells = <0>; 61302ed6bb8SIcenowy Zheng 61402ed6bb8SIcenowy Zheng mdio-parent-bus = <&mdio>; 61502ed6bb8SIcenowy Zheng /* Only one MDIO is usable at the time */ 61602ed6bb8SIcenowy Zheng internal_mdio: mdio@1 { 61702ed6bb8SIcenowy Zheng compatible = "allwinner,sun8i-h3-mdio-internal"; 61802ed6bb8SIcenowy Zheng reg = <1>; 61902ed6bb8SIcenowy Zheng #address-cells = <1>; 62002ed6bb8SIcenowy Zheng #size-cells = <0>; 62102ed6bb8SIcenowy Zheng 62202ed6bb8SIcenowy Zheng int_mii_phy: ethernet-phy@1 { 6232a451bfaSIcenowy Zheng compatible = "ethernet-phy-ieee802.3-c22"; 6242a451bfaSIcenowy Zheng reg = <1>; 6252a451bfaSIcenowy Zheng clocks = <&ccu CLK_BUS_EPHY>; 6262a451bfaSIcenowy Zheng resets = <&ccu RST_BUS_EPHY>; 6272a451bfaSIcenowy Zheng }; 6282a451bfaSIcenowy Zheng }; 62993bc32b0STobias Schramm }; 63093bc32b0STobias Schramm }; 6312a451bfaSIcenowy Zheng 6322a451bfaSIcenowy Zheng spi0: spi@1c68000 { 6332a451bfaSIcenowy Zheng compatible = "allwinner,sun8i-h3-spi"; 6342a451bfaSIcenowy Zheng reg = <0x01c68000 0x1000>; 6352a451bfaSIcenowy Zheng interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 6362a451bfaSIcenowy Zheng clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>; 6372a451bfaSIcenowy Zheng clock-names = "ahb", "mod"; 6382a451bfaSIcenowy Zheng dmas = <&dma 23>, <&dma 23>; 639c4af5169SPaul Kocialkowski dma-names = "rx", "tx"; 640c4af5169SPaul Kocialkowski pinctrl-names = "default"; 641c4af5169SPaul Kocialkowski pinctrl-0 = <&spi0_pins>; 642c4af5169SPaul Kocialkowski resets = <&ccu RST_BUS_SPI0>; 643c4af5169SPaul Kocialkowski status = "disabled"; 644c4af5169SPaul Kocialkowski #address-cells = <1>; 645c4af5169SPaul Kocialkowski #size-cells = <0>; 646c4af5169SPaul Kocialkowski }; 647c4af5169SPaul Kocialkowski 648c4af5169SPaul Kocialkowski gic: interrupt-controller@1c81000 { 649c4af5169SPaul Kocialkowski compatible = "arm,gic-400"; 65090e04810SIcenowy Zheng reg = <0x01c81000 0x1000>, 65190e04810SIcenowy Zheng <0x01c82000 0x2000>, 65290e04810SIcenowy Zheng <0x01c84000 0x2000>, 65390e04810SIcenowy Zheng <0x01c86000 0x2000>; 65490e04810SIcenowy Zheng interrupt-controller; 655*f45b2949SPaul Kocialkowski #interrupt-cells = <3>; 65690e04810SIcenowy Zheng interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 65790e04810SIcenowy Zheng }; 65890e04810SIcenowy Zheng 65990e04810SIcenowy Zheng csi1: camera@1cb4000 { 66090e04810SIcenowy Zheng compatible = "allwinner,sun8i-v3s-csi"; 661f989086cSIcenowy Zheng reg = <0x01cb4000 0x3000>; 662f989086cSIcenowy Zheng interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 663 clocks = <&ccu CLK_BUS_CSI>, 664 <&ccu CLK_CSI_SCLK>, 665 <&ccu CLK_DRAM_CSI>; 666 clock-names = "bus", "mod", "ram"; 667 resets = <&ccu RST_BUS_CSI>; 668 status = "disabled"; 669 }; 670 }; 671}; 672