1*724ba675SRob Herring/*
2*724ba675SRob Herring * Copyright 2015 Annapurna Labs Ltd.
3*724ba675SRob Herring *
4*724ba675SRob Herring * This program is free software; you can redistribute it and/or modify it
5*724ba675SRob Herring * under the terms and conditions of the GNU General Public License,
6*724ba675SRob Herring * version 2, as published by the Free Software Foundation.
7*724ba675SRob Herring *
8*724ba675SRob Herring * Alternatively, redistribution and use in source and binary forms, with or
9*724ba675SRob Herring * without modification, are permitted provided that the following conditions
10*724ba675SRob Herring * are met:
11*724ba675SRob Herring *
12*724ba675SRob Herring *   *   Redistributions of source code must retain the above copyright notice,
13*724ba675SRob Herring *       this list of conditions and the following disclaimer.
14*724ba675SRob Herring *
15*724ba675SRob Herring *   *   Redistributions in binary form must reproduce the above copyright
16*724ba675SRob Herring *       notice, this list of conditions and the following disclaimer in
17*724ba675SRob Herring *       the documentation and/or other materials provided with the
18*724ba675SRob Herring *       distribution.
19*724ba675SRob Herring *
20*724ba675SRob Herring * This program is distributed in the hope it will be useful, but WITHOUT
21*724ba675SRob Herring * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
22*724ba675SRob Herring * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
23*724ba675SRob Herring * more details.
24*724ba675SRob Herring *
25*724ba675SRob Herring */
26*724ba675SRob Herring
27*724ba675SRob Herring#include <dt-bindings/interrupt-controller/arm-gic.h>
28*724ba675SRob Herring
29*724ba675SRob Herring/ {
30*724ba675SRob Herring	#address-cells = <2>;
31*724ba675SRob Herring	#size-cells = <2>;
32*724ba675SRob Herring	/* SOC compatibility */
33*724ba675SRob Herring	compatible = "al,alpine";
34*724ba675SRob Herring
35*724ba675SRob Herring	memory {
36*724ba675SRob Herring		device_type = "memory";
37*724ba675SRob Herring		reg = <0 0 0 0>;
38*724ba675SRob Herring	};
39*724ba675SRob Herring
40*724ba675SRob Herring	/* CPU Configuration */
41*724ba675SRob Herring	cpus {
42*724ba675SRob Herring		#address-cells = <1>;
43*724ba675SRob Herring		#size-cells = <0>;
44*724ba675SRob Herring		enable-method = "al,alpine-smp";
45*724ba675SRob Herring
46*724ba675SRob Herring		cpu@0 {
47*724ba675SRob Herring			compatible = "arm,cortex-a15";
48*724ba675SRob Herring			device_type = "cpu";
49*724ba675SRob Herring			reg = <0>;
50*724ba675SRob Herring			clock-frequency = <1700000000>;
51*724ba675SRob Herring		};
52*724ba675SRob Herring
53*724ba675SRob Herring		cpu@1 {
54*724ba675SRob Herring			compatible = "arm,cortex-a15";
55*724ba675SRob Herring			device_type = "cpu";
56*724ba675SRob Herring			reg = <1>;
57*724ba675SRob Herring			clock-frequency = <1700000000>;
58*724ba675SRob Herring		};
59*724ba675SRob Herring
60*724ba675SRob Herring		cpu@2 {
61*724ba675SRob Herring			compatible = "arm,cortex-a15";
62*724ba675SRob Herring			device_type = "cpu";
63*724ba675SRob Herring			reg = <2>;
64*724ba675SRob Herring			clock-frequency = <1700000000>;
65*724ba675SRob Herring		};
66*724ba675SRob Herring
67*724ba675SRob Herring		cpu@3 {
68*724ba675SRob Herring			compatible = "arm,cortex-a15";
69*724ba675SRob Herring			device_type = "cpu";
70*724ba675SRob Herring			reg = <3>;
71*724ba675SRob Herring			clock-frequency = <1700000000>;
72*724ba675SRob Herring		};
73*724ba675SRob Herring	};
74*724ba675SRob Herring
75*724ba675SRob Herring	soc {
76*724ba675SRob Herring		#address-cells = <2>;
77*724ba675SRob Herring		#size-cells = <2>;
78*724ba675SRob Herring		compatible = "simple-bus";
79*724ba675SRob Herring		interrupt-parent = <&gic>;
80*724ba675SRob Herring		ranges;
81*724ba675SRob Herring
82*724ba675SRob Herring		arch-timer {
83*724ba675SRob Herring			compatible = "arm,cortex-a15-timer",
84*724ba675SRob Herring				     "arm,armv7-timer";
85*724ba675SRob Herring			interrupts =
86*724ba675SRob Herring				<GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
87*724ba675SRob Herring				<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
88*724ba675SRob Herring				<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
89*724ba675SRob Herring				<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
90*724ba675SRob Herring			clock-frequency = <50000000>;
91*724ba675SRob Herring		};
92*724ba675SRob Herring
93*724ba675SRob Herring		/* Interrupt Controller */
94*724ba675SRob Herring		gic: interrupt-controller@fb001000 {
95*724ba675SRob Herring			compatible = "arm,cortex-a15-gic";
96*724ba675SRob Herring			#interrupt-cells = <3>;
97*724ba675SRob Herring			#size-cells = <0>;
98*724ba675SRob Herring			#address-cells = <0>;
99*724ba675SRob Herring			interrupt-controller;
100*724ba675SRob Herring			reg = <0x0 0xfb001000 0x0 0x1000>,
101*724ba675SRob Herring			      <0x0 0xfb002000 0x0 0x2000>,
102*724ba675SRob Herring			      <0x0 0xfb004000 0x0 0x2000>,
103*724ba675SRob Herring			      <0x0 0xfb006000 0x0 0x2000>;
104*724ba675SRob Herring			interrupts =
105*724ba675SRob Herring				<GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
106*724ba675SRob Herring		};
107*724ba675SRob Herring
108*724ba675SRob Herring		/* CPU Resume registers */
109*724ba675SRob Herring		cpu-resume@fbff5ec0 {
110*724ba675SRob Herring			compatible = "al,alpine-cpu-resume";
111*724ba675SRob Herring			reg = <0x0 0xfbff5ec0 0x0 0x30>;
112*724ba675SRob Herring		};
113*724ba675SRob Herring
114*724ba675SRob Herring		/* North Bridge Service Registers */
115*724ba675SRob Herring		sysfabric-service@fb070000 {
116*724ba675SRob Herring			compatible = "al,alpine-sysfabric-service", "syscon";
117*724ba675SRob Herring			reg = <0x0 0xfb070000 0x0 0x10000>;
118*724ba675SRob Herring		};
119*724ba675SRob Herring
120*724ba675SRob Herring		/* Performance Monitor Unit */
121*724ba675SRob Herring		pmu {
122*724ba675SRob Herring			compatible = "arm,cortex-a15-pmu";
123*724ba675SRob Herring			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
124*724ba675SRob Herring				     <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
125*724ba675SRob Herring				     <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
126*724ba675SRob Herring				     <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
127*724ba675SRob Herring		};
128*724ba675SRob Herring
129*724ba675SRob Herring		uart0: serial@fd883000 {
130*724ba675SRob Herring			compatible = "ns16550a";
131*724ba675SRob Herring			reg = <0x0 0xfd883000 0x0 0x1000>;
132*724ba675SRob Herring			clock-frequency = <375000000>;
133*724ba675SRob Herring			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
134*724ba675SRob Herring			reg-shift = <2>;
135*724ba675SRob Herring			reg-io-width = <4>;
136*724ba675SRob Herring		};
137*724ba675SRob Herring
138*724ba675SRob Herring		uart1: serial@fd884000 {
139*724ba675SRob Herring			compatible = "ns16550a";
140*724ba675SRob Herring			reg = <0x0 0xfd884000 0x0 0x1000>;
141*724ba675SRob Herring			clock-frequency = <375000000>;
142*724ba675SRob Herring			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
143*724ba675SRob Herring			reg-shift = <2>;
144*724ba675SRob Herring			reg-io-width = <4>;
145*724ba675SRob Herring		};
146*724ba675SRob Herring
147*724ba675SRob Herring		/* Internal PCIe Controller */
148*724ba675SRob Herring		pcie@fbc00000 {
149*724ba675SRob Herring			compatible = "pci-host-ecam-generic";
150*724ba675SRob Herring			device_type = "pci";
151*724ba675SRob Herring			#size-cells = <2>;
152*724ba675SRob Herring			#address-cells = <3>;
153*724ba675SRob Herring			#interrupt-cells = <1>;
154*724ba675SRob Herring			reg = <0x0 0xfbc00000 0x0 0x100000>;
155*724ba675SRob Herring			interrupt-map-mask = <0xf800 0 0 7>;
156*724ba675SRob Herring			/* Add legacy interrupts for SATA devices only */
157*724ba675SRob Herring			interrupt-map = <0x4000 0 0 1 &gic 0 43 4>,
158*724ba675SRob Herring					<0x4800 0 0 1 &gic 0 44 4>;
159*724ba675SRob Herring
160*724ba675SRob Herring			/* 32 bit non prefetchable memory space */
161*724ba675SRob Herring			ranges = <0x02000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
162*724ba675SRob Herring
163*724ba675SRob Herring			bus-range = <0x00 0x00>;
164*724ba675SRob Herring			msi-parent = <&msix>;
165*724ba675SRob Herring		};
166*724ba675SRob Herring
167*724ba675SRob Herring		msix: msix@fbe00000 {
168*724ba675SRob Herring			compatible = "al,alpine-msix";
169*724ba675SRob Herring			reg = <0x0 0xfbe00000 0x0 0x100000>;
170*724ba675SRob Herring			msi-controller;
171*724ba675SRob Herring			al,msi-base-spi = <96>;
172*724ba675SRob Herring			al,msi-num-spis = <64>;
173*724ba675SRob Herring		};
174*724ba675SRob Herring	};
175*724ba675SRob Herring};
176