Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright 2015 Annapurna Labs Ltd.
0003  *
0004  * This program is free software; you can redistribute it and/or modify it
0005  * under the terms and conditions of the GNU General Public License,
0006  * version 2, as published by the Free Software Foundation.
0007  *
0008  * Alternatively, redistribution and use in source and binary forms, with or
0009  * without modification, are permitted provided that the following conditions
0010  * are met:
0011  *
0012  *   *   Redistributions of source code must retain the above copyright notice,
0013  *       this list of conditions and the following disclaimer.
0014  *
0015  *   *   Redistributions in binary form must reproduce the above copyright
0016  *       notice, this list of conditions and the following disclaimer in
0017  *       the documentation and/or other materials provided with the
0018  *       distribution.
0019  *
0020  * This program is distributed in the hope it will be useful, but WITHOUT
0021  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0022  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
0023  * more details.
0024  *
0025  */
0026 
0027 #include <dt-bindings/interrupt-controller/arm-gic.h>
0028 
0029 / {
0030         #address-cells = <2>;
0031         #size-cells = <2>;
0032         /* SOC compatibility */
0033         compatible = "al,alpine";
0034 
0035         memory {
0036                 device_type = "memory";
0037                 reg = <0 0 0 0>;
0038         };
0039 
0040         /* CPU Configuration */
0041         cpus {
0042                 #address-cells = <1>;
0043                 #size-cells = <0>;
0044                 enable-method = "al,alpine-smp";
0045 
0046                 cpu@0 {
0047                         compatible = "arm,cortex-a15";
0048                         device_type = "cpu";
0049                         reg = <0>;
0050                         clock-frequency = <1700000000>;
0051                 };
0052 
0053                 cpu@1 {
0054                         compatible = "arm,cortex-a15";
0055                         device_type = "cpu";
0056                         reg = <1>;
0057                         clock-frequency = <1700000000>;
0058                 };
0059 
0060                 cpu@2 {
0061                         compatible = "arm,cortex-a15";
0062                         device_type = "cpu";
0063                         reg = <2>;
0064                         clock-frequency = <1700000000>;
0065                 };
0066 
0067                 cpu@3 {
0068                         compatible = "arm,cortex-a15";
0069                         device_type = "cpu";
0070                         reg = <3>;
0071                         clock-frequency = <1700000000>;
0072                 };
0073         };
0074 
0075         soc {
0076                 #address-cells = <2>;
0077                 #size-cells = <2>;
0078                 compatible = "simple-bus";
0079                 interrupt-parent = <&gic>;
0080                 ranges;
0081 
0082                 arch-timer {
0083                         compatible = "arm,cortex-a15-timer",
0084                                      "arm,armv7-timer";
0085                         interrupts =
0086                                 <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
0087                                 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
0088                                 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
0089                                 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
0090                         clock-frequency = <50000000>;
0091                 };
0092 
0093                 /* Interrupt Controller */
0094                 gic: interrupt-controller@fb001000 {
0095                         compatible = "arm,cortex-a15-gic";
0096                         #interrupt-cells = <3>;
0097                         #size-cells = <0>;
0098                         #address-cells = <0>;
0099                         interrupt-controller;
0100                         reg = <0x0 0xfb001000 0x0 0x1000>,
0101                               <0x0 0xfb002000 0x0 0x2000>,
0102                               <0x0 0xfb004000 0x0 0x2000>,
0103                               <0x0 0xfb006000 0x0 0x2000>;
0104                         interrupts =
0105                                 <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
0106                 };
0107 
0108                 /* CPU Resume registers */
0109                 cpu-resume@fbff5ec0 {
0110                         compatible = "al,alpine-cpu-resume";
0111                         reg = <0x0 0xfbff5ec0 0x0 0x30>;
0112                 };
0113 
0114                 /* North Bridge Service Registers */
0115                 sysfabric-service@fb070000 {
0116                         compatible = "al,alpine-sysfabric-service", "syscon";
0117                         reg = <0x0 0xfb070000 0x0 0x10000>;
0118                 };
0119 
0120                 /* Performance Monitor Unit */
0121                 pmu {
0122                         compatible = "arm,cortex-a15-pmu";
0123                         interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
0124                                      <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
0125                                      <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
0126                                      <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
0127                 };
0128 
0129                 uart0: uart@fd883000 {
0130                         compatible = "ns16550a";
0131                         reg = <0x0 0xfd883000 0x0 0x1000>;
0132                         clock-frequency = <375000000>;
0133                         interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
0134                         reg-shift = <2>;
0135                         reg-io-width = <4>;
0136                 };
0137 
0138                 uart1: uart@fd884000 {
0139                         compatible = "ns16550a";
0140                         reg = <0x0 0xfd884000 0x0 0x1000>;
0141                         clock-frequency = <375000000>;
0142                         interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
0143                         reg-shift = <2>;
0144                         reg-io-width = <4>;
0145                 };
0146 
0147                 /* Internal PCIe Controller */
0148                 pcie@fbc00000 {
0149                         compatible = "pci-host-ecam-generic";
0150                         device_type = "pci";
0151                         #size-cells = <2>;
0152                         #address-cells = <3>;
0153                         #interrupt-cells = <1>;
0154                         reg = <0x0 0xfbc00000 0x0 0x100000>;
0155                         interrupt-map-mask = <0xf800 0 0 7>;
0156                         /* Add legacy interrupts for SATA devices only */
0157                         interrupt-map = <0x4000 0 0 1 &gic 0 43 4>,
0158                                         <0x4800 0 0 1 &gic 0 44 4>;
0159 
0160                         /* 32 bit non prefetchable memory space */
0161                         ranges = <0x02000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
0162 
0163                         bus-range = <0x00 0x00>;
0164                         msi-parent = <&msix>;
0165                 };
0166 
0167                 msix: msix@fbe00000 {
0168                         compatible = "al,alpine-msix";
0169                         reg = <0x0 0xfbe00000 0x0 0x100000>;
0170                         interrupt-controller;
0171                         msi-controller;
0172                         al,msi-base-spi = <96>;
0173                         al,msi-num-spis = <64>;
0174                 };
0175         };
0176 };