1// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2/*
3 * Device Tree Source for the RZ/G2UL SoC
4 *
5 * Copyright (C) 2022 Renesas Electronics Corp.
6 */
7
8#include <dt-bindings/interrupt-controller/arm-gic.h>
9
10#define SOC_PERIPHERAL_IRQ(nr)		GIC_SPI nr
11
12#include "r9a07g043.dtsi"
13
14/ {
15	cpus {
16		#address-cells = <1>;
17		#size-cells = <0>;
18
19		cpu0: cpu@0 {
20			compatible = "arm,cortex-a55";
21			reg = <0>;
22			device_type = "cpu";
23			#cooling-cells = <2>;
24			next-level-cache = <&L3_CA55>;
25			enable-method = "psci";
26			clocks = <&cpg CPG_CORE R9A07G043_CLK_I>;
27			operating-points-v2 = <&cluster0_opp>;
28		};
29
30		L3_CA55: cache-controller-0 {
31			compatible = "cache";
32			cache-unified;
33			cache-size = <0x40000>;
34			cache-level = <3>;
35		};
36	};
37
38	pmu {
39		compatible = "arm,cortex-a55-pmu";
40		interrupts-extended = <&gic GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
41	};
42
43	psci {
44		compatible = "arm,psci-1.0", "arm,psci-0.2";
45		method = "smc";
46	};
47
48	timer {
49		compatible = "arm,armv8-timer";
50		interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
51				      <&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
52				      <&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
53				      <&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
54				      <&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
55		interrupt-names = "sec-phys", "phys", "virt", "hyp-phys",
56				  "hyp-virt";
57	};
58};
59
60&soc {
61	interrupt-parent = <&gic>;
62
63	cru: video@10830000 {
64		compatible = "renesas,r9a07g043-cru", "renesas,rzg2l-cru";
65		reg = <0 0x10830000 0 0x400>;
66		clocks = <&cpg CPG_MOD R9A07G043_CRU_VCLK>,
67			 <&cpg CPG_MOD R9A07G043_CRU_PCLK>,
68			 <&cpg CPG_MOD R9A07G043_CRU_ACLK>;
69		clock-names = "video", "apb", "axi";
70		interrupts = <SOC_PERIPHERAL_IRQ(167) IRQ_TYPE_LEVEL_HIGH>,
71			     <SOC_PERIPHERAL_IRQ(168) IRQ_TYPE_LEVEL_HIGH>,
72			     <SOC_PERIPHERAL_IRQ(169) IRQ_TYPE_LEVEL_HIGH>;
73		interrupt-names = "image_conv", "image_conv_err", "axi_mst_err";
74		resets = <&cpg R9A07G043_CRU_PRESETN>,
75			 <&cpg R9A07G043_CRU_ARESETN>;
76		reset-names = "presetn", "aresetn";
77		power-domains = <&cpg>;
78		status = "disabled";
79
80		ports {
81			#address-cells = <1>;
82			#size-cells = <0>;
83
84			port@1 {
85				#address-cells = <1>;
86				#size-cells = <0>;
87
88				reg = <1>;
89				crucsi2: endpoint@0 {
90					reg = <0>;
91					remote-endpoint = <&csi2cru>;
92				};
93			};
94		};
95	};
96
97	csi2: csi2@10830400 {
98		compatible = "renesas,r9a07g043-csi2", "renesas,rzg2l-csi2";
99		reg = <0 0x10830400 0 0xfc00>;
100		interrupts = <SOC_PERIPHERAL_IRQ(166) IRQ_TYPE_LEVEL_HIGH>;
101		clocks = <&cpg CPG_MOD R9A07G043_CRU_SYSCLK>,
102			 <&cpg CPG_MOD R9A07G043_CRU_VCLK>,
103			 <&cpg CPG_MOD R9A07G043_CRU_PCLK>;
104		clock-names = "system", "video", "apb";
105		resets = <&cpg R9A07G043_CRU_PRESETN>,
106			 <&cpg R9A07G043_CRU_CMN_RSTB>;
107		reset-names = "presetn", "cmn-rstb";
108		power-domains = <&cpg>;
109		status = "disabled";
110
111		ports {
112			#address-cells = <1>;
113			#size-cells = <0>;
114
115			port@0 {
116				reg = <0>;
117			};
118
119			port@1 {
120				#address-cells = <1>;
121				#size-cells = <0>;
122				reg = <1>;
123
124				csi2cru: endpoint@0 {
125					reg = <0>;
126					remote-endpoint = <&crucsi2>;
127				};
128			};
129		};
130	};
131
132	vspd: vsp@10870000 {
133		compatible = "renesas,r9a07g043u-vsp2", "renesas,r9a07g044-vsp2";
134		reg = <0 0x10870000 0 0x10000>;
135		interrupts = <SOC_PERIPHERAL_IRQ(149) IRQ_TYPE_LEVEL_HIGH>;
136		clocks = <&cpg CPG_MOD R9A07G043_LCDC_CLK_A>,
137			 <&cpg CPG_MOD R9A07G043_LCDC_CLK_P>,
138			 <&cpg CPG_MOD R9A07G043_LCDC_CLK_D>;
139		clock-names = "aclk", "pclk", "vclk";
140		power-domains = <&cpg>;
141		resets = <&cpg R9A07G043_LCDC_RESET_N>;
142		renesas,fcp = <&fcpvd>;
143	};
144
145	fcpvd: fcp@10880000 {
146		compatible = "renesas,r9a07g043u-fcpvd", "renesas,fcpv";
147		reg = <0 0x10880000 0 0x10000>;
148		clocks = <&cpg CPG_MOD R9A07G043_LCDC_CLK_A>,
149			 <&cpg CPG_MOD R9A07G043_LCDC_CLK_P>,
150			 <&cpg CPG_MOD R9A07G043_LCDC_CLK_D>;
151		clock-names = "aclk", "pclk", "vclk";
152		power-domains = <&cpg>;
153		resets = <&cpg R9A07G043_LCDC_RESET_N>;
154	};
155
156	du: display@10890000 {
157		compatible = "renesas,r9a07g043u-du";
158		reg = <0 0x10890000 0 0x10000>;
159		interrupts = <SOC_PERIPHERAL_IRQ(152) IRQ_TYPE_LEVEL_HIGH>;
160		clocks = <&cpg CPG_MOD R9A07G043_LCDC_CLK_A>,
161			 <&cpg CPG_MOD R9A07G043_LCDC_CLK_P>,
162			 <&cpg CPG_MOD R9A07G043_LCDC_CLK_D>;
163		clock-names = "aclk", "pclk", "vclk";
164		power-domains = <&cpg>;
165		resets = <&cpg R9A07G043_LCDC_RESET_N>;
166		renesas,vsps = <&vspd 0>;
167		status = "disabled";
168
169		ports {
170			#address-cells = <1>;
171			#size-cells = <0>;
172
173			port@0 {
174				reg = <0>;
175				du_out_rgb: endpoint {
176				};
177			};
178		};
179	};
180
181	irqc: interrupt-controller@110a0000 {
182		compatible = "renesas,r9a07g043u-irqc",
183			     "renesas,rzg2l-irqc";
184		reg = <0 0x110a0000 0 0x10000>;
185		#interrupt-cells = <2>;
186		#address-cells = <0>;
187		interrupt-controller;
188		interrupts = <SOC_PERIPHERAL_IRQ(0) IRQ_TYPE_LEVEL_HIGH>,
189			     <SOC_PERIPHERAL_IRQ(1) IRQ_TYPE_LEVEL_HIGH>,
190			     <SOC_PERIPHERAL_IRQ(2) IRQ_TYPE_LEVEL_HIGH>,
191			     <SOC_PERIPHERAL_IRQ(3) IRQ_TYPE_LEVEL_HIGH>,
192			     <SOC_PERIPHERAL_IRQ(4) IRQ_TYPE_LEVEL_HIGH>,
193			     <SOC_PERIPHERAL_IRQ(5) IRQ_TYPE_LEVEL_HIGH>,
194			     <SOC_PERIPHERAL_IRQ(6) IRQ_TYPE_LEVEL_HIGH>,
195			     <SOC_PERIPHERAL_IRQ(7) IRQ_TYPE_LEVEL_HIGH>,
196			     <SOC_PERIPHERAL_IRQ(8) IRQ_TYPE_LEVEL_HIGH>,
197			     <SOC_PERIPHERAL_IRQ(444) IRQ_TYPE_LEVEL_HIGH>,
198			     <SOC_PERIPHERAL_IRQ(445) IRQ_TYPE_LEVEL_HIGH>,
199			     <SOC_PERIPHERAL_IRQ(446) IRQ_TYPE_LEVEL_HIGH>,
200			     <SOC_PERIPHERAL_IRQ(447) IRQ_TYPE_LEVEL_HIGH>,
201			     <SOC_PERIPHERAL_IRQ(448) IRQ_TYPE_LEVEL_HIGH>,
202			     <SOC_PERIPHERAL_IRQ(449) IRQ_TYPE_LEVEL_HIGH>,
203			     <SOC_PERIPHERAL_IRQ(450) IRQ_TYPE_LEVEL_HIGH>,
204			     <SOC_PERIPHERAL_IRQ(451) IRQ_TYPE_LEVEL_HIGH>,
205			     <SOC_PERIPHERAL_IRQ(452) IRQ_TYPE_LEVEL_HIGH>,
206			     <SOC_PERIPHERAL_IRQ(453) IRQ_TYPE_LEVEL_HIGH>,
207			     <SOC_PERIPHERAL_IRQ(454) IRQ_TYPE_LEVEL_HIGH>,
208			     <SOC_PERIPHERAL_IRQ(455) IRQ_TYPE_LEVEL_HIGH>,
209			     <SOC_PERIPHERAL_IRQ(456) IRQ_TYPE_LEVEL_HIGH>,
210			     <SOC_PERIPHERAL_IRQ(457) IRQ_TYPE_LEVEL_HIGH>,
211			     <SOC_PERIPHERAL_IRQ(458) IRQ_TYPE_LEVEL_HIGH>,
212			     <SOC_PERIPHERAL_IRQ(459) IRQ_TYPE_LEVEL_HIGH>,
213			     <SOC_PERIPHERAL_IRQ(460) IRQ_TYPE_LEVEL_HIGH>,
214			     <SOC_PERIPHERAL_IRQ(461) IRQ_TYPE_LEVEL_HIGH>,
215			     <SOC_PERIPHERAL_IRQ(462) IRQ_TYPE_LEVEL_HIGH>,
216			     <SOC_PERIPHERAL_IRQ(463) IRQ_TYPE_LEVEL_HIGH>,
217			     <SOC_PERIPHERAL_IRQ(464) IRQ_TYPE_LEVEL_HIGH>,
218			     <SOC_PERIPHERAL_IRQ(465) IRQ_TYPE_LEVEL_HIGH>,
219			     <SOC_PERIPHERAL_IRQ(466) IRQ_TYPE_LEVEL_HIGH>,
220			     <SOC_PERIPHERAL_IRQ(467) IRQ_TYPE_LEVEL_HIGH>,
221			     <SOC_PERIPHERAL_IRQ(468) IRQ_TYPE_LEVEL_HIGH>,
222			     <SOC_PERIPHERAL_IRQ(469) IRQ_TYPE_LEVEL_HIGH>,
223			     <SOC_PERIPHERAL_IRQ(470) IRQ_TYPE_LEVEL_HIGH>,
224			     <SOC_PERIPHERAL_IRQ(471) IRQ_TYPE_LEVEL_HIGH>,
225			     <SOC_PERIPHERAL_IRQ(472) IRQ_TYPE_LEVEL_HIGH>,
226			     <SOC_PERIPHERAL_IRQ(473) IRQ_TYPE_LEVEL_HIGH>,
227			     <SOC_PERIPHERAL_IRQ(474) IRQ_TYPE_LEVEL_HIGH>,
228			     <SOC_PERIPHERAL_IRQ(475) IRQ_TYPE_LEVEL_HIGH>,
229			     <SOC_PERIPHERAL_IRQ(25) IRQ_TYPE_EDGE_RISING>,
230			     <SOC_PERIPHERAL_IRQ(34) IRQ_TYPE_EDGE_RISING>,
231			     <SOC_PERIPHERAL_IRQ(35) IRQ_TYPE_EDGE_RISING>,
232			     <SOC_PERIPHERAL_IRQ(36) IRQ_TYPE_EDGE_RISING>,
233			     <SOC_PERIPHERAL_IRQ(37) IRQ_TYPE_EDGE_RISING>,
234			     <SOC_PERIPHERAL_IRQ(38) IRQ_TYPE_EDGE_RISING>,
235			     <SOC_PERIPHERAL_IRQ(39) IRQ_TYPE_EDGE_RISING>;
236		interrupt-names = "nmi",
237				  "irq0", "irq1", "irq2", "irq3",
238				  "irq4", "irq5", "irq6", "irq7",
239				  "tint0", "tint1", "tint2", "tint3",
240				  "tint4", "tint5", "tint6", "tint7",
241				  "tint8", "tint9", "tint10", "tint11",
242				  "tint12", "tint13", "tint14", "tint15",
243				  "tint16", "tint17", "tint18", "tint19",
244				  "tint20", "tint21", "tint22", "tint23",
245				  "tint24", "tint25", "tint26", "tint27",
246				  "tint28", "tint29", "tint30", "tint31",
247				  "bus-err", "ec7tie1-0", "ec7tie2-0",
248				  "ec7tiovf-0", "ec7tie1-1", "ec7tie2-1",
249				  "ec7tiovf-1";
250		clocks = <&cpg CPG_MOD R9A07G043_IA55_CLK>,
251			<&cpg CPG_MOD R9A07G043_IA55_PCLK>;
252		clock-names = "clk", "pclk";
253		power-domains = <&cpg>;
254		resets = <&cpg R9A07G043_IA55_RESETN>;
255	};
256
257	gic: interrupt-controller@11900000 {
258		compatible = "arm,gic-v3";
259		#interrupt-cells = <3>;
260		#address-cells = <0>;
261		interrupt-controller;
262		reg = <0x0 0x11900000 0 0x20000>,
263		      <0x0 0x11940000 0 0x40000>;
264		interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
265	};
266};
267
268&sysc {
269	interrupts = <SOC_PERIPHERAL_IRQ(42) IRQ_TYPE_LEVEL_HIGH>,
270		     <SOC_PERIPHERAL_IRQ(43) IRQ_TYPE_LEVEL_HIGH>,
271		     <SOC_PERIPHERAL_IRQ(44) IRQ_TYPE_LEVEL_HIGH>,
272		     <SOC_PERIPHERAL_IRQ(45) IRQ_TYPE_LEVEL_HIGH>;
273	interrupt-names = "lpm_int", "ca55stbydone_int",
274			  "cm33stbyr_int", "ca55_deny";
275};
276