xref: /linux/arch/arm64/boot/dts/renesas/r8a774a1.dtsi (revision 37a61e4d9f9486bfccd699bb1d52ebbea0019ac4)
190493b09SBiju Das// SPDX-License-Identifier: GPL-2.0
290493b09SBiju Das/*
390493b09SBiju Das * Device Tree Source for the r8a774a1 SoC
490493b09SBiju Das *
590493b09SBiju Das * Copyright (C) 2018 Renesas Electronics Corp.
690493b09SBiju Das */
790493b09SBiju Das
890493b09SBiju Das#include <dt-bindings/interrupt-controller/irq.h>
990493b09SBiju Das#include <dt-bindings/interrupt-controller/arm-gic.h>
1090493b09SBiju Das#include <dt-bindings/clock/renesas-cpg-mssr.h>
1190493b09SBiju Das
1290493b09SBiju Das/ {
1390493b09SBiju Das	compatible = "renesas,r8a774a1";
1490493b09SBiju Das	#address-cells = <2>;
1590493b09SBiju Das	#size-cells = <2>;
1690493b09SBiju Das
1790493b09SBiju Das	/*
1890493b09SBiju Das	 * The external audio clocks are configured as 0 Hz fixed frequency
1990493b09SBiju Das	 * clocks by default.
2090493b09SBiju Das	 * Boards that provide audio clocks should override them.
2190493b09SBiju Das	 */
2290493b09SBiju Das	audio_clk_a: audio_clk_a {
2390493b09SBiju Das		compatible = "fixed-clock";
2490493b09SBiju Das		#clock-cells = <0>;
2590493b09SBiju Das		clock-frequency = <0>;
2690493b09SBiju Das	};
2790493b09SBiju Das
2890493b09SBiju Das	audio_clk_b: audio_clk_b {
2990493b09SBiju Das		compatible = "fixed-clock";
3090493b09SBiju Das		#clock-cells = <0>;
3190493b09SBiju Das		clock-frequency = <0>;
3290493b09SBiju Das	};
3390493b09SBiju Das
3490493b09SBiju Das	audio_clk_c: audio_clk_c {
3590493b09SBiju Das		compatible = "fixed-clock";
3690493b09SBiju Das		#clock-cells = <0>;
3790493b09SBiju Das		clock-frequency = <0>;
3890493b09SBiju Das	};
3990493b09SBiju Das
4090493b09SBiju Das	/* External CAN clock - to be overridden by boards that provide it */
4190493b09SBiju Das	can_clk: can {
4290493b09SBiju Das		compatible = "fixed-clock";
4390493b09SBiju Das		#clock-cells = <0>;
4490493b09SBiju Das		clock-frequency = <0>;
4590493b09SBiju Das	};
4690493b09SBiju Das
4790493b09SBiju Das	cpus {
4890493b09SBiju Das		#address-cells = <1>;
4990493b09SBiju Das		#size-cells = <0>;
5090493b09SBiju Das
5190493b09SBiju Das		a57_0: cpu@0 {
5290493b09SBiju Das			compatible = "arm,cortex-a57", "arm,armv8";
5390493b09SBiju Das			reg = <0x0>;
5490493b09SBiju Das			device_type = "cpu";
5590493b09SBiju Das			power-domains = <&sysc 0>;
5690493b09SBiju Das			next-level-cache = <&L2_CA57>;
5790493b09SBiju Das			enable-method = "psci";
5890493b09SBiju Das			clocks =<&cpg CPG_CORE 0>;
5990493b09SBiju Das		};
6090493b09SBiju Das
6190493b09SBiju Das		a57_1: cpu@1 {
6290493b09SBiju Das			compatible = "arm,cortex-a57", "arm,armv8";
6390493b09SBiju Das			reg = <0x1>;
6490493b09SBiju Das			device_type = "cpu";
6590493b09SBiju Das			power-domains = <&sysc 1>;
6690493b09SBiju Das			next-level-cache = <&L2_CA57>;
6790493b09SBiju Das			enable-method = "psci";
6890493b09SBiju Das			clocks =<&cpg CPG_CORE 0>;
6990493b09SBiju Das		};
7090493b09SBiju Das
7190493b09SBiju Das		L2_CA57: cache-controller-0 {
7290493b09SBiju Das			compatible = "cache";
7390493b09SBiju Das			power-domains = <&sysc 12>;
7490493b09SBiju Das			cache-unified;
7590493b09SBiju Das			cache-level = <2>;
7690493b09SBiju Das		};
7790493b09SBiju Das	};
7890493b09SBiju Das
7990493b09SBiju Das	extal_clk: extal {
8090493b09SBiju Das		compatible = "fixed-clock";
8190493b09SBiju Das		#clock-cells = <0>;
8290493b09SBiju Das		/* This value must be overridden by the board */
8390493b09SBiju Das		clock-frequency = <0>;
8490493b09SBiju Das	};
8590493b09SBiju Das
8690493b09SBiju Das	extalr_clk: extalr {
8790493b09SBiju Das		compatible = "fixed-clock";
8890493b09SBiju Das		#clock-cells = <0>;
8990493b09SBiju Das		/* This value must be overridden by the board */
9090493b09SBiju Das		clock-frequency = <0>;
9190493b09SBiju Das	};
9290493b09SBiju Das
9390493b09SBiju Das	/* External PCIe clock - can be overridden by the board */
9490493b09SBiju Das	pcie_bus_clk: pcie_bus {
9590493b09SBiju Das		compatible = "fixed-clock";
9690493b09SBiju Das		#clock-cells = <0>;
9790493b09SBiju Das		clock-frequency = <0>;
9890493b09SBiju Das	};
9990493b09SBiju Das
10090493b09SBiju Das	pmu_a57 {
10190493b09SBiju Das		compatible = "arm,cortex-a57-pmu";
10290493b09SBiju Das		interrupts-extended = <&gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
10390493b09SBiju Das				      <&gic GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
10490493b09SBiju Das		interrupt-affinity = <&a57_0>, <&a57_1>;
10590493b09SBiju Das	};
10690493b09SBiju Das
10790493b09SBiju Das	psci {
10890493b09SBiju Das		compatible = "arm,psci-1.0", "arm,psci-0.2";
10990493b09SBiju Das		method = "smc";
11090493b09SBiju Das	};
11190493b09SBiju Das
11290493b09SBiju Das	/* External SCIF clock - to be overridden by boards that provide it */
11390493b09SBiju Das	scif_clk: scif {
11490493b09SBiju Das		compatible = "fixed-clock";
11590493b09SBiju Das		#clock-cells = <0>;
11690493b09SBiju Das		clock-frequency = <0>;
11790493b09SBiju Das	};
11890493b09SBiju Das
11990493b09SBiju Das	soc {
12090493b09SBiju Das		compatible = "simple-bus";
12190493b09SBiju Das		interrupt-parent = <&gic>;
12290493b09SBiju Das		#address-cells = <2>;
12390493b09SBiju Das		#size-cells = <2>;
12490493b09SBiju Das		ranges;
12590493b09SBiju Das
12690493b09SBiju Das		cpg: clock-controller@e6150000 {
12790493b09SBiju Das			compatible = "renesas,r8a774a1-cpg-mssr";
12890493b09SBiju Das			reg = <0 0xe6150000 0 0x0bb0>;
12990493b09SBiju Das			clocks = <&extal_clk>, <&extalr_clk>;
13090493b09SBiju Das			clock-names = "extal", "extalr";
13190493b09SBiju Das			#clock-cells = <2>;
13290493b09SBiju Das			#power-domain-cells = <0>;
13390493b09SBiju Das			#reset-cells = <1>;
13490493b09SBiju Das		};
13590493b09SBiju Das
13690493b09SBiju Das		rst: reset-controller@e6160000 {
13790493b09SBiju Das			compatible = "renesas,r8a774a1-rst";
13890493b09SBiju Das			reg = <0 0xe6160000 0 0x018c>;
13990493b09SBiju Das		};
14090493b09SBiju Das
14190493b09SBiju Das		sysc: system-controller@e6180000 {
14290493b09SBiju Das			compatible = "renesas,r8a774a1-sysc";
14390493b09SBiju Das			reg = <0 0xe6180000 0 0x0400>;
14490493b09SBiju Das			#power-domain-cells = <1>;
14590493b09SBiju Das		};
14690493b09SBiju Das
147*37a61e4dSBiju Das		dmac0: dma-controller@e6700000 {
148*37a61e4dSBiju Das			compatible = "renesas,dmac-r8a774a1",
149*37a61e4dSBiju Das				     "renesas,rcar-dmac";
150*37a61e4dSBiju Das			reg = <0 0xe6700000 0 0x10000>;
151*37a61e4dSBiju Das			interrupts = <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH
152*37a61e4dSBiju Das				      GIC_SPI 200 IRQ_TYPE_LEVEL_HIGH
153*37a61e4dSBiju Das				      GIC_SPI 201 IRQ_TYPE_LEVEL_HIGH
154*37a61e4dSBiju Das				      GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH
155*37a61e4dSBiju Das				      GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH
156*37a61e4dSBiju Das				      GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH
157*37a61e4dSBiju Das				      GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH
158*37a61e4dSBiju Das				      GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH
159*37a61e4dSBiju Das				      GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH
160*37a61e4dSBiju Das				      GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH
161*37a61e4dSBiju Das				      GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH
162*37a61e4dSBiju Das				      GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH
163*37a61e4dSBiju Das				      GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH
164*37a61e4dSBiju Das				      GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH
165*37a61e4dSBiju Das				      GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH
166*37a61e4dSBiju Das				      GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH
167*37a61e4dSBiju Das				      GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
168*37a61e4dSBiju Das			interrupt-names = "error",
169*37a61e4dSBiju Das					"ch0", "ch1", "ch2", "ch3",
170*37a61e4dSBiju Das					"ch4", "ch5", "ch6", "ch7",
171*37a61e4dSBiju Das					"ch8", "ch9", "ch10", "ch11",
172*37a61e4dSBiju Das					"ch12", "ch13", "ch14", "ch15";
173*37a61e4dSBiju Das			clocks = <&cpg CPG_MOD 219>;
174*37a61e4dSBiju Das			clock-names = "fck";
175*37a61e4dSBiju Das			power-domains = <&sysc 32>;
176*37a61e4dSBiju Das			resets = <&cpg 219>;
177*37a61e4dSBiju Das			#dma-cells = <1>;
178*37a61e4dSBiju Das			dma-channels = <16>;
179*37a61e4dSBiju Das		};
180*37a61e4dSBiju Das
181*37a61e4dSBiju Das		dmac1: dma-controller@e7300000 {
182*37a61e4dSBiju Das			compatible = "renesas,dmac-r8a774a1",
183*37a61e4dSBiju Das				     "renesas,rcar-dmac";
184*37a61e4dSBiju Das			reg = <0 0xe7300000 0 0x10000>;
185*37a61e4dSBiju Das			interrupts = <GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH
186*37a61e4dSBiju Das				      GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH
187*37a61e4dSBiju Das				      GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH
188*37a61e4dSBiju Das				      GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH
189*37a61e4dSBiju Das				      GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH
190*37a61e4dSBiju Das				      GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH
191*37a61e4dSBiju Das				      GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH
192*37a61e4dSBiju Das				      GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH
193*37a61e4dSBiju Das				      GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH
194*37a61e4dSBiju Das				      GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH
195*37a61e4dSBiju Das				      GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH
196*37a61e4dSBiju Das				      GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH
197*37a61e4dSBiju Das				      GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH
198*37a61e4dSBiju Das				      GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH
199*37a61e4dSBiju Das				      GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH
200*37a61e4dSBiju Das				      GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH
201*37a61e4dSBiju Das				      GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>;
202*37a61e4dSBiju Das			interrupt-names = "error",
203*37a61e4dSBiju Das					"ch0", "ch1", "ch2", "ch3",
204*37a61e4dSBiju Das					"ch4", "ch5", "ch6", "ch7",
205*37a61e4dSBiju Das					"ch8", "ch9", "ch10", "ch11",
206*37a61e4dSBiju Das					"ch12", "ch13", "ch14", "ch15";
207*37a61e4dSBiju Das			clocks = <&cpg CPG_MOD 218>;
208*37a61e4dSBiju Das			clock-names = "fck";
209*37a61e4dSBiju Das			power-domains = <&sysc 32>;
210*37a61e4dSBiju Das			resets = <&cpg 218>;
211*37a61e4dSBiju Das			#dma-cells = <1>;
212*37a61e4dSBiju Das			dma-channels = <16>;
213*37a61e4dSBiju Das		};
214*37a61e4dSBiju Das
215*37a61e4dSBiju Das		dmac2: dma-controller@e7310000 {
216*37a61e4dSBiju Das			compatible = "renesas,dmac-r8a774a1",
217*37a61e4dSBiju Das				     "renesas,rcar-dmac";
218*37a61e4dSBiju Das			reg = <0 0xe7310000 0 0x10000>;
219*37a61e4dSBiju Das			interrupts = <GIC_SPI 416 IRQ_TYPE_LEVEL_HIGH
220*37a61e4dSBiju Das				      GIC_SPI 417 IRQ_TYPE_LEVEL_HIGH
221*37a61e4dSBiju Das				      GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH
222*37a61e4dSBiju Das				      GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH
223*37a61e4dSBiju Das				      GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH
224*37a61e4dSBiju Das				      GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH
225*37a61e4dSBiju Das				      GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH
226*37a61e4dSBiju Das				      GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH
227*37a61e4dSBiju Das				      GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH
228*37a61e4dSBiju Das				      GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH
229*37a61e4dSBiju Das				      GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH
230*37a61e4dSBiju Das				      GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH
231*37a61e4dSBiju Das				      GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH
232*37a61e4dSBiju Das				      GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH
233*37a61e4dSBiju Das				      GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH
234*37a61e4dSBiju Das				      GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH
235*37a61e4dSBiju Das				      GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>;
236*37a61e4dSBiju Das			interrupt-names = "error",
237*37a61e4dSBiju Das					"ch0", "ch1", "ch2", "ch3",
238*37a61e4dSBiju Das					"ch4", "ch5", "ch6", "ch7",
239*37a61e4dSBiju Das					"ch8", "ch9", "ch10", "ch11",
240*37a61e4dSBiju Das					"ch12", "ch13", "ch14", "ch15";
241*37a61e4dSBiju Das			clocks = <&cpg CPG_MOD 217>;
242*37a61e4dSBiju Das			clock-names = "fck";
243*37a61e4dSBiju Das			power-domains = <&sysc 32>;
244*37a61e4dSBiju Das			resets = <&cpg 217>;
245*37a61e4dSBiju Das			#dma-cells = <1>;
246*37a61e4dSBiju Das			dma-channels = <16>;
247*37a61e4dSBiju Das		};
248*37a61e4dSBiju Das
24990493b09SBiju Das		gic: interrupt-controller@f1010000 {
25090493b09SBiju Das			compatible = "arm,gic-400";
25190493b09SBiju Das			#interrupt-cells = <3>;
25290493b09SBiju Das			#address-cells = <0>;
25390493b09SBiju Das			interrupt-controller;
25490493b09SBiju Das			reg = <0x0 0xf1010000 0 0x1000>,
25590493b09SBiju Das			      <0x0 0xf1020000 0 0x20000>,
25690493b09SBiju Das			      <0x0 0xf1040000 0 0x20000>,
25790493b09SBiju Das			      <0x0 0xf1060000 0 0x20000>;
25890493b09SBiju Das			interrupts = <GIC_PPI 9
25990493b09SBiju Das					(GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
26090493b09SBiju Das			clocks = <&cpg CPG_MOD 408>;
26190493b09SBiju Das			clock-names = "clk";
26290493b09SBiju Das			power-domains = <&sysc 32>;
26390493b09SBiju Das			resets = <&cpg 408>;
26490493b09SBiju Das		};
26590493b09SBiju Das
26690493b09SBiju Das		prr: chipid@fff00044 {
26790493b09SBiju Das			compatible = "renesas,prr";
26890493b09SBiju Das			reg = <0 0xfff00044 0 4>;
26990493b09SBiju Das		};
27090493b09SBiju Das	};
27190493b09SBiju Das
27290493b09SBiju Das	timer {
27390493b09SBiju Das		compatible = "arm,armv8-timer";
27490493b09SBiju Das		interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
27590493b09SBiju Das				      <&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
27690493b09SBiju Das				      <&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
27790493b09SBiju Das				      <&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
27890493b09SBiju Das	};
27990493b09SBiju Das
28090493b09SBiju Das	/* External USB clocks - can be overridden by the board */
28190493b09SBiju Das	usb3s0_clk: usb3s0 {
28290493b09SBiju Das		compatible = "fixed-clock";
28390493b09SBiju Das		#clock-cells = <0>;
28490493b09SBiju Das		clock-frequency = <0>;
28590493b09SBiju Das	};
28690493b09SBiju Das
28790493b09SBiju Das	usb_extal_clk: usb_extal {
28890493b09SBiju Das		compatible = "fixed-clock";
28990493b09SBiju Das		#clock-cells = <0>;
29090493b09SBiju Das		clock-frequency = <0>;
29190493b09SBiju Das	};
29290493b09SBiju Das};
293