xref: /freebsd-src/sys/contrib/device-tree/src/arm64/arm/corstone1000.dtsi (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
1aa1a8ff2SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0 OR MIT
2d5b0e70fSEmmanuel Vadot/*
3d5b0e70fSEmmanuel Vadot * Copyright (c) 2022, Arm Limited. All rights reserved.
4d5b0e70fSEmmanuel Vadot * Copyright (c) 2022, Linaro Limited. All rights reserved.
5d5b0e70fSEmmanuel Vadot *
6d5b0e70fSEmmanuel Vadot */
7d5b0e70fSEmmanuel Vadot
8d5b0e70fSEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
9d5b0e70fSEmmanuel Vadot
10d5b0e70fSEmmanuel Vadot/ {
11d5b0e70fSEmmanuel Vadot	interrupt-parent = <&gic>;
12d5b0e70fSEmmanuel Vadot	#address-cells = <1>;
13d5b0e70fSEmmanuel Vadot	#size-cells = <1>;
14d5b0e70fSEmmanuel Vadot
15d5b0e70fSEmmanuel Vadot	aliases {
16d5b0e70fSEmmanuel Vadot		serial0 = &uart0;
17d5b0e70fSEmmanuel Vadot		serial1 = &uart1;
18d5b0e70fSEmmanuel Vadot	};
19d5b0e70fSEmmanuel Vadot
20d5b0e70fSEmmanuel Vadot	chosen {
21d5b0e70fSEmmanuel Vadot		stdout-path = "serial0:115200n8";
22d5b0e70fSEmmanuel Vadot	};
23d5b0e70fSEmmanuel Vadot
24d5b0e70fSEmmanuel Vadot	cpus {
25d5b0e70fSEmmanuel Vadot		#address-cells = <1>;
26d5b0e70fSEmmanuel Vadot		#size-cells = <0>;
27d5b0e70fSEmmanuel Vadot
28d5b0e70fSEmmanuel Vadot		cpu: cpu@0 {
29d5b0e70fSEmmanuel Vadot			device_type = "cpu";
30d5b0e70fSEmmanuel Vadot			compatible = "arm,cortex-a35";
31d5b0e70fSEmmanuel Vadot			reg = <0>;
32d5b0e70fSEmmanuel Vadot			next-level-cache = <&L2_0>;
33d5b0e70fSEmmanuel Vadot		};
34d5b0e70fSEmmanuel Vadot	};
35d5b0e70fSEmmanuel Vadot
36d5b0e70fSEmmanuel Vadot	memory@88200000 {
37d5b0e70fSEmmanuel Vadot		device_type = "memory";
38d5b0e70fSEmmanuel Vadot		reg = <0x88200000 0x77e00000>;
39d5b0e70fSEmmanuel Vadot	};
40d5b0e70fSEmmanuel Vadot
41d5b0e70fSEmmanuel Vadot	gic: interrupt-controller@1c000000 {
42d5b0e70fSEmmanuel Vadot		compatible = "arm,gic-400";
43d5b0e70fSEmmanuel Vadot		#interrupt-cells = <3>;
44d5b0e70fSEmmanuel Vadot		#address-cells = <0>;
45d5b0e70fSEmmanuel Vadot		interrupt-controller;
46d5b0e70fSEmmanuel Vadot		reg = <0x1c010000 0x1000>,
47d5b0e70fSEmmanuel Vadot		      <0x1c02f000 0x2000>,
48d5b0e70fSEmmanuel Vadot		      <0x1c04f000 0x1000>,
49d5b0e70fSEmmanuel Vadot		      <0x1c06f000 0x2000>;
50d5b0e70fSEmmanuel Vadot		interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(1) |
51d5b0e70fSEmmanuel Vadot			      IRQ_TYPE_LEVEL_LOW)>;
52d5b0e70fSEmmanuel Vadot	};
53d5b0e70fSEmmanuel Vadot
54d5b0e70fSEmmanuel Vadot	L2_0: l2-cache0 {
55d5b0e70fSEmmanuel Vadot		compatible = "cache";
568bab661aSEmmanuel Vadot		cache-unified;
57d5b0e70fSEmmanuel Vadot		cache-level = <2>;
58d5b0e70fSEmmanuel Vadot		cache-size = <0x80000>;
59d5b0e70fSEmmanuel Vadot		cache-line-size = <64>;
60d5b0e70fSEmmanuel Vadot		cache-sets = <1024>;
61d5b0e70fSEmmanuel Vadot	};
62d5b0e70fSEmmanuel Vadot
63*0e8011faSEmmanuel Vadot	refclk100mhz: clock-100000000 {
64d5b0e70fSEmmanuel Vadot		compatible = "fixed-clock";
65d5b0e70fSEmmanuel Vadot		#clock-cells = <0>;
66d5b0e70fSEmmanuel Vadot		clock-frequency = <100000000>;
67d5b0e70fSEmmanuel Vadot		clock-output-names = "apb_pclk";
68d5b0e70fSEmmanuel Vadot	};
69d5b0e70fSEmmanuel Vadot
70*0e8011faSEmmanuel Vadot	smbclk: clock-48000000 {
71d5b0e70fSEmmanuel Vadot		/* Reference 24MHz clock x 2 */
72d5b0e70fSEmmanuel Vadot		compatible = "fixed-clock";
73d5b0e70fSEmmanuel Vadot		#clock-cells = <0>;
74d5b0e70fSEmmanuel Vadot		clock-frequency = <48000000>;
75d5b0e70fSEmmanuel Vadot		clock-output-names = "smclk";
76d5b0e70fSEmmanuel Vadot	};
77d5b0e70fSEmmanuel Vadot
78d5b0e70fSEmmanuel Vadot	timer {
79d5b0e70fSEmmanuel Vadot		compatible = "arm,armv8-timer";
80aa1a8ff2SEmmanuel Vadot		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
81aa1a8ff2SEmmanuel Vadot			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
82aa1a8ff2SEmmanuel Vadot			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>,
83aa1a8ff2SEmmanuel Vadot			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(1) | IRQ_TYPE_LEVEL_LOW)>;
84d5b0e70fSEmmanuel Vadot	};
85d5b0e70fSEmmanuel Vadot
86*0e8011faSEmmanuel Vadot	uartclk: clock-50000000 {
87d5b0e70fSEmmanuel Vadot		/* UART clock - 50MHz */
88d5b0e70fSEmmanuel Vadot		compatible = "fixed-clock";
89d5b0e70fSEmmanuel Vadot		#clock-cells = <0>;
90d5b0e70fSEmmanuel Vadot		clock-frequency = <50000000>;
91d5b0e70fSEmmanuel Vadot		clock-output-names = "uartclk";
92d5b0e70fSEmmanuel Vadot	};
93d5b0e70fSEmmanuel Vadot
94d5b0e70fSEmmanuel Vadot	psci {
95d5b0e70fSEmmanuel Vadot		compatible = "arm,psci-1.0", "arm,psci-0.2";
96d5b0e70fSEmmanuel Vadot		method = "smc";
97d5b0e70fSEmmanuel Vadot	};
98d5b0e70fSEmmanuel Vadot
99d5b0e70fSEmmanuel Vadot	soc {
100d5b0e70fSEmmanuel Vadot		compatible = "simple-bus";
101d5b0e70fSEmmanuel Vadot		#address-cells = <1>;
102d5b0e70fSEmmanuel Vadot		#size-cells = <1>;
103d5b0e70fSEmmanuel Vadot		interrupt-parent = <&gic>;
104d5b0e70fSEmmanuel Vadot		ranges;
105d5b0e70fSEmmanuel Vadot
106d5b0e70fSEmmanuel Vadot		timer@1a220000 {
107d5b0e70fSEmmanuel Vadot			compatible = "arm,armv7-timer-mem";
108d5b0e70fSEmmanuel Vadot			reg = <0x1a220000 0x1000>;
109d5b0e70fSEmmanuel Vadot			#address-cells = <1>;
110d5b0e70fSEmmanuel Vadot			#size-cells = <1>;
111d5b0e70fSEmmanuel Vadot			clock-frequency = <50000000>;
112d5b0e70fSEmmanuel Vadot			ranges;
113d5b0e70fSEmmanuel Vadot
114d5b0e70fSEmmanuel Vadot			frame@1a230000 {
115d5b0e70fSEmmanuel Vadot				frame-number = <0>;
116d5b0e70fSEmmanuel Vadot				interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
117d5b0e70fSEmmanuel Vadot				reg = <0x1a230000 0x1000>;
118d5b0e70fSEmmanuel Vadot			};
119d5b0e70fSEmmanuel Vadot		};
120d5b0e70fSEmmanuel Vadot
121d5b0e70fSEmmanuel Vadot		uart0: serial@1a510000 {
122d5b0e70fSEmmanuel Vadot			compatible = "arm,pl011", "arm,primecell";
123d5b0e70fSEmmanuel Vadot			reg = <0x1a510000 0x1000>;
124d5b0e70fSEmmanuel Vadot			interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
125d5b0e70fSEmmanuel Vadot			clocks = <&uartclk>, <&refclk100mhz>;
126d5b0e70fSEmmanuel Vadot			clock-names = "uartclk", "apb_pclk";
127d5b0e70fSEmmanuel Vadot		};
128d5b0e70fSEmmanuel Vadot
129d5b0e70fSEmmanuel Vadot		uart1: serial@1a520000 {
130d5b0e70fSEmmanuel Vadot			compatible = "arm,pl011", "arm,primecell";
131d5b0e70fSEmmanuel Vadot			reg = <0x1a520000 0x1000>;
132d5b0e70fSEmmanuel Vadot			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
133d5b0e70fSEmmanuel Vadot			clocks = <&uartclk>, <&refclk100mhz>;
134d5b0e70fSEmmanuel Vadot			clock-names = "uartclk", "apb_pclk";
135d5b0e70fSEmmanuel Vadot		};
136d5b0e70fSEmmanuel Vadot
137d5b0e70fSEmmanuel Vadot		mhu_hse1: mailbox@1b820000 {
138d5b0e70fSEmmanuel Vadot			compatible = "arm,mhuv2-tx", "arm,primecell";
139d5b0e70fSEmmanuel Vadot			reg = <0x1b820000 0x1000>;
140d5b0e70fSEmmanuel Vadot			clocks = <&refclk100mhz>;
141d5b0e70fSEmmanuel Vadot			clock-names = "apb_pclk";
142d5b0e70fSEmmanuel Vadot			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
143d5b0e70fSEmmanuel Vadot			#mbox-cells = <2>;
144d5b0e70fSEmmanuel Vadot			arm,mhuv2-protocols = <0 0>;
145d5b0e70fSEmmanuel Vadot			secure-status = "okay";     /* secure-world-only */
146d5b0e70fSEmmanuel Vadot			status = "disabled";
147d5b0e70fSEmmanuel Vadot		};
148d5b0e70fSEmmanuel Vadot
149d5b0e70fSEmmanuel Vadot		mhu_seh1: mailbox@1b830000 {
150d5b0e70fSEmmanuel Vadot			compatible = "arm,mhuv2-rx", "arm,primecell";
151d5b0e70fSEmmanuel Vadot			reg = <0x1b830000 0x1000>;
152d5b0e70fSEmmanuel Vadot			clocks = <&refclk100mhz>;
153d5b0e70fSEmmanuel Vadot			clock-names = "apb_pclk";
154d5b0e70fSEmmanuel Vadot			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
155d5b0e70fSEmmanuel Vadot			#mbox-cells = <2>;
156d5b0e70fSEmmanuel Vadot			arm,mhuv2-protocols = <0 0>;
157d5b0e70fSEmmanuel Vadot			secure-status = "okay";     /* secure-world-only */
158d5b0e70fSEmmanuel Vadot			status = "disabled";
159d5b0e70fSEmmanuel Vadot		};
160d5b0e70fSEmmanuel Vadot	};
161d5b0e70fSEmmanuel Vadot};
162