xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/arm-realview-eb-mp.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright 2016 Linaro Ltd
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Permission is hereby granted, free of charge, to any person obtaining a copy
5*4882a593Smuzhiyun * of this software and associated documentation files (the "Software"), to deal
6*4882a593Smuzhiyun * in the Software without restriction, including without limitation the rights
7*4882a593Smuzhiyun * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8*4882a593Smuzhiyun * copies of the Software, and to permit persons to whom the Software is
9*4882a593Smuzhiyun * furnished to do so, subject to the following conditions:
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be included in
12*4882a593Smuzhiyun * all copies or substantial portions of the Software.
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*4882a593Smuzhiyun * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*4882a593Smuzhiyun * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*4882a593Smuzhiyun * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19*4882a593Smuzhiyun * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20*4882a593Smuzhiyun * THE SOFTWARE.
21*4882a593Smuzhiyun */
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
24*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
25*4882a593Smuzhiyun#include "arm-realview-eb.dtsi"
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun/*
28*4882a593Smuzhiyun * This is the common include file for all MPCore variants of the
29*4882a593Smuzhiyun * Evaluation Baseboard, i.e. ARM11MPCore, ARM11MPCore Revision B
30*4882a593Smuzhiyun * and Cortex-A9 MPCore.
31*4882a593Smuzhiyun */
32*4882a593Smuzhiyun/ {
33*4882a593Smuzhiyun	soc {
34*4882a593Smuzhiyun		#address-cells = <1>;
35*4882a593Smuzhiyun		#size-cells = <1>;
36*4882a593Smuzhiyun		compatible = "arm,realview-eb-soc", "simple-bus";
37*4882a593Smuzhiyun		regmap = <&syscon>;
38*4882a593Smuzhiyun		ranges;
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun		/* Primary interrupt controller in the test chip */
41*4882a593Smuzhiyun		intc: interrupt-controller@1f000100 {
42*4882a593Smuzhiyun			compatible = "arm,eb11mp-gic";
43*4882a593Smuzhiyun			#interrupt-cells = <3>;
44*4882a593Smuzhiyun			#address-cells = <1>;
45*4882a593Smuzhiyun			interrupt-controller;
46*4882a593Smuzhiyun			reg = <0x1f001000 0x1000>,
47*4882a593Smuzhiyun			      <0x1f000100 0x100>;
48*4882a593Smuzhiyun		};
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun		/* Secondary interrupt controller on the FPGA */
51*4882a593Smuzhiyun		intc_second: interrupt-controller@10040000 {
52*4882a593Smuzhiyun			compatible = "arm,pl390";
53*4882a593Smuzhiyun			#interrupt-cells = <3>;
54*4882a593Smuzhiyun			#address-cells = <1>;
55*4882a593Smuzhiyun			interrupt-controller;
56*4882a593Smuzhiyun			reg = <0x10041000 0x1000>,
57*4882a593Smuzhiyun			      <0x10040000 0x100>;
58*4882a593Smuzhiyun			interrupt-parent = <&intc>;
59*4882a593Smuzhiyun			interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>;
60*4882a593Smuzhiyun		};
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun		L2: cache-controller {
63*4882a593Smuzhiyun			compatible = "arm,l220-cache";
64*4882a593Smuzhiyun			reg = <0x1f002000 0x1000>;
65*4882a593Smuzhiyun			interrupt-parent = <&intc>;
66*4882a593Smuzhiyun			interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>,
67*4882a593Smuzhiyun			     <0 30 IRQ_TYPE_LEVEL_HIGH>,
68*4882a593Smuzhiyun			     <0 31 IRQ_TYPE_LEVEL_HIGH>;
69*4882a593Smuzhiyun			cache-unified;
70*4882a593Smuzhiyun			cache-level = <2>;
71*4882a593Smuzhiyun			/*
72*4882a593Smuzhiyun			 * Override default cache size, sets and
73*4882a593Smuzhiyun			 * associativity as these may be erroneously set
74*4882a593Smuzhiyun			 * up by boot loader(s), probably for safety
75*4882a593Smuzhiyun			 * since th outer sync operation can cause the
76*4882a593Smuzhiyun			 * cache to hang unless disabled.
77*4882a593Smuzhiyun			 */
78*4882a593Smuzhiyun			cache-size = <1048576>; // 1MB
79*4882a593Smuzhiyun			cache-sets = <4096>;
80*4882a593Smuzhiyun			cache-line-size = <32>;
81*4882a593Smuzhiyun			arm,shared-override;
82*4882a593Smuzhiyun			arm,parity-enable;
83*4882a593Smuzhiyun			arm,outer-sync-disable;
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun		scu: scu@1f000000 {
87*4882a593Smuzhiyun			compatible = "arm,arm11mp-scu";
88*4882a593Smuzhiyun			reg = <0x1f000000 0x100>;
89*4882a593Smuzhiyun		};
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun		twd_timer: timer@1f000600 {
92*4882a593Smuzhiyun			compatible = "arm,arm11mp-twd-timer";
93*4882a593Smuzhiyun			reg = <0x1f000600 0x20>;
94*4882a593Smuzhiyun			interrupt-parent = <&intc>;
95*4882a593Smuzhiyun			interrupts = <1 13 0xf04>;
96*4882a593Smuzhiyun		};
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun		twd_wdog: watchdog@1f000620 {
99*4882a593Smuzhiyun			compatible = "arm,arm11mp-twd-wdt";
100*4882a593Smuzhiyun			reg = <0x1f000620 0x20>;
101*4882a593Smuzhiyun			interrupt-parent = <&intc>;
102*4882a593Smuzhiyun			interrupts = <1 14 0xf04>;
103*4882a593Smuzhiyun		};
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun		/* PMU with one IRQ line per core */
106*4882a593Smuzhiyun		pmu: pmu@0 {
107*4882a593Smuzhiyun			compatible = "arm,arm11mpcore-pmu";
108*4882a593Smuzhiyun			interrupt-parent = <&intc>;
109*4882a593Smuzhiyun			interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>,
110*4882a593Smuzhiyun			     <0 18 IRQ_TYPE_LEVEL_HIGH>,
111*4882a593Smuzhiyun			     <0 19 IRQ_TYPE_LEVEL_HIGH>,
112*4882a593Smuzhiyun			     <0 20 IRQ_TYPE_LEVEL_HIGH>;
113*4882a593Smuzhiyun		};
114*4882a593Smuzhiyun	};
115*4882a593Smuzhiyun};
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun/*
118*4882a593Smuzhiyun * This adapts all the peripherals to the interrupt routing
119*4882a593Smuzhiyun * to the GIC on the core tile.
120*4882a593Smuzhiyun */
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun&ethernet {
123*4882a593Smuzhiyun	interrupt-parent = <&intc>;
124*4882a593Smuzhiyun	interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
125*4882a593Smuzhiyun};
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun&usb {
128*4882a593Smuzhiyun	interrupt-parent = <&intc>;
129*4882a593Smuzhiyun	interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>;
130*4882a593Smuzhiyun};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun&aaci {
133*4882a593Smuzhiyun	interrupt-parent = <&intc>;
134*4882a593Smuzhiyun	interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
135*4882a593Smuzhiyun};
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun&mmc {
138*4882a593Smuzhiyun	interrupt-parent = <&intc>;
139*4882a593Smuzhiyun	interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>,
140*4882a593Smuzhiyun			<0 15 IRQ_TYPE_LEVEL_HIGH>;
141*4882a593Smuzhiyun};
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun&kmi0 {
144*4882a593Smuzhiyun	interrupt-parent = <&intc>;
145*4882a593Smuzhiyun	interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
146*4882a593Smuzhiyun};
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun&kmi1 {
149*4882a593Smuzhiyun	interrupt-parent = <&intc>;
150*4882a593Smuzhiyun	interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
151*4882a593Smuzhiyun};
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun&serial0 {
154*4882a593Smuzhiyun	interrupt-parent = <&intc>;
155*4882a593Smuzhiyun	interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
156*4882a593Smuzhiyun};
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun&serial1 {
159*4882a593Smuzhiyun	interrupt-parent = <&intc>;
160*4882a593Smuzhiyun	interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;
161*4882a593Smuzhiyun};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun&timer01 {
164*4882a593Smuzhiyun	interrupt-parent = <&intc>;
165*4882a593Smuzhiyun	interrupts = <0 1 IRQ_TYPE_LEVEL_HIGH>;
166*4882a593Smuzhiyun};
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun&timer23 {
169*4882a593Smuzhiyun	interrupt-parent = <&intc>;
170*4882a593Smuzhiyun	interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
171*4882a593Smuzhiyun};
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun&rtc {
174*4882a593Smuzhiyun	interrupt-parent = <&intc>;
175*4882a593Smuzhiyun	interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
176*4882a593Smuzhiyun};
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun/*
179*4882a593Smuzhiyun * On revision A, these peripherals does not have their IRQ lines
180*4882a593Smuzhiyun * routed to the core tile, but they can be reached on the secondary
181*4882a593Smuzhiyun * GIC.
182*4882a593Smuzhiyun */
183*4882a593Smuzhiyun&gpio0 {
184*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
185*4882a593Smuzhiyun	interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
186*4882a593Smuzhiyun};
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun&gpio1 {
189*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
190*4882a593Smuzhiyun	interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
191*4882a593Smuzhiyun};
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun&gpio2 {
194*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
195*4882a593Smuzhiyun	interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
196*4882a593Smuzhiyun};
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun&serial2 {
199*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
200*4882a593Smuzhiyun	interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>;
201*4882a593Smuzhiyun	status = "okay";
202*4882a593Smuzhiyun};
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun&serial3 {
205*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
206*4882a593Smuzhiyun	interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>;
207*4882a593Smuzhiyun	status = "okay";
208*4882a593Smuzhiyun};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun&ssp {
211*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
212*4882a593Smuzhiyun	interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
213*4882a593Smuzhiyun	status = "okay";
214*4882a593Smuzhiyun};
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun&wdog {
217*4882a593Smuzhiyun	interrupt-parent = <&intc_second>;
218*4882a593Smuzhiyun	interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
219*4882a593Smuzhiyun	status = "okay";
220*4882a593Smuzhiyun};
221