xref: /freebsd-src/sys/contrib/device-tree/src/arm/airoha/en7523.dtsi (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1*f126890aSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*f126890aSEmmanuel Vadot
3*f126890aSEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h>
4*f126890aSEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
5*f126890aSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
6*f126890aSEmmanuel Vadot#include <dt-bindings/clock/en7523-clk.h>
7*f126890aSEmmanuel Vadot
8*f126890aSEmmanuel Vadot/ {
9*f126890aSEmmanuel Vadot	interrupt-parent = <&gic>;
10*f126890aSEmmanuel Vadot	#address-cells = <1>;
11*f126890aSEmmanuel Vadot	#size-cells = <1>;
12*f126890aSEmmanuel Vadot
13*f126890aSEmmanuel Vadot	reserved-memory {
14*f126890aSEmmanuel Vadot		#address-cells = <1>;
15*f126890aSEmmanuel Vadot		#size-cells = <1>;
16*f126890aSEmmanuel Vadot		ranges;
17*f126890aSEmmanuel Vadot
18*f126890aSEmmanuel Vadot		npu_binary@84000000 {
19*f126890aSEmmanuel Vadot			no-map;
20*f126890aSEmmanuel Vadot			reg = <0x84000000 0xA00000>;
21*f126890aSEmmanuel Vadot		};
22*f126890aSEmmanuel Vadot
23*f126890aSEmmanuel Vadot		npu_flag@84B0000 {
24*f126890aSEmmanuel Vadot			no-map;
25*f126890aSEmmanuel Vadot			reg = <0x84B00000 0x100000>;
26*f126890aSEmmanuel Vadot		};
27*f126890aSEmmanuel Vadot
28*f126890aSEmmanuel Vadot		npu_pkt@85000000 {
29*f126890aSEmmanuel Vadot			no-map;
30*f126890aSEmmanuel Vadot			reg = <0x85000000 0x1A00000>;
31*f126890aSEmmanuel Vadot		};
32*f126890aSEmmanuel Vadot
33*f126890aSEmmanuel Vadot		npu_phyaddr@86B00000 {
34*f126890aSEmmanuel Vadot			no-map;
35*f126890aSEmmanuel Vadot			reg = <0x86B00000 0x100000>;
36*f126890aSEmmanuel Vadot		};
37*f126890aSEmmanuel Vadot
38*f126890aSEmmanuel Vadot		npu_rxdesc@86D00000 {
39*f126890aSEmmanuel Vadot			no-map;
40*f126890aSEmmanuel Vadot			reg = <0x86D00000 0x100000>;
41*f126890aSEmmanuel Vadot		};
42*f126890aSEmmanuel Vadot	};
43*f126890aSEmmanuel Vadot
44*f126890aSEmmanuel Vadot	psci {
45*f126890aSEmmanuel Vadot		compatible = "arm,psci-0.2";
46*f126890aSEmmanuel Vadot		method = "smc";
47*f126890aSEmmanuel Vadot	};
48*f126890aSEmmanuel Vadot
49*f126890aSEmmanuel Vadot	cpus {
50*f126890aSEmmanuel Vadot		#address-cells = <1>;
51*f126890aSEmmanuel Vadot		#size-cells = <0>;
52*f126890aSEmmanuel Vadot
53*f126890aSEmmanuel Vadot		cpu-map {
54*f126890aSEmmanuel Vadot			cluster0 {
55*f126890aSEmmanuel Vadot				core0 {
56*f126890aSEmmanuel Vadot					cpu = <&cpu0>;
57*f126890aSEmmanuel Vadot				};
58*f126890aSEmmanuel Vadot				core1 {
59*f126890aSEmmanuel Vadot					cpu = <&cpu1>;
60*f126890aSEmmanuel Vadot				};
61*f126890aSEmmanuel Vadot			};
62*f126890aSEmmanuel Vadot		};
63*f126890aSEmmanuel Vadot
64*f126890aSEmmanuel Vadot		cpu0: cpu@0 {
65*f126890aSEmmanuel Vadot			device_type = "cpu";
66*f126890aSEmmanuel Vadot			compatible = "arm,cortex-a53";
67*f126890aSEmmanuel Vadot			reg = <0x0>;
68*f126890aSEmmanuel Vadot			enable-method = "psci";
69*f126890aSEmmanuel Vadot			clock-frequency = <80000000>;
70*f126890aSEmmanuel Vadot			next-level-cache = <&L2_0>;
71*f126890aSEmmanuel Vadot		};
72*f126890aSEmmanuel Vadot
73*f126890aSEmmanuel Vadot		cpu1: cpu@1 {
74*f126890aSEmmanuel Vadot			device_type = "cpu";
75*f126890aSEmmanuel Vadot			compatible = "arm,cortex-a53";
76*f126890aSEmmanuel Vadot			reg = <0x1>;
77*f126890aSEmmanuel Vadot			enable-method = "psci";
78*f126890aSEmmanuel Vadot			clock-frequency = <80000000>;
79*f126890aSEmmanuel Vadot			next-level-cache = <&L2_0>;
80*f126890aSEmmanuel Vadot		};
81*f126890aSEmmanuel Vadot
82*f126890aSEmmanuel Vadot		L2_0: l2-cache0 {
83*f126890aSEmmanuel Vadot			compatible = "cache";
84*f126890aSEmmanuel Vadot			cache-level = <2>;
85*f126890aSEmmanuel Vadot			cache-unified;
86*f126890aSEmmanuel Vadot		};
87*f126890aSEmmanuel Vadot	};
88*f126890aSEmmanuel Vadot
89*f126890aSEmmanuel Vadot	scu: system-controller@1fa20000 {
90*f126890aSEmmanuel Vadot		compatible = "airoha,en7523-scu";
91*f126890aSEmmanuel Vadot		reg = <0x1fa20000 0x400>,
92*f126890aSEmmanuel Vadot		      <0x1fb00000 0x1000>;
93*f126890aSEmmanuel Vadot		#clock-cells = <1>;
94*f126890aSEmmanuel Vadot	};
95*f126890aSEmmanuel Vadot
96*f126890aSEmmanuel Vadot	gic: interrupt-controller@9000000 {
97*f126890aSEmmanuel Vadot		compatible = "arm,gic-v3";
98*f126890aSEmmanuel Vadot		interrupt-controller;
99*f126890aSEmmanuel Vadot		#interrupt-cells = <3>;
100*f126890aSEmmanuel Vadot		#address-cells = <1>;
101*f126890aSEmmanuel Vadot		#size-cells = <1>;
102*f126890aSEmmanuel Vadot		reg = <0x09000000 0x20000>,
103*f126890aSEmmanuel Vadot		      <0x09080000 0x80000>,
104*f126890aSEmmanuel Vadot		      <0x09400000 0x2000>,
105*f126890aSEmmanuel Vadot		      <0x09500000 0x2000>,
106*f126890aSEmmanuel Vadot		      <0x09600000 0x20000>;
107*f126890aSEmmanuel Vadot		interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
108*f126890aSEmmanuel Vadot	};
109*f126890aSEmmanuel Vadot
110*f126890aSEmmanuel Vadot	timer {
111*f126890aSEmmanuel Vadot		compatible = "arm,armv8-timer";
112*f126890aSEmmanuel Vadot		interrupt-parent = <&gic>;
113*f126890aSEmmanuel Vadot		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
114*f126890aSEmmanuel Vadot			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
115*f126890aSEmmanuel Vadot			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
116*f126890aSEmmanuel Vadot			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
117*f126890aSEmmanuel Vadot	};
118*f126890aSEmmanuel Vadot
119*f126890aSEmmanuel Vadot	uart1: serial@1fbf0000 {
120*f126890aSEmmanuel Vadot		compatible = "ns16550";
121*f126890aSEmmanuel Vadot		reg = <0x1fbf0000 0x30>;
122*f126890aSEmmanuel Vadot		reg-io-width = <4>;
123*f126890aSEmmanuel Vadot		reg-shift = <2>;
124*f126890aSEmmanuel Vadot		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
125*f126890aSEmmanuel Vadot		clock-frequency = <1843200>;
126*f126890aSEmmanuel Vadot		status = "okay";
127*f126890aSEmmanuel Vadot	};
128*f126890aSEmmanuel Vadot
129*f126890aSEmmanuel Vadot	gpio0: gpio@1fbf0200 {
130*f126890aSEmmanuel Vadot		compatible = "airoha,en7523-gpio";
131*f126890aSEmmanuel Vadot		reg = <0x1fbf0204 0x4>,
132*f126890aSEmmanuel Vadot		      <0x1fbf0200 0x4>,
133*f126890aSEmmanuel Vadot		      <0x1fbf0220 0x4>,
134*f126890aSEmmanuel Vadot		      <0x1fbf0214 0x4>;
135*f126890aSEmmanuel Vadot		gpio-controller;
136*f126890aSEmmanuel Vadot		#gpio-cells = <2>;
137*f126890aSEmmanuel Vadot	};
138*f126890aSEmmanuel Vadot
139*f126890aSEmmanuel Vadot	gpio1: gpio@1fbf0270 {
140*f126890aSEmmanuel Vadot		compatible = "airoha,en7523-gpio";
141*f126890aSEmmanuel Vadot		reg = <0x1fbf0270 0x4>,
142*f126890aSEmmanuel Vadot		      <0x1fbf0260 0x4>,
143*f126890aSEmmanuel Vadot		      <0x1fbf0264 0x4>,
144*f126890aSEmmanuel Vadot		      <0x1fbf0278 0x4>;
145*f126890aSEmmanuel Vadot		gpio-controller;
146*f126890aSEmmanuel Vadot		#gpio-cells = <2>;
147*f126890aSEmmanuel Vadot	};
148*f126890aSEmmanuel Vadot
149*f126890aSEmmanuel Vadot	pcie0: pcie@1fa91000 {
150*f126890aSEmmanuel Vadot		compatible = "airoha,en7523-pcie", "mediatek,mt7622-pcie";
151*f126890aSEmmanuel Vadot		device_type = "pci";
152*f126890aSEmmanuel Vadot		reg = <0x1fa91000 0x1000>;
153*f126890aSEmmanuel Vadot		reg-names = "port0";
154*f126890aSEmmanuel Vadot		linux,pci-domain = <0>;
155*f126890aSEmmanuel Vadot		#address-cells = <3>;
156*f126890aSEmmanuel Vadot		#size-cells = <2>;
157*f126890aSEmmanuel Vadot		interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
158*f126890aSEmmanuel Vadot		interrupt-names = "pcie_irq";
159*f126890aSEmmanuel Vadot		clocks = <&scu EN7523_CLK_PCIE>;
160*f126890aSEmmanuel Vadot		clock-names = "sys_ck0";
161*f126890aSEmmanuel Vadot		bus-range = <0x00 0xff>;
162*f126890aSEmmanuel Vadot		ranges = <0x82000000 0 0x20000000  0x20000000  0 0x8000000>;
163*f126890aSEmmanuel Vadot		status = "disabled";
164*f126890aSEmmanuel Vadot
165*f126890aSEmmanuel Vadot		#interrupt-cells = <1>;
166*f126890aSEmmanuel Vadot		interrupt-map-mask = <0 0 0 7>;
167*f126890aSEmmanuel Vadot		interrupt-map = <0 0 0 1 &pcie_intc0 0>,
168*f126890aSEmmanuel Vadot				<0 0 0 2 &pcie_intc0 1>,
169*f126890aSEmmanuel Vadot				<0 0 0 3 &pcie_intc0 2>,
170*f126890aSEmmanuel Vadot				<0 0 0 4 &pcie_intc0 3>;
171*f126890aSEmmanuel Vadot		pcie_intc0: interrupt-controller {
172*f126890aSEmmanuel Vadot			interrupt-controller;
173*f126890aSEmmanuel Vadot			#address-cells = <0>;
174*f126890aSEmmanuel Vadot			#interrupt-cells = <1>;
175*f126890aSEmmanuel Vadot		};
176*f126890aSEmmanuel Vadot	};
177*f126890aSEmmanuel Vadot
178*f126890aSEmmanuel Vadot	pcie1: pcie@1fa92000 {
179*f126890aSEmmanuel Vadot		compatible = "airoha,en7523-pcie", "mediatek,mt7622-pcie";
180*f126890aSEmmanuel Vadot		device_type = "pci";
181*f126890aSEmmanuel Vadot		reg = <0x1fa92000 0x1000>;
182*f126890aSEmmanuel Vadot		reg-names = "port1";
183*f126890aSEmmanuel Vadot		linux,pci-domain = <1>;
184*f126890aSEmmanuel Vadot		#address-cells = <3>;
185*f126890aSEmmanuel Vadot		#size-cells = <2>;
186*f126890aSEmmanuel Vadot		interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
187*f126890aSEmmanuel Vadot		interrupt-names = "pcie_irq";
188*f126890aSEmmanuel Vadot		clocks = <&scu EN7523_CLK_PCIE>;
189*f126890aSEmmanuel Vadot		clock-names = "sys_ck1";
190*f126890aSEmmanuel Vadot		bus-range = <0x00 0xff>;
191*f126890aSEmmanuel Vadot		ranges = <0x82000000 0 0x28000000  0x28000000  0 0x8000000>;
192*f126890aSEmmanuel Vadot		status = "disabled";
193*f126890aSEmmanuel Vadot
194*f126890aSEmmanuel Vadot		#interrupt-cells = <1>;
195*f126890aSEmmanuel Vadot		interrupt-map-mask = <0 0 0 7>;
196*f126890aSEmmanuel Vadot		interrupt-map = <0 0 0 1 &pcie_intc1 0>,
197*f126890aSEmmanuel Vadot				<0 0 0 2 &pcie_intc1 1>,
198*f126890aSEmmanuel Vadot				<0 0 0 3 &pcie_intc1 2>,
199*f126890aSEmmanuel Vadot				<0 0 0 4 &pcie_intc1 3>;
200*f126890aSEmmanuel Vadot		pcie_intc1: interrupt-controller {
201*f126890aSEmmanuel Vadot			interrupt-controller;
202*f126890aSEmmanuel Vadot			#address-cells = <0>;
203*f126890aSEmmanuel Vadot			#interrupt-cells = <1>;
204*f126890aSEmmanuel Vadot		};
205*f126890aSEmmanuel Vadot	};
206*f126890aSEmmanuel Vadot};
207