xref: /openbmc/linux/arch/arm64/boot/dts/qcom/ipq5018.dtsi (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1*57000675SSricharan Ramabadhran// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
2*57000675SSricharan Ramabadhran/*
3*57000675SSricharan Ramabadhran * IPQ5018 SoC device tree source
4*57000675SSricharan Ramabadhran *
5*57000675SSricharan Ramabadhran * Copyright (c) 2023 The Linux Foundation. All rights reserved.
6*57000675SSricharan Ramabadhran */
7*57000675SSricharan Ramabadhran
8*57000675SSricharan Ramabadhran#include <dt-bindings/interrupt-controller/arm-gic.h>
9*57000675SSricharan Ramabadhran#include <dt-bindings/clock/qcom,gcc-ipq5018.h>
10*57000675SSricharan Ramabadhran#include <dt-bindings/reset/qcom,gcc-ipq5018.h>
11*57000675SSricharan Ramabadhran
12*57000675SSricharan Ramabadhran/ {
13*57000675SSricharan Ramabadhran	interrupt-parent = <&intc>;
14*57000675SSricharan Ramabadhran	#address-cells = <2>;
15*57000675SSricharan Ramabadhran	#size-cells = <2>;
16*57000675SSricharan Ramabadhran
17*57000675SSricharan Ramabadhran	clocks {
18*57000675SSricharan Ramabadhran		sleep_clk: sleep-clk {
19*57000675SSricharan Ramabadhran			compatible = "fixed-clock";
20*57000675SSricharan Ramabadhran			#clock-cells = <0>;
21*57000675SSricharan Ramabadhran		};
22*57000675SSricharan Ramabadhran
23*57000675SSricharan Ramabadhran		xo_board_clk: xo-board-clk {
24*57000675SSricharan Ramabadhran			compatible = "fixed-clock";
25*57000675SSricharan Ramabadhran			#clock-cells = <0>;
26*57000675SSricharan Ramabadhran		};
27*57000675SSricharan Ramabadhran	};
28*57000675SSricharan Ramabadhran
29*57000675SSricharan Ramabadhran	cpus {
30*57000675SSricharan Ramabadhran		#address-cells = <1>;
31*57000675SSricharan Ramabadhran		#size-cells = <0>;
32*57000675SSricharan Ramabadhran
33*57000675SSricharan Ramabadhran		CPU0: cpu@0 {
34*57000675SSricharan Ramabadhran			device_type = "cpu";
35*57000675SSricharan Ramabadhran			compatible = "arm,cortex-a53";
36*57000675SSricharan Ramabadhran			reg = <0x0>;
37*57000675SSricharan Ramabadhran			enable-method = "psci";
38*57000675SSricharan Ramabadhran			next-level-cache = <&L2_0>;
39*57000675SSricharan Ramabadhran		};
40*57000675SSricharan Ramabadhran
41*57000675SSricharan Ramabadhran		CPU1: cpu@1 {
42*57000675SSricharan Ramabadhran			device_type = "cpu";
43*57000675SSricharan Ramabadhran			compatible = "arm,cortex-a53";
44*57000675SSricharan Ramabadhran			reg = <0x1>;
45*57000675SSricharan Ramabadhran			enable-method = "psci";
46*57000675SSricharan Ramabadhran			next-level-cache = <&L2_0>;
47*57000675SSricharan Ramabadhran		};
48*57000675SSricharan Ramabadhran
49*57000675SSricharan Ramabadhran		L2_0: l2-cache {
50*57000675SSricharan Ramabadhran			compatible = "cache";
51*57000675SSricharan Ramabadhran			cache-level = <2>;
52*57000675SSricharan Ramabadhran			cache-size = <0x80000>;
53*57000675SSricharan Ramabadhran			cache-unified;
54*57000675SSricharan Ramabadhran		};
55*57000675SSricharan Ramabadhran	};
56*57000675SSricharan Ramabadhran
57*57000675SSricharan Ramabadhran	firmware {
58*57000675SSricharan Ramabadhran		scm {
59*57000675SSricharan Ramabadhran			compatible = "qcom,scm-ipq5018", "qcom,scm";
60*57000675SSricharan Ramabadhran		};
61*57000675SSricharan Ramabadhran	};
62*57000675SSricharan Ramabadhran
63*57000675SSricharan Ramabadhran	memory@40000000 {
64*57000675SSricharan Ramabadhran		device_type = "memory";
65*57000675SSricharan Ramabadhran		/* We expect the bootloader to fill in the size */
66*57000675SSricharan Ramabadhran		reg = <0x0 0x40000000 0x0 0x0>;
67*57000675SSricharan Ramabadhran	};
68*57000675SSricharan Ramabadhran
69*57000675SSricharan Ramabadhran	pmu {
70*57000675SSricharan Ramabadhran		compatible = "arm,cortex-a53-pmu";
71*57000675SSricharan Ramabadhran		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
72*57000675SSricharan Ramabadhran	};
73*57000675SSricharan Ramabadhran
74*57000675SSricharan Ramabadhran	psci {
75*57000675SSricharan Ramabadhran		compatible = "arm,psci-1.0";
76*57000675SSricharan Ramabadhran		method = "smc";
77*57000675SSricharan Ramabadhran	};
78*57000675SSricharan Ramabadhran
79*57000675SSricharan Ramabadhran	reserved-memory {
80*57000675SSricharan Ramabadhran		#address-cells = <2>;
81*57000675SSricharan Ramabadhran		#size-cells = <2>;
82*57000675SSricharan Ramabadhran		ranges;
83*57000675SSricharan Ramabadhran
84*57000675SSricharan Ramabadhran		tz_region: tz@4ac00000 {
85*57000675SSricharan Ramabadhran			reg = <0x0 0x4ac00000 0x0 0x200000>;
86*57000675SSricharan Ramabadhran			no-map;
87*57000675SSricharan Ramabadhran		};
88*57000675SSricharan Ramabadhran	};
89*57000675SSricharan Ramabadhran
90*57000675SSricharan Ramabadhran	soc: soc@0 {
91*57000675SSricharan Ramabadhran		compatible = "simple-bus";
92*57000675SSricharan Ramabadhran		#address-cells = <1>;
93*57000675SSricharan Ramabadhran		#size-cells = <1>;
94*57000675SSricharan Ramabadhran		ranges = <0 0 0 0xffffffff>;
95*57000675SSricharan Ramabadhran
96*57000675SSricharan Ramabadhran		tlmm: pinctrl@1000000 {
97*57000675SSricharan Ramabadhran			compatible = "qcom,ipq5018-tlmm";
98*57000675SSricharan Ramabadhran			reg = <0x01000000 0x300000>;
99*57000675SSricharan Ramabadhran			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
100*57000675SSricharan Ramabadhran			gpio-controller;
101*57000675SSricharan Ramabadhran			#gpio-cells = <2>;
102*57000675SSricharan Ramabadhran			gpio-ranges = <&tlmm 0 0 47>;
103*57000675SSricharan Ramabadhran			interrupt-controller;
104*57000675SSricharan Ramabadhran			#interrupt-cells = <2>;
105*57000675SSricharan Ramabadhran
106*57000675SSricharan Ramabadhran			uart1_pins: uart1-state {
107*57000675SSricharan Ramabadhran				pins = "gpio31", "gpio32", "gpio33", "gpio34";
108*57000675SSricharan Ramabadhran				function = "blsp1_uart1";
109*57000675SSricharan Ramabadhran				drive-strength = <8>;
110*57000675SSricharan Ramabadhran				bias-pull-down;
111*57000675SSricharan Ramabadhran			};
112*57000675SSricharan Ramabadhran		};
113*57000675SSricharan Ramabadhran
114*57000675SSricharan Ramabadhran		gcc: clock-controller@1800000 {
115*57000675SSricharan Ramabadhran			compatible = "qcom,gcc-ipq5018";
116*57000675SSricharan Ramabadhran			reg = <0x01800000 0x80000>;
117*57000675SSricharan Ramabadhran			clocks = <&xo_board_clk>,
118*57000675SSricharan Ramabadhran				 <&sleep_clk>,
119*57000675SSricharan Ramabadhran				 <0>,
120*57000675SSricharan Ramabadhran				 <0>,
121*57000675SSricharan Ramabadhran				 <0>,
122*57000675SSricharan Ramabadhran				 <0>,
123*57000675SSricharan Ramabadhran				 <0>,
124*57000675SSricharan Ramabadhran				 <0>,
125*57000675SSricharan Ramabadhran				 <0>;
126*57000675SSricharan Ramabadhran			#clock-cells = <1>;
127*57000675SSricharan Ramabadhran			#reset-cells = <1>;
128*57000675SSricharan Ramabadhran			#power-domain-cells = <1>;
129*57000675SSricharan Ramabadhran		};
130*57000675SSricharan Ramabadhran
131*57000675SSricharan Ramabadhran		sdhc_1: mmc@7804000 {
132*57000675SSricharan Ramabadhran			compatible = "qcom,ipq5018-sdhci", "qcom,sdhci-msm-v5";
133*57000675SSricharan Ramabadhran			reg = <0x7804000 0x1000>;
134*57000675SSricharan Ramabadhran			reg-names = "hc";
135*57000675SSricharan Ramabadhran
136*57000675SSricharan Ramabadhran			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
137*57000675SSricharan Ramabadhran				     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
138*57000675SSricharan Ramabadhran			interrupt-names = "hc_irq", "pwr_irq";
139*57000675SSricharan Ramabadhran
140*57000675SSricharan Ramabadhran			clocks = <&gcc GCC_SDCC1_AHB_CLK>,
141*57000675SSricharan Ramabadhran				 <&gcc GCC_SDCC1_APPS_CLK>,
142*57000675SSricharan Ramabadhran				 <&xo_board_clk>;
143*57000675SSricharan Ramabadhran			clock-names = "iface", "core", "xo";
144*57000675SSricharan Ramabadhran			non-removable;
145*57000675SSricharan Ramabadhran			status = "disabled";
146*57000675SSricharan Ramabadhran		};
147*57000675SSricharan Ramabadhran
148*57000675SSricharan Ramabadhran		blsp1_uart1: serial@78af000 {
149*57000675SSricharan Ramabadhran			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
150*57000675SSricharan Ramabadhran			reg = <0x078af000 0x200>;
151*57000675SSricharan Ramabadhran			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
152*57000675SSricharan Ramabadhran			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>,
153*57000675SSricharan Ramabadhran				 <&gcc GCC_BLSP1_AHB_CLK>;
154*57000675SSricharan Ramabadhran			clock-names = "core", "iface";
155*57000675SSricharan Ramabadhran			status = "disabled";
156*57000675SSricharan Ramabadhran		};
157*57000675SSricharan Ramabadhran
158*57000675SSricharan Ramabadhran		intc: interrupt-controller@b000000 {
159*57000675SSricharan Ramabadhran			compatible = "qcom,msm-qgic2";
160*57000675SSricharan Ramabadhran			reg = <0x0b000000 0x1000>,  /* GICD */
161*57000675SSricharan Ramabadhran			      <0x0b002000 0x2000>,  /* GICC */
162*57000675SSricharan Ramabadhran			      <0x0b001000 0x1000>,  /* GICH */
163*57000675SSricharan Ramabadhran			      <0x0b004000 0x2000>;  /* GICV */
164*57000675SSricharan Ramabadhran			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
165*57000675SSricharan Ramabadhran			interrupt-controller;
166*57000675SSricharan Ramabadhran			#interrupt-cells = <3>;
167*57000675SSricharan Ramabadhran			#address-cells = <1>;
168*57000675SSricharan Ramabadhran			#size-cells = <1>;
169*57000675SSricharan Ramabadhran			ranges = <0 0x0b00a000 0x1ffa>;
170*57000675SSricharan Ramabadhran
171*57000675SSricharan Ramabadhran			v2m0: v2m@0 {
172*57000675SSricharan Ramabadhran				compatible = "arm,gic-v2m-frame";
173*57000675SSricharan Ramabadhran				reg = <0x00000000 0xff8>;
174*57000675SSricharan Ramabadhran				msi-controller;
175*57000675SSricharan Ramabadhran			};
176*57000675SSricharan Ramabadhran
177*57000675SSricharan Ramabadhran			v2m1: v2m@1000 {
178*57000675SSricharan Ramabadhran				compatible = "arm,gic-v2m-frame";
179*57000675SSricharan Ramabadhran				reg = <0x00001000 0xff8>;
180*57000675SSricharan Ramabadhran				msi-controller;
181*57000675SSricharan Ramabadhran			};
182*57000675SSricharan Ramabadhran		};
183*57000675SSricharan Ramabadhran
184*57000675SSricharan Ramabadhran		timer@b120000 {
185*57000675SSricharan Ramabadhran			compatible = "arm,armv7-timer-mem";
186*57000675SSricharan Ramabadhran			reg = <0x0b120000 0x1000>;
187*57000675SSricharan Ramabadhran			#address-cells = <1>;
188*57000675SSricharan Ramabadhran			#size-cells = <1>;
189*57000675SSricharan Ramabadhran			ranges;
190*57000675SSricharan Ramabadhran
191*57000675SSricharan Ramabadhran			frame@b120000 {
192*57000675SSricharan Ramabadhran				reg = <0x0b121000 0x1000>,
193*57000675SSricharan Ramabadhran				      <0x0b122000 0x1000>;
194*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
195*57000675SSricharan Ramabadhran					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
196*57000675SSricharan Ramabadhran				frame-number = <0>;
197*57000675SSricharan Ramabadhran			};
198*57000675SSricharan Ramabadhran
199*57000675SSricharan Ramabadhran			frame@b123000 {
200*57000675SSricharan Ramabadhran				reg = <0xb123000 0x1000>;
201*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
202*57000675SSricharan Ramabadhran				frame-number = <1>;
203*57000675SSricharan Ramabadhran				status = "disabled";
204*57000675SSricharan Ramabadhran			};
205*57000675SSricharan Ramabadhran
206*57000675SSricharan Ramabadhran			frame@b124000 {
207*57000675SSricharan Ramabadhran				frame-number = <2>;
208*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
209*57000675SSricharan Ramabadhran				reg = <0x0b124000 0x1000>;
210*57000675SSricharan Ramabadhran				status = "disabled";
211*57000675SSricharan Ramabadhran			};
212*57000675SSricharan Ramabadhran
213*57000675SSricharan Ramabadhran			frame@b125000 {
214*57000675SSricharan Ramabadhran				reg = <0x0b125000 0x1000>;
215*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
216*57000675SSricharan Ramabadhran				frame-number = <3>;
217*57000675SSricharan Ramabadhran				status = "disabled";
218*57000675SSricharan Ramabadhran			};
219*57000675SSricharan Ramabadhran
220*57000675SSricharan Ramabadhran			frame@b126000 {
221*57000675SSricharan Ramabadhran				reg = <0x0b126000 0x1000>;
222*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
223*57000675SSricharan Ramabadhran				frame-number = <4>;
224*57000675SSricharan Ramabadhran				status = "disabled";
225*57000675SSricharan Ramabadhran			};
226*57000675SSricharan Ramabadhran
227*57000675SSricharan Ramabadhran			frame@b127000 {
228*57000675SSricharan Ramabadhran				reg = <0x0b127000 0x1000>;
229*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
230*57000675SSricharan Ramabadhran				frame-number = <5>;
231*57000675SSricharan Ramabadhran				status = "disabled";
232*57000675SSricharan Ramabadhran			};
233*57000675SSricharan Ramabadhran
234*57000675SSricharan Ramabadhran			frame@b128000 {
235*57000675SSricharan Ramabadhran				reg = <0x0b128000 0x1000>;
236*57000675SSricharan Ramabadhran				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
237*57000675SSricharan Ramabadhran				frame-number = <6>;
238*57000675SSricharan Ramabadhran				status = "disabled";
239*57000675SSricharan Ramabadhran			};
240*57000675SSricharan Ramabadhran		};
241*57000675SSricharan Ramabadhran	};
242*57000675SSricharan Ramabadhran
243*57000675SSricharan Ramabadhran	timer {
244*57000675SSricharan Ramabadhran		compatible = "arm,armv8-timer";
245*57000675SSricharan Ramabadhran		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
246*57000675SSricharan Ramabadhran			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
247*57000675SSricharan Ramabadhran			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
248*57000675SSricharan Ramabadhran			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
249*57000675SSricharan Ramabadhran	};
250*57000675SSricharan Ramabadhran};
251