xref: /freebsd/sys/contrib/device-tree/src/arm64/mediatek/mt7988a.dtsi (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
101950c46SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-only OR MIT
201950c46SEmmanuel Vadot
3*0e8011faSEmmanuel Vadot#include <dt-bindings/clock/mediatek,mt7988-clk.h>
401950c46SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
5*0e8011faSEmmanuel Vadot#include <dt-bindings/phy/phy.h>
601950c46SEmmanuel Vadot
701950c46SEmmanuel Vadot/ {
801950c46SEmmanuel Vadot	compatible = "mediatek,mt7988a";
901950c46SEmmanuel Vadot	interrupt-parent = <&gic>;
1001950c46SEmmanuel Vadot	#address-cells = <2>;
1101950c46SEmmanuel Vadot	#size-cells = <2>;
1201950c46SEmmanuel Vadot
1301950c46SEmmanuel Vadot	cpus {
1401950c46SEmmanuel Vadot		#address-cells = <1>;
1501950c46SEmmanuel Vadot		#size-cells = <0>;
1601950c46SEmmanuel Vadot
1701950c46SEmmanuel Vadot		cpu@0 {
1801950c46SEmmanuel Vadot			compatible = "arm,cortex-a73";
1901950c46SEmmanuel Vadot			reg = <0x0>;
2001950c46SEmmanuel Vadot			device_type = "cpu";
2101950c46SEmmanuel Vadot			enable-method = "psci";
2201950c46SEmmanuel Vadot		};
2301950c46SEmmanuel Vadot
2401950c46SEmmanuel Vadot		cpu@1 {
2501950c46SEmmanuel Vadot			compatible = "arm,cortex-a73";
2601950c46SEmmanuel Vadot			reg = <0x1>;
2701950c46SEmmanuel Vadot			device_type = "cpu";
2801950c46SEmmanuel Vadot			enable-method = "psci";
2901950c46SEmmanuel Vadot		};
3001950c46SEmmanuel Vadot
3101950c46SEmmanuel Vadot		cpu@2 {
3201950c46SEmmanuel Vadot			compatible = "arm,cortex-a73";
3301950c46SEmmanuel Vadot			reg = <0x2>;
3401950c46SEmmanuel Vadot			device_type = "cpu";
3501950c46SEmmanuel Vadot			enable-method = "psci";
3601950c46SEmmanuel Vadot		};
3701950c46SEmmanuel Vadot
3801950c46SEmmanuel Vadot		cpu@3 {
3901950c46SEmmanuel Vadot			compatible = "arm,cortex-a73";
4001950c46SEmmanuel Vadot			reg = <0x3>;
4101950c46SEmmanuel Vadot			device_type = "cpu";
4201950c46SEmmanuel Vadot			enable-method = "psci";
4301950c46SEmmanuel Vadot		};
4401950c46SEmmanuel Vadot	};
4501950c46SEmmanuel Vadot
4601950c46SEmmanuel Vadot	oscillator-40m {
4701950c46SEmmanuel Vadot		compatible = "fixed-clock";
4801950c46SEmmanuel Vadot		clock-frequency = <40000000>;
4901950c46SEmmanuel Vadot		#clock-cells = <0>;
5001950c46SEmmanuel Vadot		clock-output-names = "clkxtal";
5101950c46SEmmanuel Vadot	};
5201950c46SEmmanuel Vadot
5301950c46SEmmanuel Vadot	pmu {
5401950c46SEmmanuel Vadot		compatible = "arm,cortex-a73-pmu";
5501950c46SEmmanuel Vadot		interrupt-parent = <&gic>;
5601950c46SEmmanuel Vadot		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
5701950c46SEmmanuel Vadot	};
5801950c46SEmmanuel Vadot
5901950c46SEmmanuel Vadot	psci {
6001950c46SEmmanuel Vadot		compatible = "arm,psci-0.2";
6101950c46SEmmanuel Vadot		method = "smc";
6201950c46SEmmanuel Vadot	};
6301950c46SEmmanuel Vadot
6401950c46SEmmanuel Vadot	soc {
6501950c46SEmmanuel Vadot		compatible = "simple-bus";
6601950c46SEmmanuel Vadot		ranges;
6701950c46SEmmanuel Vadot		#address-cells = <2>;
6801950c46SEmmanuel Vadot		#size-cells = <2>;
6901950c46SEmmanuel Vadot
7001950c46SEmmanuel Vadot		gic: interrupt-controller@c000000 {
7101950c46SEmmanuel Vadot			compatible = "arm,gic-v3";
7201950c46SEmmanuel Vadot			reg = <0 0x0c000000 0 0x40000>,  /* GICD */
7301950c46SEmmanuel Vadot			      <0 0x0c080000 0 0x200000>, /* GICR */
7401950c46SEmmanuel Vadot			      <0 0x0c400000 0 0x2000>,   /* GICC */
7501950c46SEmmanuel Vadot			      <0 0x0c410000 0 0x1000>,   /* GICH */
7601950c46SEmmanuel Vadot			      <0 0x0c420000 0 0x2000>;   /* GICV */
7701950c46SEmmanuel Vadot			interrupt-parent = <&gic>;
7801950c46SEmmanuel Vadot			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
7901950c46SEmmanuel Vadot			interrupt-controller;
8001950c46SEmmanuel Vadot			#interrupt-cells = <3>;
8101950c46SEmmanuel Vadot		};
8201950c46SEmmanuel Vadot
83*0e8011faSEmmanuel Vadot		infracfg: clock-controller@10001000 {
8401950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-infracfg", "syscon";
8501950c46SEmmanuel Vadot			reg = <0 0x10001000 0 0x1000>;
8601950c46SEmmanuel Vadot			#clock-cells = <1>;
8701950c46SEmmanuel Vadot		};
8801950c46SEmmanuel Vadot
8901950c46SEmmanuel Vadot		clock-controller@1001b000 {
9001950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-topckgen", "syscon";
9101950c46SEmmanuel Vadot			reg = <0 0x1001b000 0 0x1000>;
9201950c46SEmmanuel Vadot			#clock-cells = <1>;
9301950c46SEmmanuel Vadot		};
9401950c46SEmmanuel Vadot
9501950c46SEmmanuel Vadot		watchdog: watchdog@1001c000 {
9601950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-wdt";
9701950c46SEmmanuel Vadot			reg = <0 0x1001c000 0 0x1000>;
9801950c46SEmmanuel Vadot			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
9901950c46SEmmanuel Vadot			#reset-cells = <1>;
10001950c46SEmmanuel Vadot		};
10101950c46SEmmanuel Vadot
10201950c46SEmmanuel Vadot		clock-controller@1001e000 {
10301950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-apmixedsys";
10401950c46SEmmanuel Vadot			reg = <0 0x1001e000 0 0x1000>;
10501950c46SEmmanuel Vadot			#clock-cells = <1>;
10601950c46SEmmanuel Vadot		};
10701950c46SEmmanuel Vadot
108*0e8011faSEmmanuel Vadot		pwm@10048000 {
109*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7988-pwm";
110*0e8011faSEmmanuel Vadot			reg = <0 0x10048000 0 0x1000>;
111*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>,
112*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_HCK>,
113*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK1>,
114*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK2>,
115*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK3>,
116*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK4>,
117*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK5>,
118*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK6>,
119*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK7>,
120*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_PWM_CK8>;
121*0e8011faSEmmanuel Vadot			clock-names = "top", "main", "pwm1", "pwm2", "pwm3",
122*0e8011faSEmmanuel Vadot				      "pwm4", "pwm5", "pwm6", "pwm7", "pwm8";
123*0e8011faSEmmanuel Vadot			#pwm-cells = <2>;
124*0e8011faSEmmanuel Vadot			status = "disabled";
125*0e8011faSEmmanuel Vadot		};
126*0e8011faSEmmanuel Vadot
127*0e8011faSEmmanuel Vadot		i2c@11003000 {
128*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-i2c";
129*0e8011faSEmmanuel Vadot			reg = <0 0x11003000 0 0x1000>,
130*0e8011faSEmmanuel Vadot			      <0 0x10217080 0 0x80>;
131*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
132*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_I2C_BCK>,
133*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
134*0e8011faSEmmanuel Vadot			clock-names = "main", "dma";
135*0e8011faSEmmanuel Vadot			#address-cells = <1>;
136*0e8011faSEmmanuel Vadot			#size-cells = <0>;
137*0e8011faSEmmanuel Vadot			status = "disabled";
138*0e8011faSEmmanuel Vadot		};
139*0e8011faSEmmanuel Vadot
140*0e8011faSEmmanuel Vadot		i2c@11004000 {
141*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-i2c";
142*0e8011faSEmmanuel Vadot			reg = <0 0x11004000 0 0x1000>,
143*0e8011faSEmmanuel Vadot			      <0 0x10217100 0 0x80>;
144*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
145*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_I2C_BCK>,
146*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
147*0e8011faSEmmanuel Vadot			clock-names = "main", "dma";
148*0e8011faSEmmanuel Vadot			#address-cells = <1>;
149*0e8011faSEmmanuel Vadot			#size-cells = <0>;
150*0e8011faSEmmanuel Vadot			status = "disabled";
151*0e8011faSEmmanuel Vadot		};
152*0e8011faSEmmanuel Vadot
153*0e8011faSEmmanuel Vadot		i2c@11005000 {
154*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-i2c";
155*0e8011faSEmmanuel Vadot			reg = <0 0x11005000 0 0x1000>,
156*0e8011faSEmmanuel Vadot			      <0 0x10217180 0 0x80>;
157*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
158*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_I2C_BCK>,
159*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
160*0e8011faSEmmanuel Vadot			clock-names = "main", "dma";
161*0e8011faSEmmanuel Vadot			#address-cells = <1>;
162*0e8011faSEmmanuel Vadot			#size-cells = <0>;
163*0e8011faSEmmanuel Vadot			status = "disabled";
164*0e8011faSEmmanuel Vadot		};
165*0e8011faSEmmanuel Vadot
166*0e8011faSEmmanuel Vadot		usb@11190000 {
167*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci";
168*0e8011faSEmmanuel Vadot			reg = <0 0x11190000 0 0x2e00>,
169*0e8011faSEmmanuel Vadot			      <0 0x11193e00 0 0x0100>;
170*0e8011faSEmmanuel Vadot			reg-names = "mac", "ippc";
171*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
172*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_USB_SYS>,
173*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_USB_REF>,
174*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_USB_HCK>,
175*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_133M_USB_HCK>,
176*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_USB_XHCI>;
177*0e8011faSEmmanuel Vadot			clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck";
178*0e8011faSEmmanuel Vadot		};
179*0e8011faSEmmanuel Vadot
180*0e8011faSEmmanuel Vadot		usb@11200000 {
181*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7988-xhci", "mediatek,mtk-xhci";
182*0e8011faSEmmanuel Vadot			reg = <0 0x11200000 0 0x2e00>,
183*0e8011faSEmmanuel Vadot			      <0 0x11203e00 0 0x0100>;
184*0e8011faSEmmanuel Vadot			reg-names = "mac", "ippc";
185*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
186*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_USB_SYS_CK_P1>,
187*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_USB_CK_P1>,
188*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_66M_USB_HCK_CK_P1>,
189*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_133M_USB_HCK_CK_P1>,
190*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_USB_XHCI_CK_P1>;
191*0e8011faSEmmanuel Vadot			clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck";
192*0e8011faSEmmanuel Vadot		};
193*0e8011faSEmmanuel Vadot
19401950c46SEmmanuel Vadot		clock-controller@11f40000 {
19501950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-xfi-pll";
19601950c46SEmmanuel Vadot			reg = <0 0x11f40000 0 0x1000>;
19701950c46SEmmanuel Vadot			resets = <&watchdog 16>;
19801950c46SEmmanuel Vadot			#clock-cells = <1>;
19901950c46SEmmanuel Vadot		};
20001950c46SEmmanuel Vadot
20101950c46SEmmanuel Vadot		clock-controller@15000000 {
20201950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-ethsys", "syscon";
20301950c46SEmmanuel Vadot			reg = <0 0x15000000 0 0x1000>;
20401950c46SEmmanuel Vadot			#clock-cells = <1>;
20501950c46SEmmanuel Vadot			#reset-cells = <1>;
20601950c46SEmmanuel Vadot		};
20701950c46SEmmanuel Vadot
20801950c46SEmmanuel Vadot		clock-controller@15031000 {
20901950c46SEmmanuel Vadot			compatible = "mediatek,mt7988-ethwarp";
21001950c46SEmmanuel Vadot			reg = <0 0x15031000 0 0x1000>;
21101950c46SEmmanuel Vadot			#clock-cells = <1>;
21201950c46SEmmanuel Vadot			#reset-cells = <1>;
21301950c46SEmmanuel Vadot		};
21401950c46SEmmanuel Vadot	};
21501950c46SEmmanuel Vadot
21601950c46SEmmanuel Vadot	timer {
21701950c46SEmmanuel Vadot		compatible = "arm,armv8-timer";
21801950c46SEmmanuel Vadot		interrupt-parent = <&gic>;
21901950c46SEmmanuel Vadot		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
22001950c46SEmmanuel Vadot			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
22101950c46SEmmanuel Vadot			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
22201950c46SEmmanuel Vadot			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
22301950c46SEmmanuel Vadot	};
22401950c46SEmmanuel Vadot};
225