Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2016 Linaro Ltd
0003  *
0004  * Permission is hereby granted, free of charge, to any person obtaining a copy
0005  * of this software and associated documentation files (the "Software"), to deal
0006  * in the Software without restriction, including without limitation the rights
0007  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
0008  * copies of the Software, and to permit persons to whom the Software is
0009  * furnished to do so, subject to the following conditions:
0010  *
0011  * The above copyright notice and this permission notice shall be included in
0012  * all copies or substantial portions of the Software.
0013  *
0014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
0017  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0018  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
0019  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
0020  * THE SOFTWARE.
0021  */
0022 
0023 #include <dt-bindings/interrupt-controller/irq.h>
0024 #include <dt-bindings/gpio/gpio.h>
0025 #include "arm-realview-eb.dtsi"
0026 
0027 /*
0028  * This is the common include file for all MPCore variants of the
0029  * Evaluation Baseboard, i.e. ARM11MPCore, ARM11MPCore Revision B
0030  * and Cortex-A9 MPCore.
0031  */
0032 / {
0033         soc {
0034                 #address-cells = <1>;
0035                 #size-cells = <1>;
0036                 compatible = "arm,realview-eb-soc", "simple-bus";
0037                 regmap = <&syscon>;
0038                 ranges;
0039 
0040                 /* Primary interrupt controller in the test chip */
0041                 intc: interrupt-controller@1f000100 {
0042                         compatible = "arm,eb11mp-gic";
0043                         #interrupt-cells = <3>;
0044                         #address-cells = <1>;
0045                         interrupt-controller;
0046                         reg = <0x1f001000 0x1000>,
0047                               <0x1f000100 0x100>;
0048                 };
0049 
0050                 /* Secondary interrupt controller on the FPGA */
0051                 intc_second: interrupt-controller@10040000 {
0052                         compatible = "arm,pl390";
0053                         #interrupt-cells = <3>;
0054                         #address-cells = <1>;
0055                         interrupt-controller;
0056                         reg = <0x10041000 0x1000>,
0057                               <0x10040000 0x100>;
0058                         interrupt-parent = <&intc>;
0059                         interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>;
0060                 };
0061 
0062                 L2: cache-controller {
0063                         compatible = "arm,l220-cache";
0064                         reg = <0x1f002000 0x1000>;
0065                         interrupt-parent = <&intc>;
0066                         interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>,
0067                              <0 30 IRQ_TYPE_LEVEL_HIGH>,
0068                              <0 31 IRQ_TYPE_LEVEL_HIGH>;
0069                         cache-unified;
0070                         cache-level = <2>;
0071                         /*
0072                          * Override default cache size, sets and
0073                          * associativity as these may be erroneously set
0074                          * up by boot loader(s), probably for safety
0075                          * since th outer sync operation can cause the
0076                          * cache to hang unless disabled.
0077                          */
0078                         cache-size = <1048576>; // 1MB
0079                         cache-sets = <4096>;
0080                         cache-line-size = <32>;
0081                         arm,shared-override;
0082                         arm,parity-enable;
0083                         arm,outer-sync-disable;
0084                 };
0085 
0086                 scu: scu@1f000000 {
0087                         compatible = "arm,arm11mp-scu";
0088                         reg = <0x1f000000 0x100>;
0089                 };
0090 
0091                 twd_timer: timer@1f000600 {
0092                         compatible = "arm,arm11mp-twd-timer";
0093                         reg = <0x1f000600 0x20>;
0094                         interrupt-parent = <&intc>;
0095                         interrupts = <1 13 0xf04>;
0096                 };
0097 
0098                 twd_wdog: watchdog@1f000620 {
0099                         compatible = "arm,arm11mp-twd-wdt";
0100                         reg = <0x1f000620 0x20>;
0101                         interrupt-parent = <&intc>;
0102                         interrupts = <1 14 0xf04>;
0103                 };
0104 
0105                 /* PMU with one IRQ line per core */
0106                 pmu: pmu@0 {
0107                         compatible = "arm,arm11mpcore-pmu";
0108                         interrupt-parent = <&intc>;
0109                         interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>,
0110                              <0 18 IRQ_TYPE_LEVEL_HIGH>,
0111                              <0 19 IRQ_TYPE_LEVEL_HIGH>,
0112                              <0 20 IRQ_TYPE_LEVEL_HIGH>;
0113                 };
0114         };
0115 };
0116 
0117 /*
0118  * This adapts all the peripherals to the interrupt routing
0119  * to the GIC on the core tile.
0120  */
0121 
0122 &ethernet {
0123         interrupt-parent = <&intc>;
0124         interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
0125 };
0126 
0127 &usb {
0128         interrupt-parent = <&intc>;
0129         interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>;
0130 };
0131 
0132 &aaci {
0133         interrupt-parent = <&intc>;
0134         interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
0135 };
0136 
0137 &mmc {
0138         interrupt-parent = <&intc>;
0139         interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>,
0140                         <0 15 IRQ_TYPE_LEVEL_HIGH>;
0141 };
0142 
0143 &kmi0 {
0144         interrupt-parent = <&intc>;
0145         interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
0146 };
0147 
0148 &kmi1 {
0149         interrupt-parent = <&intc>;
0150         interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
0151 };
0152 
0153 &serial0 {
0154         interrupt-parent = <&intc>;
0155         interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
0156 };
0157 
0158 &serial1 {
0159         interrupt-parent = <&intc>;
0160         interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;
0161 };
0162 
0163 &timer01 {
0164         interrupt-parent = <&intc>;
0165         interrupts = <0 1 IRQ_TYPE_LEVEL_HIGH>;
0166 };
0167 
0168 &timer23 {
0169         interrupt-parent = <&intc>;
0170         interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
0171 };
0172 
0173 &rtc {
0174         interrupt-parent = <&intc>;
0175         interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
0176 };
0177 
0178 /*
0179  * On revision A, these peripherals does not have their IRQ lines
0180  * routed to the core tile, but they can be reached on the secondary
0181  * GIC.
0182  */
0183 &gpio0 {
0184         interrupt-parent = <&intc_second>;
0185         interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
0186 };
0187 
0188 &gpio1 {
0189         interrupt-parent = <&intc_second>;
0190         interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
0191 };
0192 
0193 &gpio2 {
0194         interrupt-parent = <&intc_second>;
0195         interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
0196 };
0197 
0198 &serial2 {
0199         interrupt-parent = <&intc_second>;
0200         interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>;
0201         status = "okay";
0202 };
0203 
0204 &serial3 {
0205         interrupt-parent = <&intc_second>;
0206         interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>;
0207         status = "okay";
0208 };
0209 
0210 &ssp {
0211         interrupt-parent = <&intc_second>;
0212         interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
0213         status = "okay";
0214 };
0215 
0216 &wdog {
0217         interrupt-parent = <&intc_second>;
0218         interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
0219         status = "okay";
0220 };