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