xref: /freebsd/sys/contrib/device-tree/src/arm/intel/ixp/intel-ixp4xx.dtsi (revision f126890ac5386406dadf7c4cfa9566cbb56537c5)
1*f126890aSEmmanuel Vadot// SPDX-License-Identifier: ISC
2*f126890aSEmmanuel Vadot/*
3*f126890aSEmmanuel Vadot * Device Tree file for Intel XScale Network Processors
4*f126890aSEmmanuel Vadot * in the IXP 4xx series.
5*f126890aSEmmanuel Vadot */
6*f126890aSEmmanuel Vadot#include <dt-bindings/interrupt-controller/irq.h>
7*f126890aSEmmanuel Vadot#include <dt-bindings/gpio/gpio.h>
8*f126890aSEmmanuel Vadot
9*f126890aSEmmanuel Vadot/ {
10*f126890aSEmmanuel Vadot	soc {
11*f126890aSEmmanuel Vadot		#address-cells = <1>;
12*f126890aSEmmanuel Vadot		#size-cells = <1>;
13*f126890aSEmmanuel Vadot		ranges;
14*f126890aSEmmanuel Vadot		compatible = "simple-bus";
15*f126890aSEmmanuel Vadot		interrupt-parent = <&intcon>;
16*f126890aSEmmanuel Vadot
17*f126890aSEmmanuel Vadot		/*
18*f126890aSEmmanuel Vadot		 * The IXP4xx expansion bus is a set of up to 7 each up to 16MB
19*f126890aSEmmanuel Vadot		 * windows in the 256MB space from 0x50000000 to 0x5fffffff.
20*f126890aSEmmanuel Vadot		 */
21*f126890aSEmmanuel Vadot		bus@c4000000 {
22*f126890aSEmmanuel Vadot			/* compatible and reg filled in by per-soc device tree */
23*f126890aSEmmanuel Vadot			native-endian;
24*f126890aSEmmanuel Vadot			#address-cells = <2>;
25*f126890aSEmmanuel Vadot			#size-cells = <1>;
26*f126890aSEmmanuel Vadot			ranges = <0 0x0 0x50000000 0x01000000>,
27*f126890aSEmmanuel Vadot				 <1 0x0 0x51000000 0x01000000>,
28*f126890aSEmmanuel Vadot				 <2 0x0 0x52000000 0x01000000>,
29*f126890aSEmmanuel Vadot				 <3 0x0 0x53000000 0x01000000>,
30*f126890aSEmmanuel Vadot				 <4 0x0 0x54000000 0x01000000>,
31*f126890aSEmmanuel Vadot				 <5 0x0 0x55000000 0x01000000>,
32*f126890aSEmmanuel Vadot				 <6 0x0 0x56000000 0x01000000>,
33*f126890aSEmmanuel Vadot				 <7 0x0 0x57000000 0x01000000>;
34*f126890aSEmmanuel Vadot			dma-ranges = <0 0x0 0x50000000 0x01000000>,
35*f126890aSEmmanuel Vadot				 <1 0x0 0x51000000 0x01000000>,
36*f126890aSEmmanuel Vadot				 <2 0x0 0x52000000 0x01000000>,
37*f126890aSEmmanuel Vadot				 <3 0x0 0x53000000 0x01000000>,
38*f126890aSEmmanuel Vadot				 <4 0x0 0x54000000 0x01000000>,
39*f126890aSEmmanuel Vadot				 <5 0x0 0x55000000 0x01000000>,
40*f126890aSEmmanuel Vadot				 <6 0x0 0x56000000 0x01000000>,
41*f126890aSEmmanuel Vadot				 <7 0x0 0x57000000 0x01000000>;
42*f126890aSEmmanuel Vadot		};
43*f126890aSEmmanuel Vadot
44*f126890aSEmmanuel Vadot		qmgr: queue-manager@60000000 {
45*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-ahb-queue-manager";
46*f126890aSEmmanuel Vadot			reg = <0x60000000 0x4000>;
47*f126890aSEmmanuel Vadot			interrupts = <3 IRQ_TYPE_LEVEL_HIGH>, <4 IRQ_TYPE_LEVEL_HIGH>;
48*f126890aSEmmanuel Vadot		};
49*f126890aSEmmanuel Vadot
50*f126890aSEmmanuel Vadot		pci@c0000000 {
51*f126890aSEmmanuel Vadot			/* compatible filled in by per-soc device tree */
52*f126890aSEmmanuel Vadot			reg = <0xc0000000 0x1000>;
53*f126890aSEmmanuel Vadot			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>,
54*f126890aSEmmanuel Vadot				     <9 IRQ_TYPE_LEVEL_HIGH>,
55*f126890aSEmmanuel Vadot				     <10 IRQ_TYPE_LEVEL_HIGH>;
56*f126890aSEmmanuel Vadot			#address-cells = <3>;
57*f126890aSEmmanuel Vadot			#size-cells = <2>;
58*f126890aSEmmanuel Vadot			device_type = "pci";
59*f126890aSEmmanuel Vadot			bus-range = <0x00 0xff>;
60*f126890aSEmmanuel Vadot			status = "disabled";
61*f126890aSEmmanuel Vadot
62*f126890aSEmmanuel Vadot			ranges =
63*f126890aSEmmanuel Vadot			/*
64*f126890aSEmmanuel Vadot			 * 64MB 32bit non-prefetchable memory 0x48000000-0x4bffffff
65*f126890aSEmmanuel Vadot			 * done in 4 chunks of 16MB each.
66*f126890aSEmmanuel Vadot			 */
67*f126890aSEmmanuel Vadot			<0x02000000 0 0x48000000 0x48000000 0 0x04000000>,
68*f126890aSEmmanuel Vadot			/* 64KB I/O space at 0x4c000000 */
69*f126890aSEmmanuel Vadot			<0x01000000 0 0x00000000 0x4c000000 0 0x00010000>;
70*f126890aSEmmanuel Vadot
71*f126890aSEmmanuel Vadot			/*
72*f126890aSEmmanuel Vadot			 * This needs to map to the start of physical memory so
73*f126890aSEmmanuel Vadot			 * PCI devices can see all (hopefully) memory. This is done
74*f126890aSEmmanuel Vadot			 * using 4 1:1 16MB windows, so the RAM should not be more than
75*f126890aSEmmanuel Vadot			 * 64 MB for this to work. If your memory is anywhere else
76*f126890aSEmmanuel Vadot			 * than at 0x0 you need to alter this.
77*f126890aSEmmanuel Vadot			 */
78*f126890aSEmmanuel Vadot			dma-ranges =
79*f126890aSEmmanuel Vadot			<0x02000000 0 0x00000000 0x00000000 0 0x04000000>;
80*f126890aSEmmanuel Vadot
81*f126890aSEmmanuel Vadot			/* Each unique DTS using PCI must specify the swizzling */
82*f126890aSEmmanuel Vadot		};
83*f126890aSEmmanuel Vadot
84*f126890aSEmmanuel Vadot		uart0: serial@c8000000 {
85*f126890aSEmmanuel Vadot			compatible = "intel,xscale-uart";
86*f126890aSEmmanuel Vadot			reg = <0xc8000000 0x1000>;
87*f126890aSEmmanuel Vadot			/*
88*f126890aSEmmanuel Vadot			 * The reg-offset and reg-shift is a side effect
89*f126890aSEmmanuel Vadot			 * of running the platform in big endian mode.
90*f126890aSEmmanuel Vadot			 */
91*f126890aSEmmanuel Vadot			reg-offset = <3>;
92*f126890aSEmmanuel Vadot			reg-shift = <2>;
93*f126890aSEmmanuel Vadot			interrupts = <15 IRQ_TYPE_LEVEL_HIGH>;
94*f126890aSEmmanuel Vadot			clock-frequency = <14745600>;
95*f126890aSEmmanuel Vadot			no-loopback-test;
96*f126890aSEmmanuel Vadot		};
97*f126890aSEmmanuel Vadot
98*f126890aSEmmanuel Vadot		uart1: serial@c8001000 {
99*f126890aSEmmanuel Vadot			compatible = "intel,xscale-uart";
100*f126890aSEmmanuel Vadot			reg = <0xc8001000 0x1000>;
101*f126890aSEmmanuel Vadot			/*
102*f126890aSEmmanuel Vadot			 * The reg-offset and reg-shift is a side effect
103*f126890aSEmmanuel Vadot			 * of running the platform in big endian mode.
104*f126890aSEmmanuel Vadot			 */
105*f126890aSEmmanuel Vadot			reg-offset = <3>;
106*f126890aSEmmanuel Vadot			reg-shift = <2>;
107*f126890aSEmmanuel Vadot			interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
108*f126890aSEmmanuel Vadot			clock-frequency = <14745600>;
109*f126890aSEmmanuel Vadot			no-loopback-test;
110*f126890aSEmmanuel Vadot		};
111*f126890aSEmmanuel Vadot
112*f126890aSEmmanuel Vadot		gpio0: gpio@c8004000 {
113*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-gpio";
114*f126890aSEmmanuel Vadot			reg = <0xc8004000 0x1000>;
115*f126890aSEmmanuel Vadot			gpio-controller;
116*f126890aSEmmanuel Vadot			#gpio-cells = <2>;
117*f126890aSEmmanuel Vadot			interrupt-controller;
118*f126890aSEmmanuel Vadot			#interrupt-cells = <2>;
119*f126890aSEmmanuel Vadot		};
120*f126890aSEmmanuel Vadot
121*f126890aSEmmanuel Vadot		intcon: interrupt-controller@c8003000 {
122*f126890aSEmmanuel Vadot			/*
123*f126890aSEmmanuel Vadot			 * Note: no compatible string. The subvariant of the
124*f126890aSEmmanuel Vadot			 * chip needs to define what version it is. The
125*f126890aSEmmanuel Vadot			 * location of the interrupt controller is fixed in
126*f126890aSEmmanuel Vadot			 * memory across all variants.
127*f126890aSEmmanuel Vadot			 */
128*f126890aSEmmanuel Vadot			reg = <0xc8003000 0x100>;
129*f126890aSEmmanuel Vadot			interrupt-controller;
130*f126890aSEmmanuel Vadot			#interrupt-cells = <2>;
131*f126890aSEmmanuel Vadot		};
132*f126890aSEmmanuel Vadot
133*f126890aSEmmanuel Vadot		timer@c8005000 {
134*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-timer";
135*f126890aSEmmanuel Vadot			reg = <0xc8005000 0x100>;
136*f126890aSEmmanuel Vadot			interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
137*f126890aSEmmanuel Vadot		};
138*f126890aSEmmanuel Vadot
139*f126890aSEmmanuel Vadot		npe: npe@c8006000 {
140*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-network-processing-engine";
141*f126890aSEmmanuel Vadot			reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>;
142*f126890aSEmmanuel Vadot			#address-cells = <1>;
143*f126890aSEmmanuel Vadot			#size-cells = <0>;
144*f126890aSEmmanuel Vadot
145*f126890aSEmmanuel Vadot			/* NPE-A contains two high-speed serial links */
146*f126890aSEmmanuel Vadot			hss@0 {
147*f126890aSEmmanuel Vadot				compatible = "intel,ixp4xx-hss";
148*f126890aSEmmanuel Vadot				reg = <0>;
149*f126890aSEmmanuel Vadot				intel,npe-handle = <&npe 0>;
150*f126890aSEmmanuel Vadot				status = "disabled";
151*f126890aSEmmanuel Vadot			};
152*f126890aSEmmanuel Vadot
153*f126890aSEmmanuel Vadot			hss@1 {
154*f126890aSEmmanuel Vadot				compatible = "intel,ixp4xx-hss";
155*f126890aSEmmanuel Vadot				reg = <1>;
156*f126890aSEmmanuel Vadot				intel,npe-handle = <&npe 0>;
157*f126890aSEmmanuel Vadot				status = "disabled";
158*f126890aSEmmanuel Vadot			};
159*f126890aSEmmanuel Vadot
160*f126890aSEmmanuel Vadot			/* NPE-C contains a crypto accelerator */
161*f126890aSEmmanuel Vadot			crypto {
162*f126890aSEmmanuel Vadot				compatible = "intel,ixp4xx-crypto";
163*f126890aSEmmanuel Vadot				intel,npe-handle = <&npe 2>;
164*f126890aSEmmanuel Vadot				queue-rx = <&qmgr 30>;
165*f126890aSEmmanuel Vadot				queue-txready = <&qmgr 29>;
166*f126890aSEmmanuel Vadot			};
167*f126890aSEmmanuel Vadot		};
168*f126890aSEmmanuel Vadot
169*f126890aSEmmanuel Vadot		/* This is known as EthB */
170*f126890aSEmmanuel Vadot		ethernet@c8009000 {
171*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-ethernet";
172*f126890aSEmmanuel Vadot			reg = <0xc8009000 0x1000>;
173*f126890aSEmmanuel Vadot			status = "disabled";
174*f126890aSEmmanuel Vadot			/* Dummy values that depend on firmware */
175*f126890aSEmmanuel Vadot			queue-rx = <&qmgr 3>;
176*f126890aSEmmanuel Vadot			queue-txready = <&qmgr 20>;
177*f126890aSEmmanuel Vadot			intel,npe-handle = <&npe 1>;
178*f126890aSEmmanuel Vadot		};
179*f126890aSEmmanuel Vadot
180*f126890aSEmmanuel Vadot		/* This is known as EthC */
181*f126890aSEmmanuel Vadot		ethernet@c800a000 {
182*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-ethernet";
183*f126890aSEmmanuel Vadot			reg = <0xc800a000 0x1000>;
184*f126890aSEmmanuel Vadot			status = "disabled";
185*f126890aSEmmanuel Vadot			/* Dummy values that depend on firmware */
186*f126890aSEmmanuel Vadot			queue-rx = <&qmgr 0>;
187*f126890aSEmmanuel Vadot			queue-txready = <&qmgr 0>;
188*f126890aSEmmanuel Vadot			intel,npe-handle = <&npe 2>;
189*f126890aSEmmanuel Vadot		};
190*f126890aSEmmanuel Vadot
191*f126890aSEmmanuel Vadot		/* This is known as EthA */
192*f126890aSEmmanuel Vadot		ethernet@c800c000 {
193*f126890aSEmmanuel Vadot			compatible = "intel,ixp4xx-ethernet";
194*f126890aSEmmanuel Vadot			reg = <0xc800c000 0x1000>;
195*f126890aSEmmanuel Vadot			status = "disabled";
196*f126890aSEmmanuel Vadot			intel,npe = <0>;
197*f126890aSEmmanuel Vadot			/* Dummy values that depend on firmware */
198*f126890aSEmmanuel Vadot			queue-rx = <&qmgr 0>;
199*f126890aSEmmanuel Vadot			queue-txready = <&qmgr 0>;
200*f126890aSEmmanuel Vadot		};
201*f126890aSEmmanuel Vadot	};
202*f126890aSEmmanuel Vadot};
203