xref: /freebsd/sys/contrib/device-tree/src/arm64/mediatek/mt7981b.dtsi (revision 0e8011faf58b743cc652e3b2ad0f7671227610df)
101950c46SEmmanuel Vadot// SPDX-License-Identifier: GPL-2.0-only OR MIT
201950c46SEmmanuel Vadot
301950c46SEmmanuel Vadot#include <dt-bindings/clock/mediatek,mt7981-clk.h>
401950c46SEmmanuel Vadot#include <dt-bindings/interrupt-controller/arm-gic.h>
5*0e8011faSEmmanuel Vadot#include <dt-bindings/reset/mt7986-resets.h>
601950c46SEmmanuel Vadot
701950c46SEmmanuel Vadot/ {
801950c46SEmmanuel Vadot	compatible = "mediatek,mt7981b";
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-a53";
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-a53";
2601950c46SEmmanuel Vadot			reg = <0x1>;
2701950c46SEmmanuel Vadot			device_type = "cpu";
2801950c46SEmmanuel Vadot			enable-method = "psci";
2901950c46SEmmanuel Vadot		};
3001950c46SEmmanuel Vadot	};
3101950c46SEmmanuel Vadot
3201950c46SEmmanuel Vadot	oscillator-40m {
3301950c46SEmmanuel Vadot		compatible = "fixed-clock";
3401950c46SEmmanuel Vadot		clock-frequency = <40000000>;
3501950c46SEmmanuel Vadot		clock-output-names = "clkxtal";
3601950c46SEmmanuel Vadot		#clock-cells = <0>;
3701950c46SEmmanuel Vadot	};
3801950c46SEmmanuel Vadot
3901950c46SEmmanuel Vadot	psci {
4001950c46SEmmanuel Vadot		compatible = "arm,psci-1.0";
4101950c46SEmmanuel Vadot		method = "smc";
4201950c46SEmmanuel Vadot	};
4301950c46SEmmanuel Vadot
4401950c46SEmmanuel Vadot	soc {
4501950c46SEmmanuel Vadot		compatible = "simple-bus";
4601950c46SEmmanuel Vadot		ranges;
4701950c46SEmmanuel Vadot		#address-cells = <2>;
4801950c46SEmmanuel Vadot		#size-cells = <2>;
4901950c46SEmmanuel Vadot
5001950c46SEmmanuel Vadot		gic: interrupt-controller@c000000 {
5101950c46SEmmanuel Vadot			compatible = "arm,gic-v3";
5201950c46SEmmanuel Vadot			reg = <0 0x0c000000 0 0x40000>,  /* GICD */
5301950c46SEmmanuel Vadot			      <0 0x0c080000 0 0x200000>; /* GICR */
5401950c46SEmmanuel Vadot			interrupt-parent = <&gic>;
5501950c46SEmmanuel Vadot			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
5601950c46SEmmanuel Vadot			interrupt-controller;
5701950c46SEmmanuel Vadot			#interrupt-cells = <3>;
5801950c46SEmmanuel Vadot		};
5901950c46SEmmanuel Vadot
6001950c46SEmmanuel Vadot		infracfg: clock-controller@10001000 {
6101950c46SEmmanuel Vadot			compatible = "mediatek,mt7981-infracfg", "syscon";
6201950c46SEmmanuel Vadot			reg = <0 0x10001000 0 0x1000>;
6301950c46SEmmanuel Vadot			#clock-cells = <1>;
6401950c46SEmmanuel Vadot		};
6501950c46SEmmanuel Vadot
66*0e8011faSEmmanuel Vadot		topckgen: clock-controller@1001b000 {
6701950c46SEmmanuel Vadot			compatible = "mediatek,mt7981-topckgen", "syscon";
6801950c46SEmmanuel Vadot			reg = <0 0x1001b000 0 0x1000>;
6901950c46SEmmanuel Vadot			#clock-cells = <1>;
7001950c46SEmmanuel Vadot		};
7101950c46SEmmanuel Vadot
72*0e8011faSEmmanuel Vadot		watchdog: watchdog@1001c000 {
73*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7986-wdt";
74*0e8011faSEmmanuel Vadot			reg = <0 0x1001c000 0 0x1000>;
75*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
76*0e8011faSEmmanuel Vadot			#reset-cells = <1>;
77*0e8011faSEmmanuel Vadot		};
78*0e8011faSEmmanuel Vadot
7901950c46SEmmanuel Vadot		clock-controller@1001e000 {
8001950c46SEmmanuel Vadot			compatible = "mediatek,mt7981-apmixedsys";
8101950c46SEmmanuel Vadot			reg = <0 0x1001e000 0 0x1000>;
8201950c46SEmmanuel Vadot			#clock-cells = <1>;
8301950c46SEmmanuel Vadot		};
8401950c46SEmmanuel Vadot
8501950c46SEmmanuel Vadot		pwm@10048000 {
8601950c46SEmmanuel Vadot			compatible = "mediatek,mt7981-pwm";
8701950c46SEmmanuel Vadot			reg = <0 0x10048000 0 0x1000>;
8801950c46SEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_PWM_STA>,
8901950c46SEmmanuel Vadot				 <&infracfg CLK_INFRA_PWM_HCK>,
9001950c46SEmmanuel Vadot				 <&infracfg CLK_INFRA_PWM1_CK>,
9101950c46SEmmanuel Vadot				 <&infracfg CLK_INFRA_PWM2_CK>,
9201950c46SEmmanuel Vadot				 <&infracfg CLK_INFRA_PWM3_CK>;
9301950c46SEmmanuel Vadot			clock-names = "top", "main", "pwm1", "pwm2", "pwm3";
9401950c46SEmmanuel Vadot			#pwm-cells = <2>;
9501950c46SEmmanuel Vadot		};
9601950c46SEmmanuel Vadot
97*0e8011faSEmmanuel Vadot		i2c@11007000 {
98*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-i2c";
99*0e8011faSEmmanuel Vadot			reg = <0 0x11007000 0 0x1000>,
100*0e8011faSEmmanuel Vadot			      <0 0x10217080 0 0x80>;
101*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
102*0e8011faSEmmanuel Vadot			clocks = <&infracfg CLK_INFRA_I2C0_CK>,
103*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_AP_DMA_CK>,
104*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_I2C_MCK_CK>,
105*0e8011faSEmmanuel Vadot				 <&infracfg CLK_INFRA_I2C_PCK_CK>;
106*0e8011faSEmmanuel Vadot			clock-names = "main", "dma", "arb", "pmic";
107*0e8011faSEmmanuel Vadot			#address-cells = <1>;
108*0e8011faSEmmanuel Vadot			#size-cells = <0>;
109*0e8011faSEmmanuel Vadot			status = "disabled";
110*0e8011faSEmmanuel Vadot		};
111*0e8011faSEmmanuel Vadot
112*0e8011faSEmmanuel Vadot		pio: pinctrl@11d00000 {
113*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-pinctrl";
114*0e8011faSEmmanuel Vadot			reg = <0 0x11d00000 0 0x1000>,
115*0e8011faSEmmanuel Vadot			      <0 0x11c00000 0 0x1000>,
116*0e8011faSEmmanuel Vadot			      <0 0x11c10000 0 0x1000>,
117*0e8011faSEmmanuel Vadot			      <0 0x11d20000 0 0x1000>,
118*0e8011faSEmmanuel Vadot			      <0 0x11e00000 0 0x1000>,
119*0e8011faSEmmanuel Vadot			      <0 0x11e20000 0 0x1000>,
120*0e8011faSEmmanuel Vadot			      <0 0x11f00000 0 0x1000>,
121*0e8011faSEmmanuel Vadot			      <0 0x11f10000 0 0x1000>,
122*0e8011faSEmmanuel Vadot			      <0 0x1000b000 0 0x1000>;
123*0e8011faSEmmanuel Vadot			reg-names = "gpio", "iocfg_rt", "iocfg_rm", "iocfg_rb", "iocfg_lb",
124*0e8011faSEmmanuel Vadot				    "iocfg_bl", "iocfg_tm", "iocfg_tl", "eint";
125*0e8011faSEmmanuel Vadot			interrupt-controller;
126*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
127*0e8011faSEmmanuel Vadot			interrupt-parent = <&gic>;
128*0e8011faSEmmanuel Vadot			gpio-ranges = <&pio 0 0 56>;
129*0e8011faSEmmanuel Vadot			gpio-controller;
130*0e8011faSEmmanuel Vadot			#gpio-cells = <2>;
131*0e8011faSEmmanuel Vadot			#interrupt-cells = <2>;
132*0e8011faSEmmanuel Vadot		};
133*0e8011faSEmmanuel Vadot
134*0e8011faSEmmanuel Vadot		efuse@11f20000 {
135*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-efuse", "mediatek,efuse";
136*0e8011faSEmmanuel Vadot			reg = <0 0x11f20000 0 0x1000>;
137*0e8011faSEmmanuel Vadot			#address-cells = <1>;
138*0e8011faSEmmanuel Vadot			#size-cells = <1>;
139*0e8011faSEmmanuel Vadot		};
140*0e8011faSEmmanuel Vadot
14101950c46SEmmanuel Vadot		clock-controller@15000000 {
14201950c46SEmmanuel Vadot			compatible = "mediatek,mt7981-ethsys", "syscon";
14301950c46SEmmanuel Vadot			reg = <0 0x15000000 0 0x1000>;
14401950c46SEmmanuel Vadot			#clock-cells = <1>;
14501950c46SEmmanuel Vadot			#reset-cells = <1>;
14601950c46SEmmanuel Vadot		};
147*0e8011faSEmmanuel Vadot
148*0e8011faSEmmanuel Vadot		wifi@18000000 {
149*0e8011faSEmmanuel Vadot			compatible = "mediatek,mt7981-wmac";
150*0e8011faSEmmanuel Vadot			reg = <0 0x18000000 0 0x1000000>,
151*0e8011faSEmmanuel Vadot			      <0 0x10003000 0 0x1000>,
152*0e8011faSEmmanuel Vadot			      <0 0x11d10000 0 0x1000>;
153*0e8011faSEmmanuel Vadot			interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
154*0e8011faSEmmanuel Vadot				     <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
155*0e8011faSEmmanuel Vadot				     <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
156*0e8011faSEmmanuel Vadot				     <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
157*0e8011faSEmmanuel Vadot			clocks = <&topckgen CLK_TOP_NETSYS_MCU_SEL>,
158*0e8011faSEmmanuel Vadot				 <&topckgen CLK_TOP_AP2CNN_HOST_SEL>;
159*0e8011faSEmmanuel Vadot			clock-names = "mcu", "ap2conn";
160*0e8011faSEmmanuel Vadot			resets = <&watchdog MT7986_TOPRGU_CONSYS_SW_RST>;
161*0e8011faSEmmanuel Vadot			reset-names = "consys";
162*0e8011faSEmmanuel Vadot		};
16301950c46SEmmanuel Vadot	};
16401950c46SEmmanuel Vadot
16501950c46SEmmanuel Vadot	timer {
16601950c46SEmmanuel Vadot		compatible = "arm,armv8-timer";
16701950c46SEmmanuel Vadot		interrupt-parent = <&gic>;
16801950c46SEmmanuel Vadot		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
16901950c46SEmmanuel Vadot			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
17001950c46SEmmanuel Vadot			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
17101950c46SEmmanuel Vadot			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
17201950c46SEmmanuel Vadot	};
17301950c46SEmmanuel Vadot};
174