1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (c) 2021 MediaTek Inc.
4 * Author: Seiya Wang <seiya.wang@mediatek.com>
5 */
6
7/dts-v1/;
8#include <dt-bindings/clock/mt8195-clk.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/interrupt-controller/irq.h>
11#include <dt-bindings/phy/phy.h>
12#include <dt-bindings/pinctrl/mt8195-pinfunc.h>
13#include <dt-bindings/reset/ti-syscon.h>
14
15/ {
16	compatible = "mediatek,mt8195";
17	interrupt-parent = <&gic>;
18	#address-cells = <2>;
19	#size-cells = <2>;
20
21	cpus {
22		#address-cells = <1>;
23		#size-cells = <0>;
24
25		cpu0: cpu@0 {
26			device_type = "cpu";
27			compatible = "arm,cortex-a55";
28			reg = <0x000>;
29			enable-method = "psci";
30			clock-frequency = <1701000000>;
31			capacity-dmips-mhz = <578>;
32			cpu-idle-states = <&cpu_off_l &cluster_off_l>;
33			next-level-cache = <&l2_0>;
34			#cooling-cells = <2>;
35		};
36
37		cpu1: cpu@100 {
38			device_type = "cpu";
39			compatible = "arm,cortex-a55";
40			reg = <0x100>;
41			enable-method = "psci";
42			clock-frequency = <1701000000>;
43			capacity-dmips-mhz = <578>;
44			cpu-idle-states = <&cpu_off_l &cluster_off_l>;
45			next-level-cache = <&l2_0>;
46			#cooling-cells = <2>;
47		};
48
49		cpu2: cpu@200 {
50			device_type = "cpu";
51			compatible = "arm,cortex-a55";
52			reg = <0x200>;
53			enable-method = "psci";
54			clock-frequency = <1701000000>;
55			capacity-dmips-mhz = <578>;
56			cpu-idle-states = <&cpu_off_l &cluster_off_l>;
57			next-level-cache = <&l2_0>;
58			#cooling-cells = <2>;
59		};
60
61		cpu3: cpu@300 {
62			device_type = "cpu";
63			compatible = "arm,cortex-a55";
64			reg = <0x300>;
65			enable-method = "psci";
66			clock-frequency = <1701000000>;
67			capacity-dmips-mhz = <578>;
68			cpu-idle-states = <&cpu_off_l &cluster_off_l>;
69			next-level-cache = <&l2_0>;
70			#cooling-cells = <2>;
71		};
72
73		cpu4: cpu@400 {
74			device_type = "cpu";
75			compatible = "arm,cortex-a78";
76			reg = <0x400>;
77			enable-method = "psci";
78			clock-frequency = <2171000000>;
79			capacity-dmips-mhz = <1024>;
80			cpu-idle-states = <&cpu_off_b &cluster_off_b>;
81			next-level-cache = <&l2_1>;
82			#cooling-cells = <2>;
83		};
84
85		cpu5: cpu@500 {
86			device_type = "cpu";
87			compatible = "arm,cortex-a78";
88			reg = <0x500>;
89			enable-method = "psci";
90			clock-frequency = <2171000000>;
91			capacity-dmips-mhz = <1024>;
92			cpu-idle-states = <&cpu_off_b &cluster_off_b>;
93			next-level-cache = <&l2_1>;
94			#cooling-cells = <2>;
95		};
96
97		cpu6: cpu@600 {
98			device_type = "cpu";
99			compatible = "arm,cortex-a78";
100			reg = <0x600>;
101			enable-method = "psci";
102			clock-frequency = <2171000000>;
103			capacity-dmips-mhz = <1024>;
104			cpu-idle-states = <&cpu_off_b &cluster_off_b>;
105			next-level-cache = <&l2_1>;
106			#cooling-cells = <2>;
107		};
108
109		cpu7: cpu@700 {
110			device_type = "cpu";
111			compatible = "arm,cortex-a78";
112			reg = <0x700>;
113			enable-method = "psci";
114			clock-frequency = <2171000000>;
115			capacity-dmips-mhz = <1024>;
116			cpu-idle-states = <&cpu_off_b &cluster_off_b>;
117			next-level-cache = <&l2_1>;
118			#cooling-cells = <2>;
119		};
120
121		cpu-map {
122			cluster0 {
123				core0 {
124					cpu = <&cpu0>;
125				};
126
127				core1 {
128					cpu = <&cpu1>;
129				};
130
131				core2 {
132					cpu = <&cpu2>;
133				};
134
135				core3 {
136					cpu = <&cpu3>;
137				};
138			};
139
140			cluster1 {
141				core0 {
142					cpu = <&cpu4>;
143				};
144
145				core1 {
146					cpu = <&cpu5>;
147				};
148
149				core2 {
150					cpu = <&cpu6>;
151				};
152
153				core3 {
154					cpu = <&cpu7>;
155				};
156			};
157		};
158
159		idle-states {
160			entry-method = "psci";
161
162			cpu_off_l: cpu-off-l {
163				compatible = "arm,idle-state";
164				arm,psci-suspend-param = <0x00010001>;
165				local-timer-stop;
166				entry-latency-us = <50>;
167				exit-latency-us = <95>;
168				min-residency-us = <580>;
169			};
170
171			cpu_off_b: cpu-off-b {
172				compatible = "arm,idle-state";
173				arm,psci-suspend-param = <0x00010001>;
174				local-timer-stop;
175				entry-latency-us = <45>;
176				exit-latency-us = <140>;
177				min-residency-us = <740>;
178			};
179
180			cluster_off_l: cluster-off-l {
181				compatible = "arm,idle-state";
182				arm,psci-suspend-param = <0x01010002>;
183				local-timer-stop;
184				entry-latency-us = <55>;
185				exit-latency-us = <155>;
186				min-residency-us = <840>;
187			};
188
189			cluster_off_b: cluster-off-b {
190				compatible = "arm,idle-state";
191				arm,psci-suspend-param = <0x01010002>;
192				local-timer-stop;
193				entry-latency-us = <50>;
194				exit-latency-us = <200>;
195				min-residency-us = <1000>;
196			};
197		};
198
199		l2_0: l2-cache0 {
200			compatible = "cache";
201			next-level-cache = <&l3_0>;
202		};
203
204		l2_1: l2-cache1 {
205			compatible = "cache";
206			next-level-cache = <&l3_0>;
207		};
208
209		l3_0: l3-cache {
210			compatible = "cache";
211		};
212	};
213
214	dsu-pmu {
215		compatible = "arm,dsu-pmu";
216		interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH 0>;
217		cpus = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>,
218		       <&cpu4>, <&cpu5>, <&cpu6>, <&cpu7>;
219	};
220
221	clk26m: oscillator-26m {
222		compatible = "fixed-clock";
223		#clock-cells = <0>;
224		clock-frequency = <26000000>;
225		clock-output-names = "clk26m";
226	};
227
228	clk32k: oscillator-32k {
229		compatible = "fixed-clock";
230		#clock-cells = <0>;
231		clock-frequency = <32768>;
232		clock-output-names = "clk32k";
233	};
234
235	pmu-a55 {
236		compatible = "arm,cortex-a55-pmu";
237		interrupt-parent = <&gic>;
238		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster0>;
239	};
240
241	pmu-a78 {
242		compatible = "arm,cortex-a78-pmu";
243		interrupt-parent = <&gic>;
244		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster1>;
245	};
246
247	psci {
248		compatible = "arm,psci-1.0";
249		method = "smc";
250	};
251
252	timer: timer {
253		compatible = "arm,armv8-timer";
254		interrupt-parent = <&gic>;
255		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH 0>,
256			     <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH 0>,
257			     <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH 0>,
258			     <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH 0>;
259	};
260
261	soc {
262		#address-cells = <2>;
263		#size-cells = <2>;
264		compatible = "simple-bus";
265		ranges;
266
267		gic: interrupt-controller@c000000 {
268			compatible = "arm,gic-v3";
269			#interrupt-cells = <4>;
270			#redistributor-regions = <1>;
271			interrupt-parent = <&gic>;
272			interrupt-controller;
273			reg = <0 0x0c000000 0 0x40000>,
274			      <0 0x0c040000 0 0x200000>;
275			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
276
277			ppi-partitions {
278				ppi_cluster0: interrupt-partition-0 {
279					affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
280				};
281
282				ppi_cluster1: interrupt-partition-1 {
283					affinity = <&cpu4 &cpu5 &cpu6 &cpu7>;
284				};
285			};
286		};
287
288		topckgen: syscon@10000000 {
289			compatible = "mediatek,mt8195-topckgen", "syscon";
290			reg = <0 0x10000000 0 0x1000>;
291			#clock-cells = <1>;
292		};
293
294		infracfg_ao: syscon@10001000 {
295			compatible = "mediatek,mt8195-infracfg_ao", "syscon", "simple-mfd";
296			reg = <0 0x10001000 0 0x1000>;
297			#clock-cells = <1>;
298
299			infracfg_rst: reset-controller {
300				compatible = "ti,syscon-reset";
301				#reset-cells = <1>;
302				ti,reset-bits = <
303					0x140 18 0x144 18 0 0 (ASSERT_SET | DEASSERT_SET | STATUS_NONE) /* pcie */
304					0x120 0  0x124 0  0 0 (ASSERT_SET | DEASSERT_SET | STATUS_NONE) /* thermal */
305					0x730 10 0x734 10 0 0 (ASSERT_SET | DEASSERT_SET | STATUS_NONE) /* thermal */
306					0x150 5  0x154 5  0 0 (ASSERT_SET | DEASSERT_SET | STATUS_NONE) /* svs gpu */
307				>;
308			};
309		};
310
311		pericfg: syscon@10003000 {
312			compatible = "mediatek,mt8195-pericfg", "syscon";
313			reg = <0 0x10003000 0 0x1000>;
314			#clock-cells = <1>;
315		};
316
317		pio: pinctrl@10005000 {
318			compatible = "mediatek,mt8195-pinctrl";
319			reg = <0 0x10005000 0 0x1000>,
320			      <0 0x11d10000 0 0x1000>,
321			      <0 0x11d30000 0 0x1000>,
322			      <0 0x11d40000 0 0x1000>,
323			      <0 0x11e20000 0 0x1000>,
324			      <0 0x11eb0000 0 0x1000>,
325			      <0 0x11f40000 0 0x1000>,
326			      <0 0x1000b000 0 0x1000>;
327			reg-names = "iocfg0", "iocfg_bm", "iocfg_bl",
328				    "iocfg_br", "iocfg_lm", "iocfg_rb",
329				    "iocfg_tl", "eint";
330			gpio-controller;
331			#gpio-cells = <2>;
332			gpio-ranges = <&pio 0 0 144>;
333			interrupt-controller;
334			interrupts = <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH 0>;
335			#interrupt-cells = <2>;
336		};
337
338		watchdog: watchdog@10007000 {
339			compatible = "mediatek,mt8195-wdt",
340				     "mediatek,mt6589-wdt";
341			reg = <0 0x10007000 0 0x100>;
342		};
343
344		apmixedsys: syscon@1000c000 {
345			compatible = "mediatek,mt8195-apmixedsys", "syscon";
346			reg = <0 0x1000c000 0 0x1000>;
347			#clock-cells = <1>;
348		};
349
350		systimer: timer@10017000 {
351			compatible = "mediatek,mt8195-timer",
352				     "mediatek,mt6765-timer";
353			reg = <0 0x10017000 0 0x1000>;
354			interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH 0>;
355			clocks = <&topckgen CLK_TOP_CLK26M_D2>;
356		};
357
358		pwrap: pwrap@10024000 {
359			compatible = "mediatek,mt8195-pwrap", "syscon";
360			reg = <0 0x10024000 0 0x1000>;
361			reg-names = "pwrap";
362			interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH 0>;
363			clocks = <&infracfg_ao CLK_INFRA_AO_PMIC_AP>,
364				 <&infracfg_ao CLK_INFRA_AO_PMIC_TMR>;
365			clock-names = "spi", "wrap";
366			assigned-clocks = <&topckgen CLK_TOP_PWRAP_ULPOSC>;
367			assigned-clock-parents = <&topckgen CLK_TOP_ULPOSC1_D10>;
368		};
369
370		scp_adsp: clock-controller@10720000 {
371			compatible = "mediatek,mt8195-scp_adsp";
372			reg = <0 0x10720000 0 0x1000>;
373			#clock-cells = <1>;
374		};
375
376		uart0: serial@11001100 {
377			compatible = "mediatek,mt8195-uart",
378				     "mediatek,mt6577-uart";
379			reg = <0 0x11001100 0 0x100>;
380			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH 0>;
381			clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_AO_UART0>;
382			clock-names = "baud", "bus";
383			status = "disabled";
384		};
385
386		uart1: serial@11001200 {
387			compatible = "mediatek,mt8195-uart",
388				     "mediatek,mt6577-uart";
389			reg = <0 0x11001200 0 0x100>;
390			interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH 0>;
391			clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_AO_UART1>;
392			clock-names = "baud", "bus";
393			status = "disabled";
394		};
395
396		uart2: serial@11001300 {
397			compatible = "mediatek,mt8195-uart",
398				     "mediatek,mt6577-uart";
399			reg = <0 0x11001300 0 0x100>;
400			interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH 0>;
401			clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_AO_UART2>;
402			clock-names = "baud", "bus";
403			status = "disabled";
404		};
405
406		uart3: serial@11001400 {
407			compatible = "mediatek,mt8195-uart",
408				     "mediatek,mt6577-uart";
409			reg = <0 0x11001400 0 0x100>;
410			interrupts = <GIC_SPI 723 IRQ_TYPE_LEVEL_HIGH 0>;
411			clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_AO_UART3>;
412			clock-names = "baud", "bus";
413			status = "disabled";
414		};
415
416		uart4: serial@11001500 {
417			compatible = "mediatek,mt8195-uart",
418				     "mediatek,mt6577-uart";
419			reg = <0 0x11001500 0 0x100>;
420			interrupts = <GIC_SPI 724 IRQ_TYPE_LEVEL_HIGH 0>;
421			clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_AO_UART4>;
422			clock-names = "baud", "bus";
423			status = "disabled";
424		};
425
426		uart5: serial@11001600 {
427			compatible = "mediatek,mt8195-uart",
428				     "mediatek,mt6577-uart";
429			reg = <0 0x11001600 0 0x100>;
430			interrupts = <GIC_SPI 725 IRQ_TYPE_LEVEL_HIGH 0>;
431			clocks = <&clk26m>, <&infracfg_ao CLK_INFRA_AO_UART5>;
432			clock-names = "baud", "bus";
433			status = "disabled";
434		};
435
436		auxadc: auxadc@11002000 {
437			compatible = "mediatek,mt8195-auxadc",
438				     "mediatek,mt8173-auxadc";
439			reg = <0 0x11002000 0 0x1000>;
440			clocks = <&infracfg_ao CLK_INFRA_AO_AUXADC>;
441			clock-names = "main";
442			#io-channel-cells = <1>;
443			status = "disabled";
444		};
445
446		pericfg_ao: syscon@11003000 {
447			compatible = "mediatek,mt8195-pericfg_ao", "syscon";
448			reg = <0 0x11003000 0 0x1000>;
449			#clock-cells = <1>;
450		};
451
452		spi0: spi@1100a000 {
453			compatible = "mediatek,mt8195-spi",
454				     "mediatek,mt6765-spi";
455			#address-cells = <1>;
456			#size-cells = <0>;
457			reg = <0 0x1100a000 0 0x1000>;
458			interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH 0>;
459			clocks = <&topckgen CLK_TOP_UNIVPLL_D6_D2>,
460				 <&topckgen CLK_TOP_SPI>,
461				 <&infracfg_ao CLK_INFRA_AO_SPI0>;
462			clock-names = "parent-clk", "sel-clk", "spi-clk";
463			status = "disabled";
464		};
465
466		spi1: spi@11010000 {
467			compatible = "mediatek,mt8195-spi",
468				     "mediatek,mt6765-spi";
469			#address-cells = <1>;
470			#size-cells = <0>;
471			reg = <0 0x11010000 0 0x1000>;
472			interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH 0>;
473			clocks = <&topckgen CLK_TOP_UNIVPLL_D6_D2>,
474				 <&topckgen CLK_TOP_SPI>,
475				 <&infracfg_ao CLK_INFRA_AO_SPI1>;
476			clock-names = "parent-clk", "sel-clk", "spi-clk";
477			status = "disabled";
478		};
479
480		spi2: spi@11012000 {
481			compatible = "mediatek,mt8195-spi",
482				     "mediatek,mt6765-spi";
483			#address-cells = <1>;
484			#size-cells = <0>;
485			reg = <0 0x11012000 0 0x1000>;
486			interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH 0>;
487			clocks = <&topckgen CLK_TOP_UNIVPLL_D6_D2>,
488				 <&topckgen CLK_TOP_SPI>,
489				 <&infracfg_ao CLK_INFRA_AO_SPI2>;
490			clock-names = "parent-clk", "sel-clk", "spi-clk";
491			status = "disabled";
492		};
493
494		spi3: spi@11013000 {
495			compatible = "mediatek,mt8195-spi",
496				     "mediatek,mt6765-spi";
497			#address-cells = <1>;
498			#size-cells = <0>;
499			reg = <0 0x11013000 0 0x1000>;
500			interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH 0>;
501			clocks = <&topckgen CLK_TOP_UNIVPLL_D6_D2>,
502				 <&topckgen CLK_TOP_SPI>,
503				 <&infracfg_ao CLK_INFRA_AO_SPI3>;
504			clock-names = "parent-clk", "sel-clk", "spi-clk";
505			status = "disabled";
506		};
507
508		spi4: spi@11018000 {
509			compatible = "mediatek,mt8195-spi",
510				     "mediatek,mt6765-spi";
511			#address-cells = <1>;
512			#size-cells = <0>;
513			reg = <0 0x11018000 0 0x1000>;
514			interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH 0>;
515			clocks = <&topckgen CLK_TOP_UNIVPLL_D6_D2>,
516				 <&topckgen CLK_TOP_SPI>,
517				 <&infracfg_ao CLK_INFRA_AO_SPI4>;
518			clock-names = "parent-clk", "sel-clk", "spi-clk";
519			status = "disabled";
520		};
521
522		spi5: spi@11019000 {
523			compatible = "mediatek,mt8195-spi",
524				     "mediatek,mt6765-spi";
525			#address-cells = <1>;
526			#size-cells = <0>;
527			reg = <0 0x11019000 0 0x1000>;
528			interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH 0>;
529			clocks = <&topckgen CLK_TOP_UNIVPLL_D6_D2>,
530				 <&topckgen CLK_TOP_SPI>,
531				 <&infracfg_ao CLK_INFRA_AO_SPI5>;
532			clock-names = "parent-clk", "sel-clk", "spi-clk";
533			status = "disabled";
534		};
535
536		spis0: spi@1101d000 {
537			compatible = "mediatek,mt8195-spi-slave";
538			reg = <0 0x1101d000 0 0x1000>;
539			interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH 0>;
540			clocks = <&infracfg_ao CLK_INFRA_AO_SPIS0>;
541			clock-names = "spi";
542			assigned-clocks = <&topckgen CLK_TOP_SPIS>;
543			assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D6>;
544			status = "disabled";
545		};
546
547		spis1: spi@1101e000 {
548			compatible = "mediatek,mt8195-spi-slave";
549			reg = <0 0x1101e000 0 0x1000>;
550			interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH 0>;
551			clocks = <&infracfg_ao CLK_INFRA_AO_SPIS1>;
552			clock-names = "spi";
553			assigned-clocks = <&topckgen CLK_TOP_SPIS>;
554			assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D6>;
555			status = "disabled";
556		};
557
558		xhci0: usb@11200000 {
559			compatible = "mediatek,mt8195-xhci",
560				     "mediatek,mtk-xhci";
561			reg = <0 0x11200000 0 0x1000>,
562			      <0 0x11203e00 0 0x0100>;
563			reg-names = "mac", "ippc";
564			interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH 0>;
565			phys = <&u2port0 PHY_TYPE_USB2>,
566			       <&u3port0 PHY_TYPE_USB3>;
567			assigned-clocks = <&topckgen CLK_TOP_USB_TOP>,
568					  <&topckgen CLK_TOP_SSUSB_XHCI>;
569			assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
570						 <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
571			clocks = <&infracfg_ao CLK_INFRA_AO_SSUSB>,
572				 <&topckgen CLK_TOP_SSUSB_REF>,
573				 <&apmixedsys CLK_APMIXED_USB1PLL>,
574				 <&infracfg_ao CLK_INFRA_AO_SSUSB_XHCI>;
575			clock-names = "sys_ck", "ref_ck", "mcu_ck", "xhci_ck";
576			status = "disabled";
577		};
578
579		mmc0: mmc@11230000 {
580			compatible = "mediatek,mt8195-mmc",
581				     "mediatek,mt8183-mmc";
582			reg = <0 0x11230000 0 0x10000>,
583			      <0 0x11f50000 0 0x1000>;
584			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH 0>;
585			clocks = <&topckgen CLK_TOP_MSDC50_0>,
586				 <&infracfg_ao CLK_INFRA_AO_MSDC0>,
587				 <&infracfg_ao CLK_INFRA_AO_MSDC0_SRC>;
588			clock-names = "source", "hclk", "source_cg";
589			status = "disabled";
590		};
591
592		mmc1: mmc@11240000 {
593			compatible = "mediatek,mt8195-mmc",
594				     "mediatek,mt8183-mmc";
595			reg = <0 0x11240000 0 0x1000>,
596			      <0 0x11c70000 0 0x1000>;
597			interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH 0>;
598			clocks = <&topckgen CLK_TOP_MSDC30_1>,
599				 <&infracfg_ao CLK_INFRA_AO_MSDC1>,
600				 <&infracfg_ao CLK_INFRA_AO_MSDC1_SRC>;
601			clock-names = "source", "hclk", "source_cg";
602			assigned-clocks = <&topckgen CLK_TOP_MSDC30_1>;
603			assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>;
604			status = "disabled";
605		};
606
607		mmc2: mmc@11250000 {
608			compatible = "mediatek,mt8195-mmc",
609				     "mediatek,mt8183-mmc";
610			reg = <0 0x11250000 0 0x1000>,
611			      <0 0x11e60000 0 0x1000>;
612			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH 0>;
613			clocks = <&topckgen CLK_TOP_MSDC30_2>,
614				 <&infracfg_ao CLK_INFRA_AO_CG1_MSDC2>,
615				 <&infracfg_ao CLK_INFRA_AO_CG3_MSDC2>;
616			clock-names = "source", "hclk", "source_cg";
617			assigned-clocks = <&topckgen CLK_TOP_MSDC30_2>;
618			assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>;
619			status = "disabled";
620		};
621
622		xhci1: usb@11290000 {
623			compatible = "mediatek,mt8195-xhci",
624				     "mediatek,mtk-xhci";
625			reg = <0 0x11290000 0 0x1000>,
626			      <0 0x11293e00 0 0x0100>;
627			reg-names = "mac", "ippc";
628			interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH 0>;
629			phys = <&u2port1 PHY_TYPE_USB2>;
630			assigned-clocks = <&topckgen CLK_TOP_USB_TOP_1P>,
631					  <&topckgen CLK_TOP_SSUSB_XHCI_1P>;
632			assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
633						 <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
634			clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_1P_BUS>,
635				 <&topckgen CLK_TOP_SSUSB_P1_REF>,
636				 <&apmixedsys CLK_APMIXED_USB1PLL>,
637				 <&pericfg_ao CLK_PERI_AO_SSUSB_1P_XHCI>;
638			clock-names = "sys_ck", "ref_ck", "mcu_ck","xhci_ck";
639			status = "disabled";
640		};
641
642		xhci2: usb@112a0000 {
643			compatible = "mediatek,mt8195-xhci",
644				     "mediatek,mtk-xhci";
645			reg = <0 0x112a0000 0 0x1000>,
646			      <0 0x112a3e00 0 0x0100>;
647			reg-names = "mac", "ippc";
648			interrupts = <GIC_SPI 533 IRQ_TYPE_LEVEL_HIGH 0>;
649			phys = <&u2port2 PHY_TYPE_USB2>;
650			assigned-clocks = <&topckgen CLK_TOP_USB_TOP_2P>,
651					  <&topckgen CLK_TOP_SSUSB_XHCI_2P>;
652			assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
653						 <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
654			clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_2P_BUS>,
655				 <&topckgen CLK_TOP_SSUSB_P2_REF>,
656				 <&pericfg_ao CLK_PERI_AO_SSUSB_2P_XHCI>;
657			clock-names = "sys_ck", "ref_ck", "xhci_ck";
658			status = "disabled";
659		};
660
661		xhci3: usb@112b0000 {
662			compatible = "mediatek,mt8195-xhci",
663				     "mediatek,mtk-xhci";
664			reg = <0 0x112b0000 0 0x1000>,
665			      <0 0x112b3e00 0 0x0100>;
666			reg-names = "mac", "ippc";
667			interrupts = <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH 0>;
668			phys = <&u2port3 PHY_TYPE_USB2>;
669			assigned-clocks = <&topckgen CLK_TOP_USB_TOP_3P>,
670					  <&topckgen CLK_TOP_SSUSB_XHCI_3P>;
671			assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D5_D4>,
672						 <&topckgen CLK_TOP_UNIVPLL_D5_D4>;
673			clocks = <&pericfg_ao CLK_PERI_AO_SSUSB_3P_BUS>,
674				 <&topckgen CLK_TOP_SSUSB_P3_REF>,
675				 <&pericfg_ao CLK_PERI_AO_SSUSB_3P_XHCI>;
676			clock-names = "sys_ck", "ref_ck", "xhci_ck";
677			status = "disabled";
678		};
679
680		nor_flash: spi@1132c000 {
681			compatible = "mediatek,mt8195-nor",
682				     "mediatek,mt8173-nor";
683			reg = <0 0x1132c000 0 0x1000>;
684			interrupts = <GIC_SPI 825 IRQ_TYPE_LEVEL_HIGH 0>;
685			clocks = <&topckgen CLK_TOP_SPINOR>,
686				 <&pericfg_ao CLK_PERI_AO_FLASHIF_FLASH>,
687				 <&pericfg_ao CLK_PERI_AO_FLASHIF_BUS>;
688			clock-names = "spi", "sf", "axi";
689			#address-cells = <1>;
690			#size-cells = <0>;
691			status = "disabled";
692		};
693
694		u3phy2: t-phy@11c40000 {
695			compatible = "mediatek,mt8195-tphy", "mediatek,generic-tphy-v3";
696			#address-cells = <1>;
697			#size-cells = <1>;
698			ranges = <0 0 0x11c40000 0x700>;
699			status = "disabled";
700
701			u2port2: usb-phy@0 {
702				reg = <0x0 0x700>;
703				clocks = <&topckgen CLK_TOP_SSUSB_PHY_P2_REF>;
704				clock-names = "ref";
705				#phy-cells = <1>;
706			};
707		};
708
709		u3phy3: t-phy@11c50000 {
710			compatible = "mediatek,mt8195-tphy", "mediatek,generic-tphy-v3";
711			#address-cells = <1>;
712			#size-cells = <1>;
713			ranges = <0 0 0x11c50000 0x700>;
714			status = "disabled";
715
716			u2port3: usb-phy@0 {
717				reg = <0x0 0x700>;
718				clocks = <&topckgen CLK_TOP_SSUSB_PHY_P3_REF>;
719				clock-names = "ref";
720				#phy-cells = <1>;
721			};
722		};
723
724		i2c5: i2c@11d00000 {
725			compatible = "mediatek,mt8195-i2c",
726				     "mediatek,mt8192-i2c";
727			reg = <0 0x11d00000 0 0x1000>,
728			      <0 0x10220580 0 0x80>;
729			interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH 0>;
730			clock-div = <1>;
731			clocks = <&imp_iic_wrap_s CLK_IMP_IIC_WRAP_S_I2C5>,
732				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
733			clock-names = "main", "dma";
734			#address-cells = <1>;
735			#size-cells = <0>;
736			status = "disabled";
737		};
738
739		i2c6: i2c@11d01000 {
740			compatible = "mediatek,mt8195-i2c",
741				     "mediatek,mt8192-i2c";
742			reg = <0 0x11d01000 0 0x1000>,
743			      <0 0x10220600 0 0x80>;
744			interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH 0>;
745			clock-div = <1>;
746			clocks = <&imp_iic_wrap_s CLK_IMP_IIC_WRAP_S_I2C6>,
747				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
748			clock-names = "main", "dma";
749			#address-cells = <1>;
750			#size-cells = <0>;
751			status = "disabled";
752		};
753
754		i2c7: i2c@11d02000 {
755			compatible = "mediatek,mt8195-i2c",
756				     "mediatek,mt8192-i2c";
757			reg = <0 0x11d02000 0 0x1000>,
758			      <0 0x10220680 0 0x80>;
759			interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH 0>;
760			clock-div = <1>;
761			clocks = <&imp_iic_wrap_s CLK_IMP_IIC_WRAP_S_I2C7>,
762				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
763			clock-names = "main", "dma";
764			#address-cells = <1>;
765			#size-cells = <0>;
766			status = "disabled";
767		};
768
769		imp_iic_wrap_s: clock-controller@11d03000 {
770			compatible = "mediatek,mt8195-imp_iic_wrap_s";
771			reg = <0 0x11d03000 0 0x1000>;
772			#clock-cells = <1>;
773		};
774
775		i2c0: i2c@11e00000 {
776			compatible = "mediatek,mt8195-i2c",
777				     "mediatek,mt8192-i2c";
778			reg = <0 0x11e00000 0 0x1000>,
779			      <0 0x10220080 0 0x80>;
780			interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH 0>;
781			clock-div = <1>;
782			clocks = <&imp_iic_wrap_w CLK_IMP_IIC_WRAP_W_I2C0>,
783				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
784			clock-names = "main", "dma";
785			#address-cells = <1>;
786			#size-cells = <0>;
787			status = "okay";
788		};
789
790		i2c1: i2c@11e01000 {
791			compatible = "mediatek,mt8195-i2c",
792				     "mediatek,mt8192-i2c";
793			reg = <0 0x11e01000 0 0x1000>,
794			      <0 0x10220200 0 0x80>;
795			interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH 0>;
796			clock-div = <1>;
797			clocks = <&imp_iic_wrap_w CLK_IMP_IIC_WRAP_W_I2C1>,
798				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
799			clock-names = "main", "dma";
800			#address-cells = <1>;
801			#size-cells = <0>;
802			status = "disabled";
803		};
804
805		i2c2: i2c@11e02000 {
806			compatible = "mediatek,mt8195-i2c",
807				     "mediatek,mt8192-i2c";
808			reg = <0 0x11e02000 0 0x1000>,
809			      <0 0x10220380 0 0x80>;
810			interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH 0>;
811			clock-div = <1>;
812			clocks = <&imp_iic_wrap_w CLK_IMP_IIC_WRAP_W_I2C2>,
813				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
814			clock-names = "main", "dma";
815			#address-cells = <1>;
816			#size-cells = <0>;
817			status = "disabled";
818		};
819
820		i2c3: i2c@11e03000 {
821			compatible = "mediatek,mt8195-i2c",
822				     "mediatek,mt8192-i2c";
823			reg = <0 0x11e03000 0 0x1000>,
824			      <0 0x10220480 0 0x80>;
825			interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH 0>;
826			clock-div = <1>;
827			clocks = <&imp_iic_wrap_w CLK_IMP_IIC_WRAP_W_I2C3>,
828				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
829			clock-names = "main", "dma";
830			#address-cells = <1>;
831			#size-cells = <0>;
832			status = "disabled";
833		};
834
835		i2c4: i2c@11e04000 {
836			compatible = "mediatek,mt8195-i2c",
837				     "mediatek,mt8192-i2c";
838			reg = <0 0x11e04000 0 0x1000>,
839			      <0 0x10220500 0 0x80>;
840			interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH 0>;
841			clock-div = <1>;
842			clocks = <&imp_iic_wrap_w CLK_IMP_IIC_WRAP_W_I2C4>,
843				 <&infracfg_ao CLK_INFRA_AO_APDMA_B>;
844			clock-names = "main", "dma";
845			#address-cells = <1>;
846			#size-cells = <0>;
847			status = "disabled";
848		};
849
850		imp_iic_wrap_w: clock-controller@11e05000 {
851			compatible = "mediatek,mt8195-imp_iic_wrap_w";
852			reg = <0 0x11e05000 0 0x1000>;
853			#clock-cells = <1>;
854		};
855
856		u3phy1: t-phy@11e30000 {
857			compatible = "mediatek,mt8195-tphy", "mediatek,generic-tphy-v3";
858			#address-cells = <1>;
859			#size-cells = <1>;
860			ranges = <0 0 0x11e30000 0xe00>;
861			status = "disabled";
862
863			u2port1: usb-phy@0 {
864				reg = <0x0 0x700>;
865				clocks = <&topckgen CLK_TOP_SSUSB_PHY_P1_REF>,
866					 <&clk26m>;
867				clock-names = "ref", "da_ref";
868				#phy-cells = <1>;
869			};
870
871			u3port1: usb-phy@700 {
872				reg = <0x700 0x700>;
873				clocks = <&apmixedsys CLK_APMIXED_PLL_SSUSB26M>,
874					 <&topckgen CLK_TOP_SSUSB_PHY_P1_REF>;
875				clock-names = "ref", "da_ref";
876				#phy-cells = <1>;
877			};
878		};
879
880		u3phy0: t-phy@11e40000 {
881			compatible = "mediatek,mt8195-tphy", "mediatek,generic-tphy-v3";
882			#address-cells = <1>;
883			#size-cells = <1>;
884			ranges = <0 0 0x11e40000 0xe00>;
885			status = "disabled";
886
887			u2port0: usb-phy@0 {
888				reg = <0x0 0x700>;
889				clocks = <&topckgen CLK_TOP_SSUSB_PHY_REF>,
890					 <&clk26m>;
891				clock-names = "ref", "da_ref";
892				#phy-cells = <1>;
893			};
894
895			u3port0: usb-phy@700 {
896				reg = <0x700 0x700>;
897				clocks = <&apmixedsys CLK_APMIXED_PLL_SSUSB26M>,
898					 <&topckgen CLK_TOP_SSUSB_PHY_REF>;
899				clock-names = "ref", "da_ref";
900				#phy-cells = <1>;
901			};
902		};
903
904		ufsphy: ufs-phy@11fa0000 {
905			compatible = "mediatek,mt8195-ufsphy", "mediatek,mt8183-ufsphy";
906			reg = <0 0x11fa0000 0 0xc000>;
907			clocks = <&clk26m>, <&clk26m>;
908			clock-names = "unipro", "mp";
909			#phy-cells = <0>;
910			status = "disabled";
911		};
912
913		mfgcfg: clock-controller@13fbf000 {
914			compatible = "mediatek,mt8195-mfgcfg";
915			reg = <0 0x13fbf000 0 0x1000>;
916			#clock-cells = <1>;
917		};
918
919		wpesys: clock-controller@14e00000 {
920			compatible = "mediatek,mt8195-wpesys";
921			reg = <0 0x14e00000 0 0x1000>;
922			#clock-cells = <1>;
923		};
924
925		wpesys_vpp0: clock-controller@14e02000 {
926			compatible = "mediatek,mt8195-wpesys_vpp0";
927			reg = <0 0x14e02000 0 0x1000>;
928			#clock-cells = <1>;
929		};
930
931		wpesys_vpp1: clock-controller@14e03000 {
932			compatible = "mediatek,mt8195-wpesys_vpp1";
933			reg = <0 0x14e03000 0 0x1000>;
934			#clock-cells = <1>;
935		};
936
937		imgsys: clock-controller@15000000 {
938			compatible = "mediatek,mt8195-imgsys";
939			reg = <0 0x15000000 0 0x1000>;
940			#clock-cells = <1>;
941		};
942
943		imgsys1_dip_top: clock-controller@15110000 {
944			compatible = "mediatek,mt8195-imgsys1_dip_top";
945			reg = <0 0x15110000 0 0x1000>;
946			#clock-cells = <1>;
947		};
948
949		imgsys1_dip_nr: clock-controller@15130000 {
950			compatible = "mediatek,mt8195-imgsys1_dip_nr";
951			reg = <0 0x15130000 0 0x1000>;
952			#clock-cells = <1>;
953		};
954
955		imgsys1_wpe: clock-controller@15220000 {
956			compatible = "mediatek,mt8195-imgsys1_wpe";
957			reg = <0 0x15220000 0 0x1000>;
958			#clock-cells = <1>;
959		};
960
961		ipesys: clock-controller@15330000 {
962			compatible = "mediatek,mt8195-ipesys";
963			reg = <0 0x15330000 0 0x1000>;
964			#clock-cells = <1>;
965		};
966
967		camsys: clock-controller@16000000 {
968			compatible = "mediatek,mt8195-camsys";
969			reg = <0 0x16000000 0 0x1000>;
970			#clock-cells = <1>;
971		};
972
973		camsys_rawa: clock-controller@1604f000 {
974			compatible = "mediatek,mt8195-camsys_rawa";
975			reg = <0 0x1604f000 0 0x1000>;
976			#clock-cells = <1>;
977		};
978
979		camsys_yuva: clock-controller@1606f000 {
980			compatible = "mediatek,mt8195-camsys_yuva";
981			reg = <0 0x1606f000 0 0x1000>;
982			#clock-cells = <1>;
983		};
984
985		camsys_rawb: clock-controller@1608f000 {
986			compatible = "mediatek,mt8195-camsys_rawb";
987			reg = <0 0x1608f000 0 0x1000>;
988			#clock-cells = <1>;
989		};
990
991		camsys_yuvb: clock-controller@160af000 {
992			compatible = "mediatek,mt8195-camsys_yuvb";
993			reg = <0 0x160af000 0 0x1000>;
994			#clock-cells = <1>;
995		};
996
997		camsys_mraw: clock-controller@16140000 {
998			compatible = "mediatek,mt8195-camsys_mraw";
999			reg = <0 0x16140000 0 0x1000>;
1000			#clock-cells = <1>;
1001		};
1002
1003		ccusys: clock-controller@17200000 {
1004			compatible = "mediatek,mt8195-ccusys";
1005			reg = <0 0x17200000 0 0x1000>;
1006			#clock-cells = <1>;
1007		};
1008
1009		vdecsys_soc: clock-controller@1800f000 {
1010			compatible = "mediatek,mt8195-vdecsys_soc";
1011			reg = <0 0x1800f000 0 0x1000>;
1012			#clock-cells = <1>;
1013		};
1014
1015		vdecsys: clock-controller@1802f000 {
1016			compatible = "mediatek,mt8195-vdecsys";
1017			reg = <0 0x1802f000 0 0x1000>;
1018			#clock-cells = <1>;
1019		};
1020
1021		vdecsys_core1: clock-controller@1803f000 {
1022			compatible = "mediatek,mt8195-vdecsys_core1";
1023			reg = <0 0x1803f000 0 0x1000>;
1024			#clock-cells = <1>;
1025		};
1026
1027		apusys_pll: clock-controller@190f3000 {
1028			compatible = "mediatek,mt8195-apusys_pll";
1029			reg = <0 0x190f3000 0 0x1000>;
1030			#clock-cells = <1>;
1031		};
1032
1033		vencsys: clock-controller@1a000000 {
1034			compatible = "mediatek,mt8195-vencsys";
1035			reg = <0 0x1a000000 0 0x1000>;
1036			#clock-cells = <1>;
1037		};
1038
1039		vencsys_core1: clock-controller@1b000000 {
1040			compatible = "mediatek,mt8195-vencsys_core1";
1041			reg = <0 0x1b000000 0 0x1000>;
1042			#clock-cells = <1>;
1043		};
1044	};
1045};
1046