Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / arch / arm / boot / dts / alpine.dtsi
diff --git a/kernel/arch/arm/boot/dts/alpine.dtsi b/kernel/arch/arm/boot/dts/alpine.dtsi
new file mode 100644 (file)
index 0000000..9af2d60
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2015 Annapurna Labs Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * Alternatively, redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   *   Redistributions of source code must retain the above copyright notice,
+ *       this list of conditions and the following disclaimer.
+ *
+ *   *   Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "skeleton64.dtsi"
+
+/ {
+       /* SOC compatibility */
+       compatible = "al,alpine";
+
+       /* CPU Configuration */
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "al,alpine-smp";
+
+               cpu@0 {
+                       compatible = "arm,cortex-a15";
+                       device_type = "cpu";
+                       reg = <0>;
+                       clock-frequency = <0>; /* Filled by loader */
+               };
+
+               cpu@1 {
+                       compatible = "arm,cortex-a15";
+                       device_type = "cpu";
+                       reg = <1>;
+                       clock-frequency = <0>; /* Filled by loader */
+               };
+
+               cpu@2 {
+                       compatible = "arm,cortex-a15";
+                       device_type = "cpu";
+                       reg = <2>;
+                       clock-frequency = <0>; /* Filled by loader */
+               };
+
+               cpu@3 {
+                       compatible = "arm,cortex-a15";
+                       device_type = "cpu";
+                       reg = <3>;
+                       clock-frequency = <0>; /* Filled by loader */
+               };
+       };
+
+       soc {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               ranges;
+
+               arch-timer {
+                       compatible = "arm,cortex-a15-timer",
+                                    "arm,armv7-timer";
+                       interrupts =
+                               <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                               <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                               <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                               <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+                       clock-frequency = <0>; /* Filled by loader */
+               };
+
+               /* Interrupt Controller */
+               gic: gic@fb001000 {
+                       compatible = "arm,cortex-a15-gic";
+                       #interrupt-cells = <3>;
+                       #size-cells = <0>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xfb001000 0x0 0x1000>,
+                             <0x0 0xfb002000 0x0 0x2000>,
+                             <0x0 0xfb004000 0x0 0x1000>,
+                             <0x0 0xfb006000 0x0 0x2000>;
+                       interrupts =
+                               <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+               };
+
+               /* CPU Resume registers */
+               cpu-resume@fbff5ec0 {
+                       compatible = "al,alpine-cpu-resume";
+                       reg = <0x0 0xfbff5ec0 0x0 0x30>;
+               };
+
+               /* North Bridge Service Registers */
+               sysfabric-service@fb070000 {
+                       compatible = "al,alpine-sysfabric-service", "syscon";
+                       reg = <0x0 0xfb070000 0x0 0x10000>;
+               };
+
+               /* Performance Monitor Unit */
+               pmu {
+                       compatible = "arm,cortex-a15-pmu";
+                       interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               uart0:uart@fd883000 {
+                       compatible = "ns16550a";
+                       reg = <0x0 0xfd883000 0x0 0x1000>;
+                       clock-frequency = <0>; /* Filled by loader */
+                       interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+               };
+
+               uart1:uart@0xfd884000 {
+                       compatible = "ns16550a";
+                       reg = <0x0 0xfd884000 0x0 0x1000>;
+                       clock-frequency = <0>; /* Filled by loader */
+                       interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+               };
+
+               /* Internal PCIe Controller */
+               pcie-internal@0xfbc00000 {
+                       compatible = "pci-host-ecam-generic";
+                       device_type = "pci";
+                       #size-cells = <2>;
+                       #address-cells = <3>;
+                       #interrupt-cells = <1>;
+                       reg = <0x0 0xfbc00000 0x0 0x100000>;
+                       interrupt-map-mask = <0xf800 0 0 7>;
+                       /* Add legacy interrupts for SATA devices only */
+                       interrupt-map = <0x4000 0 0 1 &gic 0 43 4>,
+                                       <0x4800 0 0 1 &gic 0 44 4>;
+
+                       /* 32 bit non prefetchable memory space */
+                       ranges = <0x02000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
+
+                       bus-range = <0x00 0x00>;
+               };
+       };
+};