1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the r8a77980 SoC
4 *
5 * Copyright (C) 2018 Renesas Electronics Corp.
6 * Copyright (C) 2018 Cogent Embedded, Inc.
7 */
8
9#include <dt-bindings/clock/r8a77980-cpg-mssr.h>
10#include <dt-bindings/interrupt-controller/irq.h>
11#include <dt-bindings/interrupt-controller/arm-gic.h>
12#include <dt-bindings/power/r8a77980-sysc.h>
13
14/ {
15	compatible = "renesas,r8a77980";
16	#address-cells = <2>;
17	#size-cells = <2>;
18
19	cpus {
20		#address-cells = <1>;
21		#size-cells = <0>;
22
23		a53_0: cpu@0 {
24			device_type = "cpu";
25			compatible = "arm,cortex-a53", "arm,armv8";
26			reg = <0>;
27			clocks = <&cpg CPG_CORE R8A77980_CLK_Z2>;
28			power-domains = <&sysc R8A77980_PD_CA53_CPU0>;
29			next-level-cache = <&L2_CA53>;
30			enable-method = "psci";
31		};
32
33		L2_CA53: cache-controller {
34			compatible = "cache";
35			power-domains = <&sysc R8A77980_PD_CA53_SCU>;
36			cache-unified;
37			cache-level = <2>;
38		};
39	};
40
41	/* External CAN clock - to be overridden by boards that provide it */
42	can_clk: can {
43		compatible = "fixed-clock";
44		#clock-cells = <0>;
45		clock-frequency = <0>;
46	};
47
48	extal_clk: extal {
49		compatible = "fixed-clock";
50		#clock-cells = <0>;
51		/* This value must be overridden by the board */
52		clock-frequency = <0>;
53	};
54
55	extalr_clk: extalr {
56		compatible = "fixed-clock";
57		#clock-cells = <0>;
58		/* This value must be overridden by the board */
59		clock-frequency = <0>;
60	};
61
62	psci {
63		compatible = "arm,psci-1.0", "arm,psci-0.2";
64		method = "smc";
65	};
66
67	/* External SCIF clock - to be overridden by boards that provide it */
68	scif_clk: scif {
69		compatible = "fixed-clock";
70		#clock-cells = <0>;
71		clock-frequency = <0>;
72	};
73
74	soc {
75		compatible = "simple-bus";
76		interrupt-parent = <&gic>;
77
78		#address-cells = <2>;
79		#size-cells = <2>;
80		ranges;
81
82		pfc: pin-controller@e6060000 {
83			compatible = "renesas,pfc-r8a77980";
84			reg = <0 0xe6060000 0 0x50c>;
85		};
86
87		cpg: clock-controller@e6150000 {
88			compatible = "renesas,r8a77980-cpg-mssr";
89			reg = <0 0xe6150000 0 0x1000>;
90			clocks = <&extal_clk>, <&extalr_clk>;
91			clock-names = "extal", "extalr";
92			#clock-cells = <2>;
93			#power-domain-cells = <0>;
94			#reset-cells = <1>;
95		};
96
97		rst: reset-controller@e6160000 {
98			compatible = "renesas,r8a77980-rst";
99			reg = <0 0xe6160000 0 0x200>;
100		};
101
102		sysc: system-controller@e6180000 {
103			compatible = "renesas,r8a77980-sysc";
104			reg = <0 0xe6180000 0 0x440>;
105			#power-domain-cells = <1>;
106		};
107
108		hscif0: serial@e6540000 {
109			compatible = "renesas,hscif-r8a77980",
110				     "renesas,rcar-gen3-hscif",
111				     "renesas,hscif";
112			reg = <0 0xe6540000 0 0x60>;
113			interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
114			clocks = <&cpg CPG_MOD 520>,
115				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
116				 <&scif_clk>;
117			clock-names = "fck", "brg_int", "scif_clk";
118			dmas = <&dmac1 0x31>, <&dmac1 0x30>,
119			       <&dmac2 0x31>, <&dmac2 0x30>;
120			dma-names = "tx", "rx", "tx", "rx";
121			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
122			resets = <&cpg 520>;
123			status = "disabled";
124		};
125
126		hscif1: serial@e6550000 {
127			compatible = "renesas,hscif-r8a77980",
128				     "renesas,rcar-gen3-hscif",
129				     "renesas,hscif";
130			reg = <0 0xe6550000 0 0x60>;
131			interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
132			clocks = <&cpg CPG_MOD 519>,
133				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
134				 <&scif_clk>;
135			clock-names = "fck", "brg_int", "scif_clk";
136			dmas = <&dmac1 0x33>, <&dmac1 0x32>,
137			       <&dmac2 0x33>, <&dmac2 0x32>;
138			dma-names = "tx", "rx", "tx", "rx";
139			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
140			resets = <&cpg 519>;
141			status = "disabled";
142		};
143
144		hscif2: serial@e6560000 {
145			compatible = "renesas,hscif-r8a77980",
146				     "renesas,rcar-gen3-hscif",
147				     "renesas,hscif";
148			reg = <0 0xe6560000 0 0x60>;
149			interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
150			clocks = <&cpg CPG_MOD 518>,
151				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
152				 <&scif_clk>;
153			clock-names = "fck", "brg_int", "scif_clk";
154			dmas = <&dmac1 0x35>, <&dmac1 0x34>,
155			       <&dmac2 0x35>, <&dmac2 0x34>;
156			dma-names = "tx", "rx", "tx", "rx";
157			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
158			resets = <&cpg 518>;
159			status = "disabled";
160		};
161
162		hscif3: serial@e66a0000 {
163			compatible = "renesas,hscif-r8a77980",
164				     "renesas,rcar-gen3-hscif",
165				     "renesas,hscif";
166			reg = <0 0xe66a0000 0 0x60>;
167			interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
168			clocks = <&cpg CPG_MOD 517>,
169				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
170				 <&scif_clk>;
171			clock-names = "fck", "brg_int", "scif_clk";
172			dmas = <&dmac1 0x37>, <&dmac1 0x36>,
173			       <&dmac2 0x37>, <&dmac2 0x36>;
174			dma-names = "tx", "rx", "tx", "rx";
175			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
176			resets = <&cpg 517>;
177			status = "disabled";
178		};
179
180		canfd: can@e66c0000 {
181			compatible = "renesas,r8a77980-canfd",
182				     "renesas,rcar-gen3-canfd";
183			reg = <0 0xe66c0000 0 0x8000>;
184			interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
185				     <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
186			clocks = <&cpg CPG_MOD 914>,
187				 <&cpg CPG_CORE R8A77980_CLK_CANFD>,
188				 <&can_clk>;
189			clock-names = "fck", "canfd", "can_clk";
190			assigned-clocks = <&cpg CPG_CORE R8A77980_CLK_CANFD>;
191			assigned-clock-rates = <40000000>;
192			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
193			resets = <&cpg 914>;
194			status = "disabled";
195
196			channel0 {
197				status = "disabled";
198			};
199
200			channel1 {
201				status = "disabled";
202			};
203		};
204
205		avb: ethernet@e6800000 {
206			compatible = "renesas,etheravb-r8a77980",
207				     "renesas,etheravb-rcar-gen3";
208			reg = <0 0xe6800000 0 0x800>;
209			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
210				     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
211				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
212				     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
213				     <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
214				     <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
215				     <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
216				     <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
217				     <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
218				     <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
219				     <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
220				     <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
221				     <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
222				     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
223				     <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
224				     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
225				     <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
226				     <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
227				     <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
228				     <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
229				     <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
230				     <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
231				     <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
232				     <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
233				     <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
234			interrupt-names = "ch0", "ch1", "ch2", "ch3",
235					  "ch4", "ch5", "ch6", "ch7",
236					  "ch8", "ch9", "ch10", "ch11",
237					  "ch12", "ch13", "ch14", "ch15",
238					  "ch16", "ch17", "ch18", "ch19",
239					  "ch20", "ch21", "ch22", "ch23",
240					  "ch24";
241			clocks = <&cpg CPG_MOD 812>;
242			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
243			resets = <&cpg 812>;
244			phy-mode = "rgmii";
245			#address-cells = <1>;
246			#size-cells = <0>;
247			status = "disabled";
248		};
249
250		scif0: serial@e6e60000 {
251			compatible = "renesas,scif-r8a77980",
252				     "renesas,rcar-gen3-scif",
253				     "renesas,scif";
254			reg = <0 0xe6e60000 0 0x40>;
255			interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>;
256			clocks = <&cpg CPG_MOD 207>,
257				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
258				 <&scif_clk>;
259			clock-names = "fck", "brg_int", "scif_clk";
260			dmas = <&dmac1 0x51>, <&dmac1 0x50>,
261			       <&dmac2 0x51>, <&dmac2 0x50>;
262			dma-names = "tx", "rx", "tx", "rx";
263			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
264			resets = <&cpg 207>;
265			status = "disabled";
266		};
267
268		scif1: serial@e6e68000 {
269			compatible = "renesas,scif-r8a77980",
270				     "renesas,rcar-gen3-scif",
271				     "renesas,scif";
272			reg = <0 0xe6e68000 0 0x40>;
273			interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
274			clocks = <&cpg CPG_MOD 206>,
275				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
276				 <&scif_clk>;
277			clock-names = "fck", "brg_int", "scif_clk";
278			dmas = <&dmac1 0x53>, <&dmac1 0x52>,
279			       <&dmac2 0x53>, <&dmac2 0x52>;
280			dma-names = "tx", "rx", "tx", "rx";
281			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
282			resets = <&cpg 206>;
283			status = "disabled";
284		};
285
286		scif3: serial@e6c50000 {
287			compatible = "renesas,scif-r8a77980",
288				     "renesas,rcar-gen3-scif",
289				     "renesas,scif";
290			reg = <0 0xe6c50000 0 0x40>;
291			interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
292			clocks = <&cpg CPG_MOD 204>,
293				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
294				 <&scif_clk>;
295			clock-names = "fck", "brg_int", "scif_clk";
296			dmas = <&dmac1 0x57>, <&dmac1 0x56>,
297			       <&dmac2 0x57>, <&dmac2 0x56>;
298			dma-names = "tx", "rx", "tx", "rx";
299			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
300			resets = <&cpg 204>;
301			status = "disabled";
302		};
303
304		scif4: serial@e6c40000 {
305			compatible = "renesas,scif-r8a77980",
306				     "renesas,rcar-gen3-scif",
307				     "renesas,scif";
308			reg = <0 0xe6c40000 0 0x40>;
309			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
310			clocks = <&cpg CPG_MOD 203>,
311				 <&cpg CPG_CORE R8A77980_CLK_S3D1>,
312				 <&scif_clk>;
313			clock-names = "fck", "brg_int", "scif_clk";
314			dmas = <&dmac1 0x59>, <&dmac1 0x58>,
315			       <&dmac2 0x59>, <&dmac2 0x58>;
316			dma-names = "tx", "rx", "tx", "rx";
317			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
318			resets = <&cpg 203>;
319			status = "disabled";
320		};
321
322		dmac1: dma-controller@e7300000 {
323			compatible = "renesas,dmac-r8a77980",
324				     "renesas,rcar-dmac";
325			reg = <0 0xe7300000 0 0x10000>;
326			interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH
327				      GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH
328				      GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH
329				      GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH
330				      GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH
331				      GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH
332				      GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH
333				      GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH
334				      GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH
335				      GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH
336				      GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH
337				      GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH
338				      GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH
339				      GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH
340				      GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH
341				      GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH
342				      GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>;
343			interrupt-names = "error",
344					  "ch0", "ch1", "ch2", "ch3",
345					  "ch4", "ch5", "ch6", "ch7",
346					  "ch8", "ch9", "ch10", "ch11",
347					  "ch12", "ch13", "ch14", "ch15";
348			clocks = <&cpg CPG_MOD 218>;
349			clock-names = "fck";
350			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
351			resets = <&cpg 218>;
352			#dma-cells = <1>;
353			dma-channels = <16>;
354		};
355
356		dmac2: dma-controller@e7310000 {
357			compatible = "renesas,dmac-r8a77980",
358				     "renesas,rcar-dmac";
359			reg = <0 0xe7310000 0 0x10000>;
360			interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH
361				      GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH
362				      GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH
363				      GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH
364				      GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH
365				      GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH
366				      GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH
367				      GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH
368				      GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH
369				      GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH
370				      GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH
371				      GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH
372				      GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH
373				      GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH
374				      GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH
375				      GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH
376				      GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>;
377			interrupt-names = "error",
378					  "ch0", "ch1", "ch2", "ch3",
379					  "ch4", "ch5", "ch6", "ch7",
380					  "ch8", "ch9", "ch10", "ch11",
381					  "ch12", "ch13", "ch14", "ch15";
382			clocks = <&cpg CPG_MOD 217>;
383			clock-names = "fck";
384			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
385			resets = <&cpg 217>;
386			#dma-cells = <1>;
387			dma-channels = <16>;
388		};
389
390		mmc0: mmc@ee140000 {
391			compatible = "renesas,sdhi-r8a77980",
392				     "renesas,rcar-gen3-sdhi";
393			reg = <0 0xee140000 0 0x2000>;
394			interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
395			clocks = <&cpg CPG_MOD 314>;
396			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
397			resets = <&cpg 314>;
398			max-frequency = <200000000>;
399			status = "disabled";
400		};
401
402		gic: interrupt-controller@f1010000 {
403			compatible = "arm,gic-400";
404			#interrupt-cells = <3>;
405			#address-cells = <0>;
406			interrupt-controller;
407			reg = <0x0 0xf1010000 0 0x1000>,
408			      <0x0 0xf1020000 0 0x20000>,
409			      <0x0 0xf1040000 0 0x20000>,
410			      <0x0 0xf1060000 0 0x20000>;
411			interrupts = <GIC_PPI 9	(GIC_CPU_MASK_SIMPLE(1) |
412				      IRQ_TYPE_LEVEL_HIGH)>;
413			clocks = <&cpg CPG_MOD 408>;
414			clock-names = "clk";
415			power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
416			resets = <&cpg 408>;
417		};
418
419		prr: chipid@fff00044 {
420			compatible = "renesas,prr";
421			reg = <0 0xfff00044 0 4>;
422		};
423	};
424
425	timer {
426		compatible = "arm,armv8-timer";
427		interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) |
428				       IRQ_TYPE_LEVEL_LOW)>,
429				      <&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) |
430				       IRQ_TYPE_LEVEL_LOW)>,
431				      <&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) |
432				       IRQ_TYPE_LEVEL_LOW)>,
433				      <&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) |
434				       IRQ_TYPE_LEVEL_LOW)>;
435	};
436};
437