[][mac80211][wifi6][mt76][Bring-up software path for Cheetah MT76]
[Description]
Add software path support for Cheetah MT76 driver.
This commit includes the changes below:
- Add power-on sequence
- Add mcu clock & ap2conn clock
- Add reset & factory partition
If without this patch, Cheetah MT76 driver is not able
to ping and transmit/receive traffic.
[Release-log]
N/A
Change-Id: I54dd86866179c147be1d4999e1a8dbbbf6e78371
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8061492
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-clkitg.dtsi b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-clkitg.dtsi
index 0d6d91d..40e26d4 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-clkitg.dtsi
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-clkitg.dtsi
@@ -176,10 +176,10 @@
<&topckgen CK_TOP_SYSAXI_SEL>,
<&topckgen CK_TOP_SYSAPB_SEL>,
<&topckgen CK_TOP_ARM_DB_MAIN_SEL>,
- <&topckgen CK_TOP_AP2CNN_HOST_SEL>,
+ <&clk40m>,
<&topckgen CK_TOP_NETSYS_SEL>,
<&topckgen CK_TOP_NETSYS_500M_SEL>,
- <&topckgen CK_TOP_NETSYS_MCU_SEL>,
+ <&clk40m>,
<&clk40m>,
<&clk40m>,
<&topckgen CK_TOP_SGM_REG_SEL>,
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts
index f8a8566..d0f834a 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts
@@ -137,6 +137,12 @@
status = "disabled";
};
+&wbsys {
+ status = "okay";
+ pinctrl-names = "dbdc";
+ pinctrl-0 = <&wf_dbdc_pins>;
+};
+
&pio {
spic_pins: spi1-pins {
@@ -159,6 +165,21 @@
groups = "emmc_45";
};
};
+
+ wf_dbdc_pins: wf_dbdc-pins {
+ mux {
+ function = "eth";
+ groups = "wf0_mode1";
+ };
+ conf {
+ pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+ "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+ "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+ "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+ "WF_CBA_RESETB", "WF_DIG_RESETB";
+ drive-strength = <MTK_DRIVE_4mA>;
+ };
+ };
};
&xhci {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-snfi-nand-2500wan-p5.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-snfi-nand-2500wan-p5.dts
index 7967ea8..24eb1d7 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-snfi-nand-2500wan-p5.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-snfi-nand-2500wan-p5.dts
@@ -192,6 +192,13 @@
status = "okay";
};
+&wbsys {
+ mediatek,mtd-eeprom = <&factory 0x0000>;
+ status = "okay";
+ pinctrl-names = "dbdc";
+ pinctrl-0 = <&wf_dbdc_pins>;
+};
+
&pio {
pcie_pins: pcie-pins {
@@ -214,6 +221,21 @@
groups = "spi1_1";
};
};
+
+ wf_dbdc_pins: wf_dbdc-pins {
+ mux {
+ function = "eth";
+ groups = "wf0_mode1";
+ };
+ conf {
+ pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+ "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+ "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+ "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+ "WF_CBA_RESETB", "WF_DIG_RESETB";
+ drive-strength = <MTK_DRIVE_4mA>;
+ };
+ };
};
&xhci {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-2500wan-gmac2.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-2500wan-gmac2.dts
index 5745509..e57bba9 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-2500wan-gmac2.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-2500wan-gmac2.dts
@@ -53,7 +53,7 @@
reg = <0x0100000 0x0080000>;
};
- partition@180000 {
+ factory: partition@180000 {
label = "Factory";
reg = <0x180000 0x0200000>;
};
@@ -204,6 +204,13 @@
};
};
+&wbsys {
+ mediatek,mtd-eeprom = <&factory 0x0000>;
+ status = "okay";
+ pinctrl-names = "dbdc";
+ pinctrl-0 = <&wf_dbdc_pins>;
+};
+
&pio {
i2c_pins: i2c-pins-g0 {
@@ -280,6 +287,21 @@
groups = "uart2_1";
};
};
+
+ wf_dbdc_pins: wf_dbdc-pins {
+ mux {
+ function = "eth";
+ groups = "wf0_mode1";
+ };
+ conf {
+ pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+ "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+ "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+ "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+ "WF_CBA_RESETB", "WF_DIG_RESETB";
+ drive-strength = <MTK_DRIVE_4mA>;
+ };
+ };
};
&xhci {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-gsw.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-gsw.dts
index 998a401..192a457 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-gsw.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-gsw.dts
@@ -53,7 +53,7 @@
reg = <0x0100000 0x0080000>;
};
- partition@180000 {
+ factory: partition@180000 {
label = "Factory";
reg = <0x180000 0x0200000>;
};
@@ -218,6 +218,13 @@
};
};
+&wbsys {
+ mediatek,mtd-eeprom = <&factory 0x0000>;
+ status = "okay";
+ pinctrl-names = "dbdc";
+ pinctrl-0 = <&wf_dbdc_pins>;
+};
+
&pio {
i2c_pins: i2c-pins-g0 {
@@ -294,6 +301,21 @@
groups = "uart2_1";
};
};
+
+ wf_dbdc_pins: wf_dbdc-pins {
+ mux {
+ function = "eth";
+ groups = "wf0_mode1";
+ };
+ conf {
+ pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+ "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+ "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+ "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+ "WF_CBA_RESETB", "WF_DIG_RESETB";
+ drive-strength = <MTK_DRIVE_4mA>;
+ };
+ };
};
&xhci {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-rfb.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-rfb.dts
index e7a7719..726447f 100755
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-rfb.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nand-rfb.dts
@@ -53,7 +53,7 @@
reg = <0x0100000 0x0080000>;
};
- partition@180000 {
+ factory: partition@180000 {
label = "Factory";
reg = <0x180000 0x0200000>;
};
@@ -234,6 +234,13 @@
};
};
+&wbsys {
+ mediatek,mtd-eeprom = <&factory 0x0000>;
+ status = "okay";
+ pinctrl-names = "dbdc";
+ pinctrl-0 = <&wf_dbdc_pins>;
+};
+
&pio {
i2c_pins: i2c-pins-g0 {
@@ -310,6 +317,21 @@
groups = "uart2_1";
};
};
+
+ wf_dbdc_pins: wf_dbdc-pins {
+ mux {
+ function = "eth";
+ groups = "wf0_mode1";
+ };
+ conf {
+ pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+ "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+ "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+ "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+ "WF_CBA_RESETB", "WF_DIG_RESETB";
+ drive-strength = <MTK_DRIVE_4mA>;
+ };
+ };
};
&xhci {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nor-rfb.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nor-rfb.dts
index 270a7cd..3fa55a0 100755
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nor-rfb.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-spim-nor-rfb.dts
@@ -143,7 +143,7 @@
label = "u-boot-env";
reg = <0x40000 0x0010000>;
};
- partition@50000 {
+ factory: partition@50000 {
label = "Factory";
reg = <0x50000 0x00B0000>;
};
@@ -158,6 +158,13 @@
};
};
+&wbsys {
+ mediatek,mtd-eeprom = <&factory 0x0000>;
+ status = "okay";
+ pinctrl-names = "dbdc";
+ pinctrl-0 = <&wf_dbdc_pins>;
+};
+
&pio {
spic_pins: spi1-pins {
mux {
@@ -184,6 +191,21 @@
bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
};
};
+
+ wf_dbdc_pins: wf_dbdc-pins {
+ mux {
+ function = "eth";
+ groups = "wf0_mode1";
+ };
+ conf {
+ pins = "WF_HB1", "WF_HB2", "WF_HB3", "WF_HB4",
+ "WF_HB0", "WF_HB0_B", "WF_HB5", "WF_HB6",
+ "WF_HB7", "WF_HB8", "WF_HB9", "WF_HB10",
+ "WF_TOP_CLK", "WF_TOP_DATA", "WF_XO_REQ",
+ "WF_CBA_RESETB", "WF_DIG_RESETB";
+ drive-strength = <MTK_DRIVE_4mA>;
+ };
+ };
};
&xhci {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981.dtsi b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981.dtsi
index bfc734e..ccaf0ad 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981.dtsi
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981.dtsi
@@ -20,6 +20,7 @@
#include <dt-bindings/pinctrl/mt65xx.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/reset/mt7986-resets.h>
/ {
compatible = "mediatek,mt7981-rfb";
@@ -227,7 +228,7 @@
};
watchdog: watchdog@1001c000 {
- compatible = "mediatek,mt7622-wdt",
+ compatible = "mediatek,mt7986-wdt",
"mediatek,mt6589-wdt";
reg = <0 0x1001c000 0 0x1000>;
interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
@@ -490,13 +491,22 @@
};
wbsys: wbsys@18000000 {
- compatible = "mediatek,wbsys";
- reg = <0 0x18000000 0 0x1000000>;
+ compatible = "mediatek,wbsys",
+ "mediatek,mt7981-wmac";
+ resets = <&watchdog MT7986_TOPRGU_CONSYS_RST>;
+ reset-names = "consys";
+ clocks = <&topckgen CK_TOP_NETSYS_MCU_SEL>,
+ <&topckgen CK_TOP_AP2CNN_HOST_SEL>;
+ clock-names = "mcu", "ap2conn";
+ reg = <0 0x18000000 0 0x1000000>,
+ <0 0x10003000 0 0x1000>,
+ <0 0x11d10000 0 0x1000>;
interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
+ <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
chip_id = <0x7981>;
+ memory-region = <&wmcpu_emi>;
};
wed_pcie: wed_pcie@10003000 {