xref: /openbmc/u-boot/arch/arm/dts/mt7629.dtsi (revision 77c07e7e)
1376ac00dSRyder Lee/*
2376ac00dSRyder Lee * Copyright (C) 2018 MediaTek Inc.
3376ac00dSRyder Lee * Author: Ryder Lee <ryder.lee@mediatek.com>
4376ac00dSRyder Lee *
5376ac00dSRyder Lee * SPDX-License-Identifier: (GPL-2.0 OR MIT)
6376ac00dSRyder Lee */
7376ac00dSRyder Lee
8376ac00dSRyder Lee#include <dt-bindings/clock/mt7629-clk.h>
9376ac00dSRyder Lee#include <dt-bindings/gpio/gpio.h>
10376ac00dSRyder Lee#include <dt-bindings/interrupt-controller/irq.h>
11376ac00dSRyder Lee#include <dt-bindings/interrupt-controller/arm-gic.h>
12376ac00dSRyder Lee#include <dt-bindings/power/mt7629-power.h>
13*9d42b613SWeijie Gao#include <dt-bindings/reset/mtk-reset.h>
14376ac00dSRyder Lee#include "skeleton.dtsi"
15376ac00dSRyder Lee
16376ac00dSRyder Lee/ {
17376ac00dSRyder Lee	compatible = "mediatek,mt7629";
18376ac00dSRyder Lee	interrupt-parent = <&sysirq>;
19376ac00dSRyder Lee	#address-cells = <1>;
20376ac00dSRyder Lee	#size-cells = <1>;
21376ac00dSRyder Lee
22376ac00dSRyder Lee	cpus {
23376ac00dSRyder Lee		#address-cells = <1>;
24376ac00dSRyder Lee		#size-cells = <0>;
25376ac00dSRyder Lee		enable-method = "mediatek,mt6589-smp";
26376ac00dSRyder Lee
27376ac00dSRyder Lee		cpu@0 {
28376ac00dSRyder Lee			device_type = "cpu";
29376ac00dSRyder Lee			compatible = "arm,cortex-a7";
30376ac00dSRyder Lee			reg = <0x0>;
31376ac00dSRyder Lee			clock-frequency = <1250000000>;
32376ac00dSRyder Lee		};
33376ac00dSRyder Lee
34376ac00dSRyder Lee		cpu@1 {
35376ac00dSRyder Lee			device_type = "cpu";
36376ac00dSRyder Lee			compatible = "arm,cortex-a7";
37376ac00dSRyder Lee			reg = <0x1>;
38376ac00dSRyder Lee			clock-frequency = <1250000000>;
39376ac00dSRyder Lee		};
40376ac00dSRyder Lee	};
41376ac00dSRyder Lee
42376ac00dSRyder Lee	clk20m: oscillator@0 {
43376ac00dSRyder Lee		compatible = "fixed-clock";
44376ac00dSRyder Lee		#clock-cells = <0>;
45376ac00dSRyder Lee		clock-frequency = <20000000>;
46376ac00dSRyder Lee		clock-output-names = "clk20m";
47376ac00dSRyder Lee	};
48376ac00dSRyder Lee
49376ac00dSRyder Lee	clk40m: oscillator@1 {
50376ac00dSRyder Lee		compatible = "fixed-clock";
51376ac00dSRyder Lee		#clock-cells = <0>;
52376ac00dSRyder Lee		clock-frequency = <40000000>;
53376ac00dSRyder Lee		clock-output-names = "clkxtal";
54376ac00dSRyder Lee	};
55376ac00dSRyder Lee
56376ac00dSRyder Lee	timer {
57376ac00dSRyder Lee		compatible = "arm,armv7-timer";
58376ac00dSRyder Lee		interrupt-parent = <&gic>;
59376ac00dSRyder Lee		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
60376ac00dSRyder Lee			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
61376ac00dSRyder Lee			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
62376ac00dSRyder Lee			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
63376ac00dSRyder Lee		clock-frequency = <20000000>;
64376ac00dSRyder Lee		arm,cpu-registers-not-fw-configured;
65376ac00dSRyder Lee	};
66376ac00dSRyder Lee
67376ac00dSRyder Lee	infracfg: syscon@10000000 {
68376ac00dSRyder Lee		compatible = "mediatek,mt7629-infracfg", "syscon";
69376ac00dSRyder Lee		reg = <0x10000000 0x1000>;
70376ac00dSRyder Lee		#clock-cells = <1>;
71376ac00dSRyder Lee		u-boot,dm-pre-reloc;
72376ac00dSRyder Lee	};
73376ac00dSRyder Lee
74376ac00dSRyder Lee	pericfg: syscon@10002000 {
75376ac00dSRyder Lee		compatible = "mediatek,mt7629-pericfg", "syscon";
76376ac00dSRyder Lee		reg = <0x10002000 0x1000>;
77376ac00dSRyder Lee		#clock-cells = <1>;
78376ac00dSRyder Lee		u-boot,dm-pre-reloc;
79376ac00dSRyder Lee	};
80376ac00dSRyder Lee
81376ac00dSRyder Lee	timer0: timer@10004000 {
82376ac00dSRyder Lee		compatible = "mediatek,timer";
83376ac00dSRyder Lee		reg = <0x10004000 0x80>;
84376ac00dSRyder Lee		interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_LOW>;
85376ac00dSRyder Lee		clocks = <&topckgen CLK_TOP_10M_SEL>,
86376ac00dSRyder Lee			 <&topckgen CLK_TOP_CLKXTAL_D4>;
87376ac00dSRyder Lee		clock-names = "mux", "src";
88376ac00dSRyder Lee		u-boot,dm-pre-reloc;
89376ac00dSRyder Lee	};
90376ac00dSRyder Lee
91376ac00dSRyder Lee	scpsys: scpsys@10006000 {
92376ac00dSRyder Lee		compatible = "mediatek,mt7629-scpsys";
93376ac00dSRyder Lee		reg = <0x10006000 0x1000>;
94376ac00dSRyder Lee		clocks = <&topckgen CLK_TOP_HIF_SEL>;
95376ac00dSRyder Lee		clock-names = "hif_sel";
96376ac00dSRyder Lee		assigned-clocks = <&topckgen CLK_TOP_HIF_SEL>;
97376ac00dSRyder Lee		assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL1_D2>;
98376ac00dSRyder Lee		#power-domain-cells = <1>;
99376ac00dSRyder Lee		infracfg = <&infracfg>;
100376ac00dSRyder Lee	};
101376ac00dSRyder Lee
102376ac00dSRyder Lee	mcucfg: syscon@10200000 {
103376ac00dSRyder Lee		compatible = "mediatek,mt7629-mcucfg", "syscon";
104376ac00dSRyder Lee		reg = <0x10200000 0x1000>;
105376ac00dSRyder Lee		#clock-cells = <1>;
106376ac00dSRyder Lee		u-boot,dm-pre-reloc;
107376ac00dSRyder Lee	};
108376ac00dSRyder Lee
109376ac00dSRyder Lee	sysirq: interrupt-controller@10200a80 {
110376ac00dSRyder Lee		compatible = "mediatek,sysirq";
111376ac00dSRyder Lee		reg = <0x10200a80 0x20>;
112376ac00dSRyder Lee		interrupt-controller;
113376ac00dSRyder Lee		#interrupt-cells = <3>;
114376ac00dSRyder Lee		interrupt-parent = <&gic>;
115376ac00dSRyder Lee	};
116376ac00dSRyder Lee
117376ac00dSRyder Lee	dramc: dramc@10203000 {
118376ac00dSRyder Lee		compatible = "mediatek,mt7629-dramc";
119376ac00dSRyder Lee		reg = <0x10203000 0x600>,	/* EMI */
120376ac00dSRyder Lee		      <0x10213000 0x1000>,	/* DDRPHY */
121376ac00dSRyder Lee		      <0x10214000 0xd00>;	/* DRAMC_AO */
122376ac00dSRyder Lee		clocks = <&topckgen CLK_TOP_DDRPHYCFG_SEL>,
123376ac00dSRyder Lee			 <&topckgen CLK_TOP_SYSPLL1_D8>,
124376ac00dSRyder Lee			 <&topckgen CLK_TOP_MEM_SEL>,
125376ac00dSRyder Lee			 <&topckgen CLK_TOP_DMPLL>;
126376ac00dSRyder Lee		clock-names = "phy", "phy_mux", "mem", "mem_mux";
127376ac00dSRyder Lee		u-boot,dm-pre-reloc;
128376ac00dSRyder Lee	};
129376ac00dSRyder Lee
130376ac00dSRyder Lee	apmixedsys: clock-controller@10209000 {
131376ac00dSRyder Lee		compatible = "mediatek,mt7629-apmixedsys";
132376ac00dSRyder Lee		reg = <0x10209000 0x1000>;
133376ac00dSRyder Lee		#clock-cells = <1>;
134376ac00dSRyder Lee		u-boot,dm-pre-reloc;
135376ac00dSRyder Lee	};
136376ac00dSRyder Lee
137376ac00dSRyder Lee	topckgen: clock-controller@10210000 {
138376ac00dSRyder Lee		compatible = "mediatek,mt7629-topckgen";
139376ac00dSRyder Lee		reg = <0x10210000 0x1000>;
140376ac00dSRyder Lee		#clock-cells = <1>;
141376ac00dSRyder Lee		u-boot,dm-pre-reloc;
142376ac00dSRyder Lee	};
143376ac00dSRyder Lee
144376ac00dSRyder Lee	watchdog: watchdog@10212000 {
145376ac00dSRyder Lee		compatible = "mediatek,wdt";
146376ac00dSRyder Lee		reg = <0x10212000 0x600>;
147376ac00dSRyder Lee		interrupts = <GIC_SPI 128 IRQ_TYPE_EDGE_FALLING>;
148376ac00dSRyder Lee		#reset-cells = <1>;
149376ac00dSRyder Lee		status = "disabled";
150376ac00dSRyder Lee	};
151376ac00dSRyder Lee
152376ac00dSRyder Lee	wdt-reboot {
153376ac00dSRyder Lee		compatible = "wdt-reboot";
154376ac00dSRyder Lee		wdt = <&watchdog>;
155376ac00dSRyder Lee	};
156376ac00dSRyder Lee
157376ac00dSRyder Lee	pinctrl: pinctrl@10217000 {
158376ac00dSRyder Lee		compatible = "mediatek,mt7629-pinctrl";
159376ac00dSRyder Lee		reg = <0x10217000 0x8000>;
160376ac00dSRyder Lee
161376ac00dSRyder Lee		gpio: gpio-controller {
162376ac00dSRyder Lee			gpio-controller;
163376ac00dSRyder Lee			#gpio-cells = <2>;
164376ac00dSRyder Lee		};
165376ac00dSRyder Lee	};
166376ac00dSRyder Lee
167376ac00dSRyder Lee	gic: interrupt-controller@10300000 {
168376ac00dSRyder Lee		compatible = "arm,gic-400";
169376ac00dSRyder Lee		interrupt-controller;
170376ac00dSRyder Lee		#interrupt-cells = <3>;
171376ac00dSRyder Lee		interrupt-parent = <&gic>;
172376ac00dSRyder Lee		reg = <0x10310000 0x1000>,
173376ac00dSRyder Lee		      <0x10320000 0x1000>,
174376ac00dSRyder Lee		      <0x10340000 0x2000>,
175376ac00dSRyder Lee		      <0x10360000 0x2000>;
176376ac00dSRyder Lee	};
177376ac00dSRyder Lee
178376ac00dSRyder Lee	uart0: serial@11002000 {
179376ac00dSRyder Lee		compatible = "mediatek,hsuart";
180376ac00dSRyder Lee		reg = <0x11002000 0x400>;
181376ac00dSRyder Lee		reg-shift = <2>;
182376ac00dSRyder Lee		interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_LOW>;
183376ac00dSRyder Lee		clocks = <&topckgen CLK_TOP_UART_SEL>,
184376ac00dSRyder Lee			 <&pericfg CLK_PERI_UART0_PD>;
185376ac00dSRyder Lee		clock-names = "baud", "bus";
186376ac00dSRyder Lee		status = "disabled";
187376ac00dSRyder Lee		assigned-clocks = <&topckgen CLK_TOP_AXI_SEL>;
188376ac00dSRyder Lee		assigned-clock-parents = <&topckgen CLK_TOP_SYSPLL1_D2>;
189376ac00dSRyder Lee		u-boot,dm-pre-reloc;
190376ac00dSRyder Lee	};
191376ac00dSRyder Lee
192376ac00dSRyder Lee	uart1: serial@11003000 {
193376ac00dSRyder Lee		compatible = "mediatek,hsuart";
194376ac00dSRyder Lee		reg = <0x11003000 0x400>;
195376ac00dSRyder Lee		reg-shift = <2>;
196376ac00dSRyder Lee		interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>;
197376ac00dSRyder Lee		clocks = <&topckgen CLK_TOP_UART_SEL>,
198376ac00dSRyder Lee			 <&pericfg CLK_PERI_UART1_PD>;
199376ac00dSRyder Lee		clock-names = "baud", "bus";
200376ac00dSRyder Lee		assigned-clocks = <&topckgen CLK_TOP_AXI_SEL>;
201376ac00dSRyder Lee		assigned-clock-parents = <&topckgen CLK_TOP_SYSPLL1_D2>;
202376ac00dSRyder Lee		status = "disabled";
203376ac00dSRyder Lee	};
204376ac00dSRyder Lee
205376ac00dSRyder Lee	uart2: serial@11004000 {
206376ac00dSRyder Lee		compatible = "mediatek,hsuart";
207376ac00dSRyder Lee		reg = <0x11004000 0x400>;
208376ac00dSRyder Lee		reg-shift = <2>;
209376ac00dSRyder Lee		interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_LOW>;
210376ac00dSRyder Lee		clocks = <&topckgen CLK_TOP_UART_SEL>,
211376ac00dSRyder Lee			 <&pericfg CLK_PERI_UART2_PD>;
212376ac00dSRyder Lee		clock-names = "baud", "bus";
213376ac00dSRyder Lee		assigned-clocks = <&topckgen CLK_TOP_AXI_SEL>;
214376ac00dSRyder Lee		assigned-clock-parents = <&topckgen CLK_TOP_SYSPLL1_D2>;
215376ac00dSRyder Lee		status = "disabled";
216376ac00dSRyder Lee	};
217376ac00dSRyder Lee
218376ac00dSRyder Lee	qspi: qspi@11014000 {
219376ac00dSRyder Lee		compatible = "mediatek,mt7629-qspi";
220376ac00dSRyder Lee		reg = <0x11014000 0xe0>, <0x30000000 0x10000000>;
221376ac00dSRyder Lee		reg-names = "reg_base", "mem_base";
222376ac00dSRyder Lee		status = "disabled";
223376ac00dSRyder Lee		#address-cells = <1>;
224376ac00dSRyder Lee		#size-cells = <0>;
225376ac00dSRyder Lee		u-boot,dm-pre-reloc;
226376ac00dSRyder Lee	};
227376ac00dSRyder Lee
228376ac00dSRyder Lee	ethsys: syscon@1b000000 {
229376ac00dSRyder Lee		compatible = "mediatek,mt7629-ethsys", "syscon";
230376ac00dSRyder Lee		reg = <0x1b000000 0x1000>;
231376ac00dSRyder Lee		#clock-cells = <1>;
232*9d42b613SWeijie Gao		#reset-cells = <1>;
233*9d42b613SWeijie Gao	};
234*9d42b613SWeijie Gao
235*9d42b613SWeijie Gao	eth: ethernet@1b100000 {
236*9d42b613SWeijie Gao		compatible = "mediatek,mt7629-eth", "syscon";
237*9d42b613SWeijie Gao		reg = <0x1b100000 0x20000>;
238*9d42b613SWeijie Gao		clocks = <&topckgen CLK_TOP_ETH_SEL>,
239*9d42b613SWeijie Gao			<&topckgen CLK_TOP_F10M_REF_SEL>,
240*9d42b613SWeijie Gao			<&ethsys CLK_ETH_ESW_EN>,
241*9d42b613SWeijie Gao			<&ethsys CLK_ETH_GP0_EN>,
242*9d42b613SWeijie Gao			<&ethsys CLK_ETH_GP1_EN>,
243*9d42b613SWeijie Gao			<&ethsys CLK_ETH_GP2_EN>,
244*9d42b613SWeijie Gao			<&ethsys CLK_ETH_FE_EN>,
245*9d42b613SWeijie Gao			<&sgmiisys0 CLK_SGMII_TX_EN>,
246*9d42b613SWeijie Gao			<&sgmiisys0 CLK_SGMII_RX_EN>,
247*9d42b613SWeijie Gao			<&sgmiisys0 CLK_SGMII_CDR_REF>,
248*9d42b613SWeijie Gao			<&sgmiisys0 CLK_SGMII_CDR_FB>,
249*9d42b613SWeijie Gao			<&sgmiisys1 CLK_SGMII_TX_EN>,
250*9d42b613SWeijie Gao			<&sgmiisys1 CLK_SGMII_RX_EN>,
251*9d42b613SWeijie Gao			<&sgmiisys1 CLK_SGMII_CDR_REF>,
252*9d42b613SWeijie Gao			<&sgmiisys1 CLK_SGMII_CDR_FB>,
253*9d42b613SWeijie Gao			<&apmixedsys CLK_APMIXED_SGMIPLL>,
254*9d42b613SWeijie Gao			<&apmixedsys CLK_APMIXED_ETH2PLL>;
255*9d42b613SWeijie Gao		clock-names = "ethif", "sgmiitop", "esw", "gp0", "gp1", "gp2",
256*9d42b613SWeijie Gao				"fe", "sgmii_tx250m", "sgmii_rx250m",
257*9d42b613SWeijie Gao				"sgmii_cdr_ref", "sgmii_cdr_fb",
258*9d42b613SWeijie Gao				"sgmii2_tx250m", "sgmii2_rx250m",
259*9d42b613SWeijie Gao				"sgmii2_cdr_ref", "sgmii2_cdr_fb",
260*9d42b613SWeijie Gao				"sgmii_ck", "eth2pll";
261*9d42b613SWeijie Gao		assigned-clocks = <&topckgen CLK_TOP_ETH_SEL>,
262*9d42b613SWeijie Gao				  <&topckgen CLK_TOP_F10M_REF_SEL>;
263*9d42b613SWeijie Gao		assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL1_D2>,
264*9d42b613SWeijie Gao					 <&topckgen CLK_TOP_SGMIIPLL_D2>;
265*9d42b613SWeijie Gao		power-domains = <&scpsys MT7629_POWER_DOMAIN_ETHSYS>;
266*9d42b613SWeijie Gao		resets = <&ethsys ETHSYS_FE_RST>;
267*9d42b613SWeijie Gao		reset-names = "fe";
268*9d42b613SWeijie Gao		mediatek,ethsys = <&ethsys>;
269*9d42b613SWeijie Gao		mediatek,sgmiisys = <&sgmiisys0>;
270*9d42b613SWeijie Gao		mediatek,infracfg = <&infracfg>;
271*9d42b613SWeijie Gao		#address-cells = <1>;
272*9d42b613SWeijie Gao		#size-cells = <0>;
273*9d42b613SWeijie Gao		status = "disabled";
274376ac00dSRyder Lee	};
275376ac00dSRyder Lee
276376ac00dSRyder Lee	sgmiisys0: syscon@1b128000 {
277376ac00dSRyder Lee		compatible = "mediatek,mt7629-sgmiisys", "syscon";
278376ac00dSRyder Lee		reg = <0x1b128000 0x1000>;
279376ac00dSRyder Lee		#clock-cells = <1>;
280376ac00dSRyder Lee	};
281376ac00dSRyder Lee
282376ac00dSRyder Lee	sgmiisys1: syscon@1b130000 {
283376ac00dSRyder Lee		compatible = "mediatek,mt7629-sgmiisys", "syscon";
284376ac00dSRyder Lee		reg = <0x1b130000 0x1000>;
285376ac00dSRyder Lee		#clock-cells = <1>;
286376ac00dSRyder Lee	};
287376ac00dSRyder Lee};
288