xref: /freebsd/sys/contrib/device-tree/src/arm64/amazon/alpine-v2.dtsi (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1c66ec88fSEmmanuel Vadot/*
2c66ec88fSEmmanuel Vadot * Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3c66ec88fSEmmanuel Vadot *
4c66ec88fSEmmanuel Vadot * Antoine Tenart <antoine.tenart@free-electrons.com>
5c66ec88fSEmmanuel Vadot *
6c66ec88fSEmmanuel Vadot * This software is available to you under a choice of one of two
7c66ec88fSEmmanuel Vadot * licenses.  You may choose to be licensed under the terms of the GNU
8c66ec88fSEmmanuel Vadot * General Public License (GPL) Version 2, available from the file
9c66ec88fSEmmanuel Vadot * COPYING in the main directory of this source tree, or the
10c66ec88fSEmmanuel Vadot * BSD license below:
11c66ec88fSEmmanuel Vadot *
12c66ec88fSEmmanuel Vadot *     Redistribution and use in source and binary forms, with or
13c66ec88fSEmmanuel Vadot *     without modification, are permitted provided that the following
14c66ec88fSEmmanuel Vadot *     conditions are met:
15c66ec88fSEmmanuel Vadot *
16c66ec88fSEmmanuel Vadot *      - Redistributions of source code must retain the above
17c66ec88fSEmmanuel Vadot *        copyright notice, this list of conditions and the following
18c66ec88fSEmmanuel Vadot *        disclaimer.
19c66ec88fSEmmanuel Vadot *
20c66ec88fSEmmanuel Vadot *      - Redistributions in binary form must reproduce the above
21c66ec88fSEmmanuel Vadot *        copyright notice, this list of conditions and the following
22c66ec88fSEmmanuel Vadot *        disclaimer in the documentation and/or other materials
23c66ec88fSEmmanuel Vadot *        provided with the distribution.
24c66ec88fSEmmanuel Vadot *
25c66ec88fSEmmanuel Vadot * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26c66ec88fSEmmanuel Vadot * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27c66ec88fSEmmanuel Vadot * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28c66ec88fSEmmanuel Vadot * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29c66ec88fSEmmanuel Vadot * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30c66ec88fSEmmanuel Vadot * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31c66ec88fSEmmanuel Vadot * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32c66ec88fSEmmanuel Vadot * SOFTWARE.
33c66ec88fSEmmanuel Vadot */
34c66ec88fSEmmanuel Vadot
35c66ec88fSEmmanuel Vadot/dts-v1/;
36c66ec88fSEmmanuel Vadot
37c66ec88fSEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
38c66ec88fSEmmanuel Vadot
39c66ec88fSEmmanuel Vadot/ {
40c66ec88fSEmmanuel Vadot	model = "Annapurna Labs Alpine v2";
41c66ec88fSEmmanuel Vadot	compatible = "al,alpine-v2";
42c66ec88fSEmmanuel Vadot	#address-cells = <2>;
43c66ec88fSEmmanuel Vadot	#size-cells = <2>;
44c66ec88fSEmmanuel Vadot
45c66ec88fSEmmanuel Vadot	cpus {
46c66ec88fSEmmanuel Vadot		#address-cells = <2>;
47c66ec88fSEmmanuel Vadot		#size-cells = <0>;
48c66ec88fSEmmanuel Vadot
49c66ec88fSEmmanuel Vadot		cpu@0 {
50c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a57";
51c66ec88fSEmmanuel Vadot			device_type = "cpu";
52c66ec88fSEmmanuel Vadot			reg = <0x0 0x0>;
53c66ec88fSEmmanuel Vadot			enable-method = "psci";
54c66ec88fSEmmanuel Vadot		};
55c66ec88fSEmmanuel Vadot
56c66ec88fSEmmanuel Vadot		cpu@1 {
57c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a57";
58c66ec88fSEmmanuel Vadot			device_type = "cpu";
59c66ec88fSEmmanuel Vadot			reg = <0x0 0x1>;
60c66ec88fSEmmanuel Vadot			enable-method = "psci";
61c66ec88fSEmmanuel Vadot		};
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadot		cpu@2 {
64c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a57";
65c66ec88fSEmmanuel Vadot			device_type = "cpu";
66c66ec88fSEmmanuel Vadot			reg = <0x0 0x2>;
67c66ec88fSEmmanuel Vadot			enable-method = "psci";
68c66ec88fSEmmanuel Vadot		};
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot		cpu@3 {
71c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a57";
72c66ec88fSEmmanuel Vadot			device_type = "cpu";
73c66ec88fSEmmanuel Vadot			reg = <0x0 0x3>;
74c66ec88fSEmmanuel Vadot			enable-method = "psci";
75c66ec88fSEmmanuel Vadot		};
76c66ec88fSEmmanuel Vadot	};
77c66ec88fSEmmanuel Vadot
78c66ec88fSEmmanuel Vadot	psci {
79c66ec88fSEmmanuel Vadot		compatible = "arm,psci-0.2", "arm,psci";
80c66ec88fSEmmanuel Vadot		method = "smc";
81c66ec88fSEmmanuel Vadot		cpu_suspend = <0x84000001>;
82c66ec88fSEmmanuel Vadot		cpu_off = <0x84000002>;
83c66ec88fSEmmanuel Vadot		cpu_on = <0x84000003>;
84c66ec88fSEmmanuel Vadot	};
85c66ec88fSEmmanuel Vadot
86c66ec88fSEmmanuel Vadot	sbclk: sbclk {
87c66ec88fSEmmanuel Vadot		compatible = "fixed-clock";
88c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
89c66ec88fSEmmanuel Vadot		clock-frequency = <1000000>;
90c66ec88fSEmmanuel Vadot	};
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot	soc {
93c66ec88fSEmmanuel Vadot		compatible = "simple-bus";
94c66ec88fSEmmanuel Vadot		#address-cells = <2>;
95c66ec88fSEmmanuel Vadot		#size-cells = <2>;
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot		interrupt-parent = <&gic>;
98c66ec88fSEmmanuel Vadot		ranges;
99c66ec88fSEmmanuel Vadot
100c66ec88fSEmmanuel Vadot		timer {
101c66ec88fSEmmanuel Vadot			compatible = "arm,armv8-timer";
102c66ec88fSEmmanuel Vadot			interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
103c66ec88fSEmmanuel Vadot				     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
104c66ec88fSEmmanuel Vadot				     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
105c66ec88fSEmmanuel Vadot				     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
106c66ec88fSEmmanuel Vadot		};
107c66ec88fSEmmanuel Vadot
108c66ec88fSEmmanuel Vadot		pmu {
109c66ec88fSEmmanuel Vadot			compatible = "arm,armv8-pmuv3";
110c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
111c66ec88fSEmmanuel Vadot				     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
112c66ec88fSEmmanuel Vadot				     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
113c66ec88fSEmmanuel Vadot				     <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
114c66ec88fSEmmanuel Vadot		};
115c66ec88fSEmmanuel Vadot
116*6be33864SEmmanuel Vadot		gic: interrupt-controller@f0200000 {
117c66ec88fSEmmanuel Vadot			compatible = "arm,gic-v3";
118c66ec88fSEmmanuel Vadot			reg = <0x0 0xf0200000 0x0 0x10000>,	/* GIC Dist */
119c66ec88fSEmmanuel Vadot			      <0x0 0xf0280000 0x0 0x200000>,	/* GICR */
120c66ec88fSEmmanuel Vadot			      <0x0 0xf0100000 0x0 0x2000>,	/* GICC */
121c66ec88fSEmmanuel Vadot			      <0x0 0xf0110000 0x0 0x2000>,	/* GICV */
122c66ec88fSEmmanuel Vadot			      <0x0 0xf0120000 0x0 0x2000>;	/* GICH */
123c66ec88fSEmmanuel Vadot			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
124c66ec88fSEmmanuel Vadot			interrupt-controller;
125c66ec88fSEmmanuel Vadot			#interrupt-cells = <3>;
126c66ec88fSEmmanuel Vadot		};
127c66ec88fSEmmanuel Vadot
128c66ec88fSEmmanuel Vadot		pci@fbc00000 {
129c66ec88fSEmmanuel Vadot			compatible = "pci-host-ecam-generic";
130c66ec88fSEmmanuel Vadot			device_type = "pci";
131c66ec88fSEmmanuel Vadot			#size-cells = <2>;
132c66ec88fSEmmanuel Vadot			#address-cells = <3>;
133c66ec88fSEmmanuel Vadot			#interrupt-cells = <1>;
134c66ec88fSEmmanuel Vadot			reg = <0x0 0xfbc00000 0x0 0x100000>;
135c66ec88fSEmmanuel Vadot			interrupt-map-mask = <0xf800 0 0 7>;
136c66ec88fSEmmanuel Vadot			/* add legacy interrupts for SATA only */
137c66ec88fSEmmanuel Vadot			interrupt-map = <0x4000 0 0 1 &gic 0 53 4>,
138c66ec88fSEmmanuel Vadot					<0x4800 0 0 1 &gic 0 54 4>;
139c66ec88fSEmmanuel Vadot			/* 32 bit non prefetchable memory space */
140c66ec88fSEmmanuel Vadot			ranges = <0x2000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
141c66ec88fSEmmanuel Vadot			bus-range = <0x00 0x00>;
142c66ec88fSEmmanuel Vadot			msi-parent = <&msix>;
143c66ec88fSEmmanuel Vadot		};
144c66ec88fSEmmanuel Vadot
145c66ec88fSEmmanuel Vadot		msix: msix@fbe00000 {
146c66ec88fSEmmanuel Vadot			compatible = "al,alpine-msix";
147c66ec88fSEmmanuel Vadot			reg = <0x0 0xfbe00000 0x0 0x100000>;
148c66ec88fSEmmanuel Vadot			msi-controller;
149c66ec88fSEmmanuel Vadot			al,msi-base-spi = <160>;
150c66ec88fSEmmanuel Vadot			al,msi-num-spis = <160>;
151c66ec88fSEmmanuel Vadot		};
152c66ec88fSEmmanuel Vadot
153c66ec88fSEmmanuel Vadot		io-fabric {
154c66ec88fSEmmanuel Vadot			compatible = "simple-bus";
155c66ec88fSEmmanuel Vadot			#address-cells = <1>;
156c66ec88fSEmmanuel Vadot			#size-cells = <1>;
157c66ec88fSEmmanuel Vadot			ranges = <0x0 0x0 0xfc000000 0x2000000>;
158c66ec88fSEmmanuel Vadot
159c66ec88fSEmmanuel Vadot			uart0: serial@1883000 {
160c66ec88fSEmmanuel Vadot				compatible = "ns16550a";
161c66ec88fSEmmanuel Vadot				reg = <0x1883000 0x1000>;
162c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
163c66ec88fSEmmanuel Vadot				clock-frequency = <500000000>;
164c66ec88fSEmmanuel Vadot				reg-shift = <2>;
165c66ec88fSEmmanuel Vadot				reg-io-width = <4>;
166c66ec88fSEmmanuel Vadot				status = "disabled";
167c66ec88fSEmmanuel Vadot			};
168c66ec88fSEmmanuel Vadot
169c66ec88fSEmmanuel Vadot			uart1: serial@1884000 {
170c66ec88fSEmmanuel Vadot				compatible = "ns16550a";
171c66ec88fSEmmanuel Vadot				reg = <0x1884000 0x1000>;
172c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
173c66ec88fSEmmanuel Vadot				clock-frequency = <500000000>;
174c66ec88fSEmmanuel Vadot				reg-shift = <2>;
175c66ec88fSEmmanuel Vadot				reg-io-width = <4>;
176c66ec88fSEmmanuel Vadot				status = "disabled";
177c66ec88fSEmmanuel Vadot			};
178c66ec88fSEmmanuel Vadot
179c66ec88fSEmmanuel Vadot			uart2: serial@1885000 {
180c66ec88fSEmmanuel Vadot				compatible = "ns16550a";
181c66ec88fSEmmanuel Vadot				reg = <0x1885000 0x1000>;
182c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
183c66ec88fSEmmanuel Vadot				clock-frequency = <500000000>;
184c66ec88fSEmmanuel Vadot				reg-shift = <2>;
185c66ec88fSEmmanuel Vadot				reg-io-width = <4>;
186c66ec88fSEmmanuel Vadot				status = "disabled";
187c66ec88fSEmmanuel Vadot			};
188c66ec88fSEmmanuel Vadot
189c66ec88fSEmmanuel Vadot			uart3: serial@1886000 {
190c66ec88fSEmmanuel Vadot				compatible = "ns16550a";
191c66ec88fSEmmanuel Vadot				reg = <0x1886000 0x1000>;
192c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
193c66ec88fSEmmanuel Vadot				clock-frequency = <500000000>;
194c66ec88fSEmmanuel Vadot				reg-shift = <2>;
195c66ec88fSEmmanuel Vadot				reg-io-width = <4>;
196c66ec88fSEmmanuel Vadot				status = "disabled";
197c66ec88fSEmmanuel Vadot			};
198c66ec88fSEmmanuel Vadot
199c66ec88fSEmmanuel Vadot			timer0: timer@1890000 {
200c66ec88fSEmmanuel Vadot				compatible = "arm,sp804", "arm,primecell";
201c66ec88fSEmmanuel Vadot				reg = <0x1890000 0x1000>;
202c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
203c66ec88fSEmmanuel Vadot				clocks = <&sbclk>;
204c66ec88fSEmmanuel Vadot			};
205c66ec88fSEmmanuel Vadot
206c66ec88fSEmmanuel Vadot			timer1: timer@1891000 {
207c66ec88fSEmmanuel Vadot				compatible = "arm,sp804", "arm,primecell";
208c66ec88fSEmmanuel Vadot				reg = <0x1891000 0x1000>;
209c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
210c66ec88fSEmmanuel Vadot				clocks = <&sbclk>;
211c66ec88fSEmmanuel Vadot				status = "disabled";
212c66ec88fSEmmanuel Vadot			};
213c66ec88fSEmmanuel Vadot
214c66ec88fSEmmanuel Vadot			timer2: timer@1892000 {
215c66ec88fSEmmanuel Vadot				compatible = "arm,sp804", "arm,primecell";
216c66ec88fSEmmanuel Vadot				reg = <0x1892000 0x1000>;
217c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
218c66ec88fSEmmanuel Vadot				clocks = <&sbclk>;
219c66ec88fSEmmanuel Vadot				status = "disabled";
220c66ec88fSEmmanuel Vadot			};
221c66ec88fSEmmanuel Vadot
222c66ec88fSEmmanuel Vadot			timer3: timer@1893000 {
223c66ec88fSEmmanuel Vadot				compatible = "arm,sp804", "arm,primecell";
224c66ec88fSEmmanuel Vadot				reg = <0x1893000 0x1000>;
225c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
226c66ec88fSEmmanuel Vadot				clocks = <&sbclk>;
227c66ec88fSEmmanuel Vadot				status = "disabled";
228c66ec88fSEmmanuel Vadot			};
229c66ec88fSEmmanuel Vadot		};
230c66ec88fSEmmanuel Vadot	};
231c66ec88fSEmmanuel Vadot};
232