xref: /freebsd-src/sys/contrib/device-tree/src/riscv/thead/th1520.dtsi (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
1aa1a8ff2SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2f126890aSEmmanuel Vadot/*
3f126890aSEmmanuel Vadot * Copyright (C) 2021 Alibaba Group Holding Limited.
4f126890aSEmmanuel Vadot * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
5f126890aSEmmanuel Vadot */
6f126890aSEmmanuel Vadot
7f126890aSEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h>
8*b2d2a78aSEmmanuel Vadot#include <dt-bindings/clock/thead,th1520-clk-ap.h>
9f126890aSEmmanuel Vadot
10f126890aSEmmanuel Vadot/ {
11f126890aSEmmanuel Vadot	compatible = "thead,th1520";
12f126890aSEmmanuel Vadot	#address-cells = <2>;
13f126890aSEmmanuel Vadot	#size-cells = <2>;
14f126890aSEmmanuel Vadot
15f126890aSEmmanuel Vadot	cpus: cpus {
16f126890aSEmmanuel Vadot		#address-cells = <1>;
17f126890aSEmmanuel Vadot		#size-cells = <0>;
18f126890aSEmmanuel Vadot		timebase-frequency = <3000000>;
19f126890aSEmmanuel Vadot
20f126890aSEmmanuel Vadot		c910_0: cpu@0 {
21f126890aSEmmanuel Vadot			compatible = "thead,c910", "riscv";
22f126890aSEmmanuel Vadot			device_type = "cpu";
23f126890aSEmmanuel Vadot			riscv,isa = "rv64imafdc";
2484943d6fSEmmanuel Vadot			riscv,isa-base = "rv64i";
2584943d6fSEmmanuel Vadot			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
2684943d6fSEmmanuel Vadot					       "zifencei", "zihpm";
27f126890aSEmmanuel Vadot			reg = <0>;
28f126890aSEmmanuel Vadot			i-cache-block-size = <64>;
29f126890aSEmmanuel Vadot			i-cache-size = <65536>;
30f126890aSEmmanuel Vadot			i-cache-sets = <512>;
31f126890aSEmmanuel Vadot			d-cache-block-size = <64>;
32f126890aSEmmanuel Vadot			d-cache-size = <65536>;
33f126890aSEmmanuel Vadot			d-cache-sets = <512>;
34f126890aSEmmanuel Vadot			next-level-cache = <&l2_cache>;
35f126890aSEmmanuel Vadot			mmu-type = "riscv,sv39";
36f126890aSEmmanuel Vadot
37f126890aSEmmanuel Vadot			cpu0_intc: interrupt-controller {
38f126890aSEmmanuel Vadot				compatible = "riscv,cpu-intc";
39f126890aSEmmanuel Vadot				interrupt-controller;
40f126890aSEmmanuel Vadot				#interrupt-cells = <1>;
41f126890aSEmmanuel Vadot			};
42f126890aSEmmanuel Vadot		};
43f126890aSEmmanuel Vadot
44f126890aSEmmanuel Vadot		c910_1: cpu@1 {
45f126890aSEmmanuel Vadot			compatible = "thead,c910", "riscv";
46f126890aSEmmanuel Vadot			device_type = "cpu";
47f126890aSEmmanuel Vadot			riscv,isa = "rv64imafdc";
4884943d6fSEmmanuel Vadot			riscv,isa-base = "rv64i";
4984943d6fSEmmanuel Vadot			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
5084943d6fSEmmanuel Vadot					       "zifencei", "zihpm";
51f126890aSEmmanuel Vadot			reg = <1>;
52f126890aSEmmanuel Vadot			i-cache-block-size = <64>;
53f126890aSEmmanuel Vadot			i-cache-size = <65536>;
54f126890aSEmmanuel Vadot			i-cache-sets = <512>;
55f126890aSEmmanuel Vadot			d-cache-block-size = <64>;
56f126890aSEmmanuel Vadot			d-cache-size = <65536>;
57f126890aSEmmanuel Vadot			d-cache-sets = <512>;
58f126890aSEmmanuel Vadot			next-level-cache = <&l2_cache>;
59f126890aSEmmanuel Vadot			mmu-type = "riscv,sv39";
60f126890aSEmmanuel Vadot
61f126890aSEmmanuel Vadot			cpu1_intc: interrupt-controller {
62f126890aSEmmanuel Vadot				compatible = "riscv,cpu-intc";
63f126890aSEmmanuel Vadot				interrupt-controller;
64f126890aSEmmanuel Vadot				#interrupt-cells = <1>;
65f126890aSEmmanuel Vadot			};
66f126890aSEmmanuel Vadot		};
67f126890aSEmmanuel Vadot
68f126890aSEmmanuel Vadot		c910_2: cpu@2 {
69f126890aSEmmanuel Vadot			compatible = "thead,c910", "riscv";
70f126890aSEmmanuel Vadot			device_type = "cpu";
71f126890aSEmmanuel Vadot			riscv,isa = "rv64imafdc";
7284943d6fSEmmanuel Vadot			riscv,isa-base = "rv64i";
7384943d6fSEmmanuel Vadot			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
7484943d6fSEmmanuel Vadot					       "zifencei", "zihpm";
75f126890aSEmmanuel Vadot			reg = <2>;
76f126890aSEmmanuel Vadot			i-cache-block-size = <64>;
77f126890aSEmmanuel Vadot			i-cache-size = <65536>;
78f126890aSEmmanuel Vadot			i-cache-sets = <512>;
79f126890aSEmmanuel Vadot			d-cache-block-size = <64>;
80f126890aSEmmanuel Vadot			d-cache-size = <65536>;
81f126890aSEmmanuel Vadot			d-cache-sets = <512>;
82f126890aSEmmanuel Vadot			next-level-cache = <&l2_cache>;
83f126890aSEmmanuel Vadot			mmu-type = "riscv,sv39";
84f126890aSEmmanuel Vadot
85f126890aSEmmanuel Vadot			cpu2_intc: interrupt-controller {
86f126890aSEmmanuel Vadot				compatible = "riscv,cpu-intc";
87f126890aSEmmanuel Vadot				interrupt-controller;
88f126890aSEmmanuel Vadot				#interrupt-cells = <1>;
89f126890aSEmmanuel Vadot			};
90f126890aSEmmanuel Vadot		};
91f126890aSEmmanuel Vadot
92f126890aSEmmanuel Vadot		c910_3: cpu@3 {
93f126890aSEmmanuel Vadot			compatible = "thead,c910", "riscv";
94f126890aSEmmanuel Vadot			device_type = "cpu";
95f126890aSEmmanuel Vadot			riscv,isa = "rv64imafdc";
9684943d6fSEmmanuel Vadot			riscv,isa-base = "rv64i";
9784943d6fSEmmanuel Vadot			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
9884943d6fSEmmanuel Vadot					       "zifencei", "zihpm";
99f126890aSEmmanuel Vadot			reg = <3>;
100f126890aSEmmanuel Vadot			i-cache-block-size = <64>;
101f126890aSEmmanuel Vadot			i-cache-size = <65536>;
102f126890aSEmmanuel Vadot			i-cache-sets = <512>;
103f126890aSEmmanuel Vadot			d-cache-block-size = <64>;
104f126890aSEmmanuel Vadot			d-cache-size = <65536>;
105f126890aSEmmanuel Vadot			d-cache-sets = <512>;
106f126890aSEmmanuel Vadot			next-level-cache = <&l2_cache>;
107f126890aSEmmanuel Vadot			mmu-type = "riscv,sv39";
108f126890aSEmmanuel Vadot
109f126890aSEmmanuel Vadot			cpu3_intc: interrupt-controller {
110f126890aSEmmanuel Vadot				compatible = "riscv,cpu-intc";
111f126890aSEmmanuel Vadot				interrupt-controller;
112f126890aSEmmanuel Vadot				#interrupt-cells = <1>;
113f126890aSEmmanuel Vadot			};
114f126890aSEmmanuel Vadot		};
115f126890aSEmmanuel Vadot
116f126890aSEmmanuel Vadot		l2_cache: l2-cache {
117f126890aSEmmanuel Vadot			compatible = "cache";
118f126890aSEmmanuel Vadot			cache-block-size = <64>;
119f126890aSEmmanuel Vadot			cache-level = <2>;
120f126890aSEmmanuel Vadot			cache-size = <1048576>;
121f126890aSEmmanuel Vadot			cache-sets = <1024>;
122f126890aSEmmanuel Vadot			cache-unified;
123f126890aSEmmanuel Vadot		};
124f126890aSEmmanuel Vadot	};
125f126890aSEmmanuel Vadot
1260e8011faSEmmanuel Vadot	pmu {
1270e8011faSEmmanuel Vadot		compatible = "riscv,pmu";
1280e8011faSEmmanuel Vadot		riscv,event-to-mhpmcounters =
1290e8011faSEmmanuel Vadot			<0x00003 0x00003 0x0007fff8>,
1300e8011faSEmmanuel Vadot			<0x00004 0x00004 0x0007fff8>,
1310e8011faSEmmanuel Vadot			<0x00005 0x00005 0x0007fff8>,
1320e8011faSEmmanuel Vadot			<0x00006 0x00006 0x0007fff8>,
1330e8011faSEmmanuel Vadot			<0x00007 0x00007 0x0007fff8>,
1340e8011faSEmmanuel Vadot			<0x00008 0x00008 0x0007fff8>,
1350e8011faSEmmanuel Vadot			<0x00009 0x00009 0x0007fff8>,
1360e8011faSEmmanuel Vadot			<0x0000a 0x0000a 0x0007fff8>,
1370e8011faSEmmanuel Vadot			<0x10000 0x10000 0x0007fff8>,
1380e8011faSEmmanuel Vadot			<0x10001 0x10001 0x0007fff8>,
1390e8011faSEmmanuel Vadot			<0x10002 0x10002 0x0007fff8>,
1400e8011faSEmmanuel Vadot			<0x10003 0x10003 0x0007fff8>,
1410e8011faSEmmanuel Vadot			<0x10010 0x10010 0x0007fff8>,
1420e8011faSEmmanuel Vadot			<0x10011 0x10011 0x0007fff8>,
1430e8011faSEmmanuel Vadot			<0x10012 0x10012 0x0007fff8>,
1440e8011faSEmmanuel Vadot			<0x10013 0x10013 0x0007fff8>;
1450e8011faSEmmanuel Vadot		riscv,event-to-mhpmevent =
1460e8011faSEmmanuel Vadot			<0x00003 0x00000000 0x00000001>,
1470e8011faSEmmanuel Vadot			<0x00004 0x00000000 0x00000002>,
1480e8011faSEmmanuel Vadot			<0x00006 0x00000000 0x00000006>,
1490e8011faSEmmanuel Vadot			<0x00005 0x00000000 0x00000007>,
1500e8011faSEmmanuel Vadot			<0x00007 0x00000000 0x00000008>,
1510e8011faSEmmanuel Vadot			<0x00008 0x00000000 0x00000009>,
1520e8011faSEmmanuel Vadot			<0x00009 0x00000000 0x0000000a>,
1530e8011faSEmmanuel Vadot			<0x0000a 0x00000000 0x0000000b>,
1540e8011faSEmmanuel Vadot			<0x10000 0x00000000 0x0000000c>,
1550e8011faSEmmanuel Vadot			<0x10001 0x00000000 0x0000000d>,
1560e8011faSEmmanuel Vadot			<0x10002 0x00000000 0x0000000e>,
1570e8011faSEmmanuel Vadot			<0x10003 0x00000000 0x0000000f>,
1580e8011faSEmmanuel Vadot			<0x10010 0x00000000 0x00000010>,
1590e8011faSEmmanuel Vadot			<0x10011 0x00000000 0x00000011>,
1600e8011faSEmmanuel Vadot			<0x10012 0x00000000 0x00000012>,
1610e8011faSEmmanuel Vadot			<0x10013 0x00000000 0x00000013>;
1620e8011faSEmmanuel Vadot		riscv,raw-event-to-mhpmcounters =
1630e8011faSEmmanuel Vadot			<0x00000000 0x00000001 0xffffffff 0xffffffff 0x0007fff8>,
1640e8011faSEmmanuel Vadot			<0x00000000 0x00000002 0xffffffff 0xffffffff 0x0007fff8>,
1650e8011faSEmmanuel Vadot			<0x00000000 0x00000003 0xffffffff 0xffffffff 0x0007fff8>,
1660e8011faSEmmanuel Vadot			<0x00000000 0x00000004 0xffffffff 0xffffffff 0x0007fff8>,
1670e8011faSEmmanuel Vadot			<0x00000000 0x00000005 0xffffffff 0xffffffff 0x0007fff8>,
1680e8011faSEmmanuel Vadot			<0x00000000 0x00000006 0xffffffff 0xffffffff 0x0007fff8>,
1690e8011faSEmmanuel Vadot			<0x00000000 0x00000007 0xffffffff 0xffffffff 0x0007fff8>,
1700e8011faSEmmanuel Vadot			<0x00000000 0x00000008 0xffffffff 0xffffffff 0x0007fff8>,
1710e8011faSEmmanuel Vadot			<0x00000000 0x00000009 0xffffffff 0xffffffff 0x0007fff8>,
1720e8011faSEmmanuel Vadot			<0x00000000 0x0000000a 0xffffffff 0xffffffff 0x0007fff8>,
1730e8011faSEmmanuel Vadot			<0x00000000 0x0000000b 0xffffffff 0xffffffff 0x0007fff8>,
1740e8011faSEmmanuel Vadot			<0x00000000 0x0000000c 0xffffffff 0xffffffff 0x0007fff8>,
1750e8011faSEmmanuel Vadot			<0x00000000 0x0000000d 0xffffffff 0xffffffff 0x0007fff8>,
1760e8011faSEmmanuel Vadot			<0x00000000 0x0000000e 0xffffffff 0xffffffff 0x0007fff8>,
1770e8011faSEmmanuel Vadot			<0x00000000 0x0000000f 0xffffffff 0xffffffff 0x0007fff8>,
1780e8011faSEmmanuel Vadot			<0x00000000 0x00000010 0xffffffff 0xffffffff 0x0007fff8>,
1790e8011faSEmmanuel Vadot			<0x00000000 0x00000011 0xffffffff 0xffffffff 0x0007fff8>,
1800e8011faSEmmanuel Vadot			<0x00000000 0x00000012 0xffffffff 0xffffffff 0x0007fff8>,
1810e8011faSEmmanuel Vadot			<0x00000000 0x00000013 0xffffffff 0xffffffff 0x0007fff8>,
1820e8011faSEmmanuel Vadot			<0x00000000 0x00000014 0xffffffff 0xffffffff 0x0007fff8>,
1830e8011faSEmmanuel Vadot			<0x00000000 0x00000015 0xffffffff 0xffffffff 0x0007fff8>,
1840e8011faSEmmanuel Vadot			<0x00000000 0x00000016 0xffffffff 0xffffffff 0x0007fff8>,
1850e8011faSEmmanuel Vadot			<0x00000000 0x00000017 0xffffffff 0xffffffff 0x0007fff8>,
1860e8011faSEmmanuel Vadot			<0x00000000 0x00000018 0xffffffff 0xffffffff 0x0007fff8>,
1870e8011faSEmmanuel Vadot			<0x00000000 0x00000019 0xffffffff 0xffffffff 0x0007fff8>,
1880e8011faSEmmanuel Vadot			<0x00000000 0x0000001a 0xffffffff 0xffffffff 0x0007fff8>,
1890e8011faSEmmanuel Vadot			<0x00000000 0x0000001b 0xffffffff 0xffffffff 0x0007fff8>,
1900e8011faSEmmanuel Vadot			<0x00000000 0x0000001c 0xffffffff 0xffffffff 0x0007fff8>,
1910e8011faSEmmanuel Vadot			<0x00000000 0x0000001d 0xffffffff 0xffffffff 0x0007fff8>,
1920e8011faSEmmanuel Vadot			<0x00000000 0x0000001e 0xffffffff 0xffffffff 0x0007fff8>,
1930e8011faSEmmanuel Vadot			<0x00000000 0x0000001f 0xffffffff 0xffffffff 0x0007fff8>,
1940e8011faSEmmanuel Vadot			<0x00000000 0x00000020 0xffffffff 0xffffffff 0x0007fff8>,
1950e8011faSEmmanuel Vadot			<0x00000000 0x00000021 0xffffffff 0xffffffff 0x0007fff8>,
1960e8011faSEmmanuel Vadot			<0x00000000 0x00000022 0xffffffff 0xffffffff 0x0007fff8>,
1970e8011faSEmmanuel Vadot			<0x00000000 0x00000023 0xffffffff 0xffffffff 0x0007fff8>,
1980e8011faSEmmanuel Vadot			<0x00000000 0x00000024 0xffffffff 0xffffffff 0x0007fff8>,
1990e8011faSEmmanuel Vadot			<0x00000000 0x00000025 0xffffffff 0xffffffff 0x0007fff8>,
2000e8011faSEmmanuel Vadot			<0x00000000 0x00000026 0xffffffff 0xffffffff 0x0007fff8>,
2010e8011faSEmmanuel Vadot			<0x00000000 0x00000027 0xffffffff 0xffffffff 0x0007fff8>,
2020e8011faSEmmanuel Vadot			<0x00000000 0x00000028 0xffffffff 0xffffffff 0x0007fff8>,
2030e8011faSEmmanuel Vadot			<0x00000000 0x00000029 0xffffffff 0xffffffff 0x0007fff8>,
2040e8011faSEmmanuel Vadot			<0x00000000 0x0000002a 0xffffffff 0xffffffff 0x0007fff8>;
2050e8011faSEmmanuel Vadot	};
2060e8011faSEmmanuel Vadot
207f126890aSEmmanuel Vadot	osc: oscillator {
208f126890aSEmmanuel Vadot		compatible = "fixed-clock";
209f126890aSEmmanuel Vadot		clock-output-names = "osc_24m";
210f126890aSEmmanuel Vadot		#clock-cells = <0>;
211f126890aSEmmanuel Vadot	};
212f126890aSEmmanuel Vadot
213f126890aSEmmanuel Vadot	osc_32k: 32k-oscillator {
214f126890aSEmmanuel Vadot		compatible = "fixed-clock";
215f126890aSEmmanuel Vadot		clock-output-names = "osc_32k";
216f126890aSEmmanuel Vadot		#clock-cells = <0>;
217f126890aSEmmanuel Vadot	};
218f126890aSEmmanuel Vadot
219f126890aSEmmanuel Vadot	soc {
220f126890aSEmmanuel Vadot		compatible = "simple-bus";
221f126890aSEmmanuel Vadot		interrupt-parent = <&plic>;
222f126890aSEmmanuel Vadot		#address-cells = <2>;
223f126890aSEmmanuel Vadot		#size-cells = <2>;
224aa1a8ff2SEmmanuel Vadot		dma-noncoherent;
225f126890aSEmmanuel Vadot		ranges;
226f126890aSEmmanuel Vadot
227f126890aSEmmanuel Vadot		plic: interrupt-controller@ffd8000000 {
228f126890aSEmmanuel Vadot			compatible = "thead,th1520-plic", "thead,c900-plic";
229f126890aSEmmanuel Vadot			reg = <0xff 0xd8000000 0x0 0x01000000>;
230f126890aSEmmanuel Vadot			interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
231f126890aSEmmanuel Vadot					      <&cpu1_intc 11>, <&cpu1_intc 9>,
232f126890aSEmmanuel Vadot					      <&cpu2_intc 11>, <&cpu2_intc 9>,
233f126890aSEmmanuel Vadot					      <&cpu3_intc 11>, <&cpu3_intc 9>;
234f126890aSEmmanuel Vadot			interrupt-controller;
235f126890aSEmmanuel Vadot			#address-cells = <0>;
236f126890aSEmmanuel Vadot			#interrupt-cells = <2>;
237f126890aSEmmanuel Vadot			riscv,ndev = <240>;
238f126890aSEmmanuel Vadot		};
239f126890aSEmmanuel Vadot
240f126890aSEmmanuel Vadot		clint: timer@ffdc000000 {
241f126890aSEmmanuel Vadot			compatible = "thead,th1520-clint", "thead,c900-clint";
242f126890aSEmmanuel Vadot			reg = <0xff 0xdc000000 0x0 0x00010000>;
243f126890aSEmmanuel Vadot			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
244f126890aSEmmanuel Vadot					      <&cpu1_intc 3>, <&cpu1_intc 7>,
245f126890aSEmmanuel Vadot					      <&cpu2_intc 3>, <&cpu2_intc 7>,
246f126890aSEmmanuel Vadot					      <&cpu3_intc 3>, <&cpu3_intc 7>;
247f126890aSEmmanuel Vadot		};
248f126890aSEmmanuel Vadot
249*b2d2a78aSEmmanuel Vadot		spi0: spi@ffe700c000 {
250*b2d2a78aSEmmanuel Vadot			compatible = "thead,th1520-spi", "snps,dw-apb-ssi";
251*b2d2a78aSEmmanuel Vadot			reg = <0xff 0xe700c000 0x0 0x1000>;
252*b2d2a78aSEmmanuel Vadot			interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
253*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_SPI>;
254*b2d2a78aSEmmanuel Vadot			#address-cells = <1>;
255*b2d2a78aSEmmanuel Vadot			#size-cells = <0>;
256*b2d2a78aSEmmanuel Vadot			status = "disabled";
257*b2d2a78aSEmmanuel Vadot		};
258*b2d2a78aSEmmanuel Vadot
259f126890aSEmmanuel Vadot		uart0: serial@ffe7014000 {
260f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
261f126890aSEmmanuel Vadot			reg = <0xff 0xe7014000 0x0 0x100>;
262f126890aSEmmanuel Vadot			interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
263*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_UART_SCLK>, <&clk CLK_UART0_PCLK>;
264*b2d2a78aSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
265f126890aSEmmanuel Vadot			reg-shift = <2>;
266f126890aSEmmanuel Vadot			reg-io-width = <4>;
267f126890aSEmmanuel Vadot			status = "disabled";
268f126890aSEmmanuel Vadot		};
269f126890aSEmmanuel Vadot
2707d0873ebSEmmanuel Vadot		emmc: mmc@ffe7080000 {
2717d0873ebSEmmanuel Vadot			compatible = "thead,th1520-dwcmshc";
2727d0873ebSEmmanuel Vadot			reg = <0xff 0xe7080000 0x0 0x10000>;
2737d0873ebSEmmanuel Vadot			interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
274*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_EMMC_SDIO>;
2757d0873ebSEmmanuel Vadot			clock-names = "core";
2767d0873ebSEmmanuel Vadot			status = "disabled";
2777d0873ebSEmmanuel Vadot		};
2787d0873ebSEmmanuel Vadot
2797d0873ebSEmmanuel Vadot		sdio0: mmc@ffe7090000 {
2807d0873ebSEmmanuel Vadot			compatible = "thead,th1520-dwcmshc";
2817d0873ebSEmmanuel Vadot			reg = <0xff 0xe7090000 0x0 0x10000>;
2827d0873ebSEmmanuel Vadot			interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
283*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_EMMC_SDIO>;
2847d0873ebSEmmanuel Vadot			clock-names = "core";
2857d0873ebSEmmanuel Vadot			status = "disabled";
2867d0873ebSEmmanuel Vadot		};
2877d0873ebSEmmanuel Vadot
2887d0873ebSEmmanuel Vadot		sdio1: mmc@ffe70a0000 {
2897d0873ebSEmmanuel Vadot			compatible = "thead,th1520-dwcmshc";
2907d0873ebSEmmanuel Vadot			reg = <0xff 0xe70a0000 0x0 0x10000>;
2917d0873ebSEmmanuel Vadot			interrupts = <71 IRQ_TYPE_LEVEL_HIGH>;
292*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_EMMC_SDIO>;
2937d0873ebSEmmanuel Vadot			clock-names = "core";
2947d0873ebSEmmanuel Vadot			status = "disabled";
2957d0873ebSEmmanuel Vadot		};
2967d0873ebSEmmanuel Vadot
297f126890aSEmmanuel Vadot		uart1: serial@ffe7f00000 {
298f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
299f126890aSEmmanuel Vadot			reg = <0xff 0xe7f00000 0x0 0x100>;
300f126890aSEmmanuel Vadot			interrupts = <37 IRQ_TYPE_LEVEL_HIGH>;
301*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_UART_SCLK>, <&clk CLK_UART1_PCLK>;
302*b2d2a78aSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
303f126890aSEmmanuel Vadot			reg-shift = <2>;
304f126890aSEmmanuel Vadot			reg-io-width = <4>;
305f126890aSEmmanuel Vadot			status = "disabled";
306f126890aSEmmanuel Vadot		};
307f126890aSEmmanuel Vadot
308f126890aSEmmanuel Vadot		uart3: serial@ffe7f04000 {
309f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
310f126890aSEmmanuel Vadot			reg = <0xff 0xe7f04000 0x0 0x100>;
311f126890aSEmmanuel Vadot			interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
312*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_UART_SCLK>, <&clk CLK_UART3_PCLK>;
313*b2d2a78aSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
314f126890aSEmmanuel Vadot			reg-shift = <2>;
315f126890aSEmmanuel Vadot			reg-io-width = <4>;
316f126890aSEmmanuel Vadot			status = "disabled";
317f126890aSEmmanuel Vadot		};
318f126890aSEmmanuel Vadot
319f126890aSEmmanuel Vadot		gpio2: gpio@ffe7f34000 {
320f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
321f126890aSEmmanuel Vadot			reg = <0xff 0xe7f34000 0x0 0x1000>;
322f126890aSEmmanuel Vadot			#address-cells = <1>;
323f126890aSEmmanuel Vadot			#size-cells = <0>;
324*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_GPIO2>;
325f126890aSEmmanuel Vadot
326f126890aSEmmanuel Vadot			portc: gpio-controller@0 {
327f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
328f126890aSEmmanuel Vadot				gpio-controller;
329f126890aSEmmanuel Vadot				#gpio-cells = <2>;
330f126890aSEmmanuel Vadot				ngpios = <32>;
331f126890aSEmmanuel Vadot				reg = <0>;
332f126890aSEmmanuel Vadot				interrupt-controller;
333f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
334f126890aSEmmanuel Vadot				interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
335f126890aSEmmanuel Vadot			};
336f126890aSEmmanuel Vadot		};
337f126890aSEmmanuel Vadot
338f126890aSEmmanuel Vadot		gpio3: gpio@ffe7f38000 {
339f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
340f126890aSEmmanuel Vadot			reg = <0xff 0xe7f38000 0x0 0x1000>;
341f126890aSEmmanuel Vadot			#address-cells = <1>;
342f126890aSEmmanuel Vadot			#size-cells = <0>;
343*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_GPIO3>;
344f126890aSEmmanuel Vadot
345f126890aSEmmanuel Vadot			portd: gpio-controller@0 {
346f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
347f126890aSEmmanuel Vadot				gpio-controller;
348f126890aSEmmanuel Vadot				#gpio-cells = <2>;
349f126890aSEmmanuel Vadot				ngpios = <32>;
350f126890aSEmmanuel Vadot				reg = <0>;
351f126890aSEmmanuel Vadot				interrupt-controller;
352f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
353f126890aSEmmanuel Vadot				interrupts = <59 IRQ_TYPE_LEVEL_HIGH>;
354f126890aSEmmanuel Vadot			};
355f126890aSEmmanuel Vadot		};
356f126890aSEmmanuel Vadot
357f126890aSEmmanuel Vadot		gpio0: gpio@ffec005000 {
358f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
359f126890aSEmmanuel Vadot			reg = <0xff 0xec005000 0x0 0x1000>;
360f126890aSEmmanuel Vadot			#address-cells = <1>;
361f126890aSEmmanuel Vadot			#size-cells = <0>;
362*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_GPIO0>;
363f126890aSEmmanuel Vadot
364f126890aSEmmanuel Vadot			porta: gpio-controller@0 {
365f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
366f126890aSEmmanuel Vadot				gpio-controller;
367f126890aSEmmanuel Vadot				#gpio-cells = <2>;
368f126890aSEmmanuel Vadot				ngpios = <32>;
369f126890aSEmmanuel Vadot				reg = <0>;
370f126890aSEmmanuel Vadot				interrupt-controller;
371f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
372f126890aSEmmanuel Vadot				interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
373f126890aSEmmanuel Vadot			};
374f126890aSEmmanuel Vadot		};
375f126890aSEmmanuel Vadot
376f126890aSEmmanuel Vadot		gpio1: gpio@ffec006000 {
377f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
378f126890aSEmmanuel Vadot			reg = <0xff 0xec006000 0x0 0x1000>;
379f126890aSEmmanuel Vadot			#address-cells = <1>;
380f126890aSEmmanuel Vadot			#size-cells = <0>;
381*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_GPIO1>;
382f126890aSEmmanuel Vadot
383f126890aSEmmanuel Vadot			portb: gpio-controller@0 {
384f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
385f126890aSEmmanuel Vadot				gpio-controller;
386f126890aSEmmanuel Vadot				#gpio-cells = <2>;
387f126890aSEmmanuel Vadot				ngpios = <32>;
388f126890aSEmmanuel Vadot				reg = <0>;
389f126890aSEmmanuel Vadot				interrupt-controller;
390f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
391f126890aSEmmanuel Vadot				interrupts = <57 IRQ_TYPE_LEVEL_HIGH>;
392f126890aSEmmanuel Vadot			};
393f126890aSEmmanuel Vadot		};
394f126890aSEmmanuel Vadot
395f126890aSEmmanuel Vadot		uart2: serial@ffec010000 {
396f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
397f126890aSEmmanuel Vadot			reg = <0xff 0xec010000 0x0 0x4000>;
398f126890aSEmmanuel Vadot			interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
399*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_UART_SCLK>, <&clk CLK_UART2_PCLK>;
400*b2d2a78aSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
401f126890aSEmmanuel Vadot			reg-shift = <2>;
402f126890aSEmmanuel Vadot			reg-io-width = <4>;
403f126890aSEmmanuel Vadot			status = "disabled";
404f126890aSEmmanuel Vadot		};
405f126890aSEmmanuel Vadot
406*b2d2a78aSEmmanuel Vadot		clk: clock-controller@ffef010000 {
407*b2d2a78aSEmmanuel Vadot			compatible = "thead,th1520-clk-ap";
408*b2d2a78aSEmmanuel Vadot			reg = <0xff 0xef010000 0x0 0x1000>;
409*b2d2a78aSEmmanuel Vadot			clocks = <&osc>;
410*b2d2a78aSEmmanuel Vadot			#clock-cells = <1>;
411*b2d2a78aSEmmanuel Vadot		};
412*b2d2a78aSEmmanuel Vadot
413f126890aSEmmanuel Vadot		dmac0: dma-controller@ffefc00000 {
414f126890aSEmmanuel Vadot			compatible = "snps,axi-dma-1.01a";
415f126890aSEmmanuel Vadot			reg = <0xff 0xefc00000 0x0 0x1000>;
416f126890aSEmmanuel Vadot			interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
417*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>, <&clk CLK_PERI_APB_PCLK>;
418f126890aSEmmanuel Vadot			clock-names = "core-clk", "cfgr-clk";
419f126890aSEmmanuel Vadot			#dma-cells = <1>;
420f126890aSEmmanuel Vadot			dma-channels = <4>;
421f126890aSEmmanuel Vadot			snps,block-size = <65536 65536 65536 65536>;
422f126890aSEmmanuel Vadot			snps,priority = <0 1 2 3>;
423f126890aSEmmanuel Vadot			snps,dma-masters = <1>;
424f126890aSEmmanuel Vadot			snps,data-width = <4>;
425f126890aSEmmanuel Vadot			snps,axi-max-burst-len = <16>;
426f126890aSEmmanuel Vadot			status = "disabled";
427f126890aSEmmanuel Vadot		};
428f126890aSEmmanuel Vadot
429f126890aSEmmanuel Vadot		timer0: timer@ffefc32000 {
430f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
431f126890aSEmmanuel Vadot			reg = <0xff 0xefc32000 0x0 0x14>;
432*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
433f126890aSEmmanuel Vadot			clock-names = "timer";
434f126890aSEmmanuel Vadot			interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;
435f126890aSEmmanuel Vadot			status = "disabled";
436f126890aSEmmanuel Vadot		};
437f126890aSEmmanuel Vadot
438f126890aSEmmanuel Vadot		timer1: timer@ffefc32014 {
439f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
440f126890aSEmmanuel Vadot			reg = <0xff 0xefc32014 0x0 0x14>;
441*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
442f126890aSEmmanuel Vadot			clock-names = "timer";
443f126890aSEmmanuel Vadot			interrupts = <17 IRQ_TYPE_LEVEL_HIGH>;
444f126890aSEmmanuel Vadot			status = "disabled";
445f126890aSEmmanuel Vadot		};
446f126890aSEmmanuel Vadot
447f126890aSEmmanuel Vadot		timer2: timer@ffefc32028 {
448f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
449f126890aSEmmanuel Vadot			reg = <0xff 0xefc32028 0x0 0x14>;
450*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
451f126890aSEmmanuel Vadot			clock-names = "timer";
452f126890aSEmmanuel Vadot			interrupts = <18 IRQ_TYPE_LEVEL_HIGH>;
453f126890aSEmmanuel Vadot			status = "disabled";
454f126890aSEmmanuel Vadot		};
455f126890aSEmmanuel Vadot
456f126890aSEmmanuel Vadot		timer3: timer@ffefc3203c {
457f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
458f126890aSEmmanuel Vadot			reg = <0xff 0xefc3203c 0x0 0x14>;
459*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
460f126890aSEmmanuel Vadot			clock-names = "timer";
461f126890aSEmmanuel Vadot			interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
462f126890aSEmmanuel Vadot			status = "disabled";
463f126890aSEmmanuel Vadot		};
464f126890aSEmmanuel Vadot
465f126890aSEmmanuel Vadot		uart4: serial@fff7f08000 {
466f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
467f126890aSEmmanuel Vadot			reg = <0xff 0xf7f08000 0x0 0x4000>;
468f126890aSEmmanuel Vadot			interrupts = <40 IRQ_TYPE_LEVEL_HIGH>;
469*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_UART_SCLK>, <&clk CLK_UART4_PCLK>;
470*b2d2a78aSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
471f126890aSEmmanuel Vadot			reg-shift = <2>;
472f126890aSEmmanuel Vadot			reg-io-width = <4>;
473f126890aSEmmanuel Vadot			status = "disabled";
474f126890aSEmmanuel Vadot		};
475f126890aSEmmanuel Vadot
476f126890aSEmmanuel Vadot		uart5: serial@fff7f0c000 {
477f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
478f126890aSEmmanuel Vadot			reg = <0xff 0xf7f0c000 0x0 0x4000>;
479f126890aSEmmanuel Vadot			interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
480*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_UART_SCLK>, <&clk CLK_UART5_PCLK>;
481*b2d2a78aSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
482f126890aSEmmanuel Vadot			reg-shift = <2>;
483f126890aSEmmanuel Vadot			reg-io-width = <4>;
484f126890aSEmmanuel Vadot			status = "disabled";
485f126890aSEmmanuel Vadot		};
486f126890aSEmmanuel Vadot
487f126890aSEmmanuel Vadot		timer4: timer@ffffc33000 {
488f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
489f126890aSEmmanuel Vadot			reg = <0xff 0xffc33000 0x0 0x14>;
490*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
491f126890aSEmmanuel Vadot			clock-names = "timer";
492f126890aSEmmanuel Vadot			interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
493f126890aSEmmanuel Vadot			status = "disabled";
494f126890aSEmmanuel Vadot		};
495f126890aSEmmanuel Vadot
496f126890aSEmmanuel Vadot		timer5: timer@ffffc33014 {
497f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
498f126890aSEmmanuel Vadot			reg = <0xff 0xffc33014 0x0 0x14>;
499*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
500f126890aSEmmanuel Vadot			clock-names = "timer";
501f126890aSEmmanuel Vadot			interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;
502f126890aSEmmanuel Vadot			status = "disabled";
503f126890aSEmmanuel Vadot		};
504f126890aSEmmanuel Vadot
505f126890aSEmmanuel Vadot		timer6: timer@ffffc33028 {
506f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
507f126890aSEmmanuel Vadot			reg = <0xff 0xffc33028 0x0 0x14>;
508*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
509f126890aSEmmanuel Vadot			clock-names = "timer";
510f126890aSEmmanuel Vadot			interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
511f126890aSEmmanuel Vadot			status = "disabled";
512f126890aSEmmanuel Vadot		};
513f126890aSEmmanuel Vadot
514f126890aSEmmanuel Vadot		timer7: timer@ffffc3303c {
515f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-timer";
516f126890aSEmmanuel Vadot			reg = <0xff 0xffc3303c 0x0 0x14>;
517*b2d2a78aSEmmanuel Vadot			clocks = <&clk CLK_PERI_APB_PCLK>;
518f126890aSEmmanuel Vadot			clock-names = "timer";
519f126890aSEmmanuel Vadot			interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
520f126890aSEmmanuel Vadot			status = "disabled";
521f126890aSEmmanuel Vadot		};
522f126890aSEmmanuel Vadot
523f126890aSEmmanuel Vadot		ao_gpio0: gpio@fffff41000 {
524f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
525f126890aSEmmanuel Vadot			reg = <0xff 0xfff41000 0x0 0x1000>;
526f126890aSEmmanuel Vadot			#address-cells = <1>;
527f126890aSEmmanuel Vadot			#size-cells = <0>;
528f126890aSEmmanuel Vadot
529f126890aSEmmanuel Vadot			porte: gpio-controller@0 {
530f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
531f126890aSEmmanuel Vadot				gpio-controller;
532f126890aSEmmanuel Vadot				#gpio-cells = <2>;
533f126890aSEmmanuel Vadot				ngpios = <32>;
534f126890aSEmmanuel Vadot				reg = <0>;
535f126890aSEmmanuel Vadot				interrupt-controller;
536f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
537f126890aSEmmanuel Vadot				interrupts = <76 IRQ_TYPE_LEVEL_HIGH>;
538f126890aSEmmanuel Vadot			};
539f126890aSEmmanuel Vadot		};
540f126890aSEmmanuel Vadot
541f126890aSEmmanuel Vadot		ao_gpio1: gpio@fffff52000 {
542f126890aSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
543f126890aSEmmanuel Vadot			reg = <0xff 0xfff52000 0x0 0x1000>;
544f126890aSEmmanuel Vadot			#address-cells = <1>;
545f126890aSEmmanuel Vadot			#size-cells = <0>;
546f126890aSEmmanuel Vadot
547f126890aSEmmanuel Vadot			portf: gpio-controller@0 {
548f126890aSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
549f126890aSEmmanuel Vadot				gpio-controller;
550f126890aSEmmanuel Vadot				#gpio-cells = <2>;
551f126890aSEmmanuel Vadot				ngpios = <32>;
552f126890aSEmmanuel Vadot				reg = <0>;
553f126890aSEmmanuel Vadot				interrupt-controller;
554f126890aSEmmanuel Vadot				#interrupt-cells = <2>;
555f126890aSEmmanuel Vadot				interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
556f126890aSEmmanuel Vadot			};
557f126890aSEmmanuel Vadot		};
558f126890aSEmmanuel Vadot	};
559f126890aSEmmanuel Vadot};
560