xref: /freebsd-src/sys/contrib/device-tree/src/arm64/bitmain/bm1880.dtsi (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
1c66ec88fSEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2c66ec88fSEmmanuel Vadot/*
3c66ec88fSEmmanuel Vadot * Copyright (c) 2019 Linaro Ltd.
4c66ec88fSEmmanuel Vadot * Author: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
5c66ec88fSEmmanuel Vadot */
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadot#include <dt-bindings/clock/bm1880-clock.h>
8c66ec88fSEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
9c66ec88fSEmmanuel Vadot#include <dt-bindings/reset/bitmain,bm1880-reset.h>
10c66ec88fSEmmanuel Vadot
11c66ec88fSEmmanuel Vadot/ {
12c66ec88fSEmmanuel Vadot	compatible = "bitmain,bm1880";
13c66ec88fSEmmanuel Vadot	interrupt-parent = <&gic>;
14c66ec88fSEmmanuel Vadot	#address-cells = <2>;
15c66ec88fSEmmanuel Vadot	#size-cells = <2>;
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel Vadot	cpus {
18c66ec88fSEmmanuel Vadot		#address-cells = <1>;
19c66ec88fSEmmanuel Vadot		#size-cells = <0>;
20c66ec88fSEmmanuel Vadot
21c66ec88fSEmmanuel Vadot		cpu0: cpu@0 {
22c66ec88fSEmmanuel Vadot			device_type = "cpu";
23c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a53";
24c66ec88fSEmmanuel Vadot			reg = <0x0>;
25c66ec88fSEmmanuel Vadot			enable-method = "psci";
26c66ec88fSEmmanuel Vadot		};
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot		cpu1: cpu@1 {
29c66ec88fSEmmanuel Vadot			device_type = "cpu";
30c66ec88fSEmmanuel Vadot			compatible = "arm,cortex-a53";
31c66ec88fSEmmanuel Vadot			reg = <0x1>;
32c66ec88fSEmmanuel Vadot			enable-method = "psci";
33c66ec88fSEmmanuel Vadot		};
34c66ec88fSEmmanuel Vadot	};
35c66ec88fSEmmanuel Vadot
36c66ec88fSEmmanuel Vadot	reserved-memory {
37c66ec88fSEmmanuel Vadot		#address-cells = <2>;
38c66ec88fSEmmanuel Vadot		#size-cells = <2>;
39c66ec88fSEmmanuel Vadot		ranges;
40c66ec88fSEmmanuel Vadot
41c66ec88fSEmmanuel Vadot		secmon@100000000 {
42c66ec88fSEmmanuel Vadot			reg = <0x1 0x00000000 0x0 0x20000>;
43c66ec88fSEmmanuel Vadot			no-map;
44c66ec88fSEmmanuel Vadot		};
45c66ec88fSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot		jpu@130000000 {
47c66ec88fSEmmanuel Vadot			reg = <0x1 0x30000000 0x0 0x08000000>; // 128M
48c66ec88fSEmmanuel Vadot			no-map;
49c66ec88fSEmmanuel Vadot		};
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel Vadot		vpu@138000000 {
52c66ec88fSEmmanuel Vadot			reg = <0x1 0x38000000 0x0 0x08000000>; // 128M
53c66ec88fSEmmanuel Vadot			no-map;
54c66ec88fSEmmanuel Vadot		};
55c66ec88fSEmmanuel Vadot	};
56c66ec88fSEmmanuel Vadot
57c66ec88fSEmmanuel Vadot	psci {
58c66ec88fSEmmanuel Vadot		compatible = "arm,psci-0.2";
59c66ec88fSEmmanuel Vadot		method = "smc";
60c66ec88fSEmmanuel Vadot	};
61c66ec88fSEmmanuel Vadot
62c66ec88fSEmmanuel Vadot	timer {
63c66ec88fSEmmanuel Vadot		compatible = "arm,armv8-timer";
64c66ec88fSEmmanuel Vadot		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
65c66ec88fSEmmanuel Vadot			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
66c66ec88fSEmmanuel Vadot			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
67c66ec88fSEmmanuel Vadot			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
68c66ec88fSEmmanuel Vadot	};
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot	osc: osc {
71c66ec88fSEmmanuel Vadot		compatible = "fixed-clock";
72c66ec88fSEmmanuel Vadot		clock-frequency = <25000000>;
73c66ec88fSEmmanuel Vadot		#clock-cells = <0>;
74c66ec88fSEmmanuel Vadot	};
75c66ec88fSEmmanuel Vadot
76c66ec88fSEmmanuel Vadot	soc {
77c66ec88fSEmmanuel Vadot		compatible = "simple-bus";
78c66ec88fSEmmanuel Vadot		#address-cells = <2>;
79c66ec88fSEmmanuel Vadot		#size-cells = <2>;
80c66ec88fSEmmanuel Vadot		ranges;
81c66ec88fSEmmanuel Vadot
82c66ec88fSEmmanuel Vadot		gic: interrupt-controller@50001000 {
83c66ec88fSEmmanuel Vadot			compatible = "arm,gic-400";
84c66ec88fSEmmanuel Vadot			reg = <0x0 0x50001000 0x0 0x1000>,
85c66ec88fSEmmanuel Vadot			      <0x0 0x50002000 0x0 0x2000>;
86c66ec88fSEmmanuel Vadot			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
87c66ec88fSEmmanuel Vadot			interrupt-controller;
88c66ec88fSEmmanuel Vadot			#interrupt-cells = <3>;
89c66ec88fSEmmanuel Vadot		};
90c66ec88fSEmmanuel Vadot
91c66ec88fSEmmanuel Vadot		sctrl: system-controller@50010000 {
92c66ec88fSEmmanuel Vadot			compatible = "bitmain,bm1880-sctrl", "syscon",
93c66ec88fSEmmanuel Vadot				     "simple-mfd";
94c66ec88fSEmmanuel Vadot			reg = <0x0 0x50010000 0x0 0x1000>;
95c66ec88fSEmmanuel Vadot			#address-cells = <1>;
96c66ec88fSEmmanuel Vadot			#size-cells = <1>;
97c66ec88fSEmmanuel Vadot			ranges = <0x0 0x0 0x50010000 0x1000>;
98c66ec88fSEmmanuel Vadot
99c66ec88fSEmmanuel Vadot			pinctrl: pinctrl@400 {
100c66ec88fSEmmanuel Vadot				compatible = "bitmain,bm1880-pinctrl";
101c66ec88fSEmmanuel Vadot				reg = <0x400 0x120>;
102c66ec88fSEmmanuel Vadot			};
103c66ec88fSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot			clk: clock-controller@e8 {
105c66ec88fSEmmanuel Vadot				compatible = "bitmain,bm1880-clk";
106c66ec88fSEmmanuel Vadot				reg = <0xe8 0x0c>, <0x800 0xb0>;
107c66ec88fSEmmanuel Vadot				reg-names = "pll", "sys";
108c66ec88fSEmmanuel Vadot				clocks = <&osc>;
109c66ec88fSEmmanuel Vadot				clock-names = "osc";
110c66ec88fSEmmanuel Vadot				#clock-cells = <1>;
111c66ec88fSEmmanuel Vadot			};
112c66ec88fSEmmanuel Vadot
113c66ec88fSEmmanuel Vadot			rst: reset-controller@c00 {
114c66ec88fSEmmanuel Vadot				compatible = "bitmain,bm1880-reset";
115c66ec88fSEmmanuel Vadot				reg = <0xc00 0x8>;
116c66ec88fSEmmanuel Vadot				#reset-cells = <1>;
117c66ec88fSEmmanuel Vadot			};
118c66ec88fSEmmanuel Vadot		};
119c66ec88fSEmmanuel Vadot
120c66ec88fSEmmanuel Vadot		gpio0: gpio@50027000 {
121c66ec88fSEmmanuel Vadot			#address-cells = <1>;
122c66ec88fSEmmanuel Vadot			#size-cells = <0>;
123c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
124c66ec88fSEmmanuel Vadot			reg = <0x0 0x50027000 0x0 0x400>;
125c66ec88fSEmmanuel Vadot
126c66ec88fSEmmanuel Vadot			porta: gpio-controller@0 {
127c66ec88fSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
128c66ec88fSEmmanuel Vadot				gpio-controller;
129c66ec88fSEmmanuel Vadot				#gpio-cells = <2>;
1305def4c47SEmmanuel Vadot				ngpios = <32>;
131c66ec88fSEmmanuel Vadot				reg = <0>;
132c66ec88fSEmmanuel Vadot				interrupt-controller;
133c66ec88fSEmmanuel Vadot				#interrupt-cells = <2>;
134c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
135c66ec88fSEmmanuel Vadot			};
136c66ec88fSEmmanuel Vadot		};
137c66ec88fSEmmanuel Vadot
138c66ec88fSEmmanuel Vadot		gpio1: gpio@50027400 {
139c66ec88fSEmmanuel Vadot			#address-cells = <1>;
140c66ec88fSEmmanuel Vadot			#size-cells = <0>;
141c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
142c66ec88fSEmmanuel Vadot			reg = <0x0 0x50027400 0x0 0x400>;
143c66ec88fSEmmanuel Vadot
144c66ec88fSEmmanuel Vadot			portb: gpio-controller@0 {
145c66ec88fSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
146c66ec88fSEmmanuel Vadot				gpio-controller;
147c66ec88fSEmmanuel Vadot				#gpio-cells = <2>;
1485def4c47SEmmanuel Vadot				ngpios = <32>;
149c66ec88fSEmmanuel Vadot				reg = <0>;
150c66ec88fSEmmanuel Vadot				interrupt-controller;
151c66ec88fSEmmanuel Vadot				#interrupt-cells = <2>;
152c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
153c66ec88fSEmmanuel Vadot			};
154c66ec88fSEmmanuel Vadot		};
155c66ec88fSEmmanuel Vadot
156c66ec88fSEmmanuel Vadot		gpio2: gpio@50027800 {
157c66ec88fSEmmanuel Vadot			#address-cells = <1>;
158c66ec88fSEmmanuel Vadot			#size-cells = <0>;
159c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-gpio";
160c66ec88fSEmmanuel Vadot			reg = <0x0 0x50027800 0x0 0x400>;
161c66ec88fSEmmanuel Vadot
162c66ec88fSEmmanuel Vadot			portc: gpio-controller@0 {
163c66ec88fSEmmanuel Vadot				compatible = "snps,dw-apb-gpio-port";
164c66ec88fSEmmanuel Vadot				gpio-controller;
165c66ec88fSEmmanuel Vadot				#gpio-cells = <2>;
1665def4c47SEmmanuel Vadot				ngpios = <8>;
167c66ec88fSEmmanuel Vadot				reg = <0>;
168c66ec88fSEmmanuel Vadot				interrupt-controller;
169c66ec88fSEmmanuel Vadot				#interrupt-cells = <2>;
170c66ec88fSEmmanuel Vadot				interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
171c66ec88fSEmmanuel Vadot			};
172c66ec88fSEmmanuel Vadot		};
173c66ec88fSEmmanuel Vadot
174c66ec88fSEmmanuel Vadot		uart0: serial@58018000 {
175c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
176c66ec88fSEmmanuel Vadot			reg = <0x0 0x58018000 0x0 0x2000>;
177c66ec88fSEmmanuel Vadot			clocks = <&clk BM1880_CLK_UART_500M>,
178c66ec88fSEmmanuel Vadot				 <&clk BM1880_CLK_APB_UART>;
179c66ec88fSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
180c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
181c66ec88fSEmmanuel Vadot			reg-shift = <2>;
182c66ec88fSEmmanuel Vadot			reg-io-width = <4>;
183c66ec88fSEmmanuel Vadot			resets = <&rst BM1880_RST_UART0_1_CLK>;
184c66ec88fSEmmanuel Vadot			status = "disabled";
185c66ec88fSEmmanuel Vadot		};
186c66ec88fSEmmanuel Vadot
187*84943d6fSEmmanuel Vadot		uart1: serial@5801a000 {
188c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
189c66ec88fSEmmanuel Vadot			reg = <0x0 0x5801a000 0x0 0x2000>;
190c66ec88fSEmmanuel Vadot			clocks = <&clk BM1880_CLK_UART_500M>,
191c66ec88fSEmmanuel Vadot				 <&clk BM1880_CLK_APB_UART>;
192c66ec88fSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
193c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
194c66ec88fSEmmanuel Vadot			reg-shift = <2>;
195c66ec88fSEmmanuel Vadot			reg-io-width = <4>;
196c66ec88fSEmmanuel Vadot			resets = <&rst BM1880_RST_UART0_1_ACLK>;
197c66ec88fSEmmanuel Vadot			status = "disabled";
198c66ec88fSEmmanuel Vadot		};
199c66ec88fSEmmanuel Vadot
200*84943d6fSEmmanuel Vadot		uart2: serial@5801c000 {
201c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
202c66ec88fSEmmanuel Vadot			reg = <0x0 0x5801c000 0x0 0x2000>;
203c66ec88fSEmmanuel Vadot			clocks = <&clk BM1880_CLK_UART_500M>,
204c66ec88fSEmmanuel Vadot				 <&clk BM1880_CLK_APB_UART>;
205c66ec88fSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
206c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
207c66ec88fSEmmanuel Vadot			reg-shift = <2>;
208c66ec88fSEmmanuel Vadot			reg-io-width = <4>;
209c66ec88fSEmmanuel Vadot			resets = <&rst BM1880_RST_UART2_3_CLK>;
210c66ec88fSEmmanuel Vadot			status = "disabled";
211c66ec88fSEmmanuel Vadot		};
212c66ec88fSEmmanuel Vadot
213*84943d6fSEmmanuel Vadot		uart3: serial@5801e000 {
214c66ec88fSEmmanuel Vadot			compatible = "snps,dw-apb-uart";
215c66ec88fSEmmanuel Vadot			reg = <0x0 0x5801e000 0x0 0x2000>;
216c66ec88fSEmmanuel Vadot			clocks = <&clk BM1880_CLK_UART_500M>,
217c66ec88fSEmmanuel Vadot				 <&clk BM1880_CLK_APB_UART>;
218c66ec88fSEmmanuel Vadot			clock-names = "baudclk", "apb_pclk";
219c66ec88fSEmmanuel Vadot			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
220c66ec88fSEmmanuel Vadot			reg-shift = <2>;
221c66ec88fSEmmanuel Vadot			reg-io-width = <4>;
222c66ec88fSEmmanuel Vadot			resets = <&rst BM1880_RST_UART2_3_ACLK>;
223c66ec88fSEmmanuel Vadot			status = "disabled";
224c66ec88fSEmmanuel Vadot		};
225c66ec88fSEmmanuel Vadot	};
226c66ec88fSEmmanuel Vadot};
227