mt76: update to Git HEAD (2023-12-08)
[openwrt/staging/blocktrron.git] / package / kernel / mt76 / patches / 0004-wifi-mt76-mt7996-fix-fw-loading-timeout.patch
diff --git a/package/kernel/mt76/patches/0004-wifi-mt76-mt7996-fix-fw-loading-timeout.patch b/package/kernel/mt76/patches/0004-wifi-mt76-mt7996-fix-fw-loading-timeout.patch
new file mode 100644 (file)
index 0000000..9c2247b
--- /dev/null
@@ -0,0 +1,38 @@
+From bc37a7ebc267e400fc4e9886b7197b4b866763d1 Mon Sep 17 00:00:00 2001
+From: Lorenzo Bianconi <lorenzo@kernel.org>
+Date: Thu, 21 Dec 2023 10:41:18 +0100
+Subject: [PATCH] wifi: mt76: mt7996: fix fw loading timeout
+
+Fix the following firmware loading error due to a wrong dma register
+configuration if wed is disabled.
+
+[    8.245881] mt7996e_hif 0001:01:00.0: assign IRQ: got 128
+[    8.251308] mt7996e_hif 0001:01:00.0: enabling device (0000 -> 0002)
+[    8.257674] mt7996e_hif 0001:01:00.0: enabling bus mastering
+[    8.263488] mt7996e 0000:01:00.0: assign IRQ: got 126
+[    8.268537] mt7996e 0000:01:00.0: enabling device (0000 -> 0002)
+[    8.274551] mt7996e 0000:01:00.0: enabling bus mastering
+[   28.648773] mt7996e 0000:01:00.0: Message 00000010 (seq 1) timeout
+[   28.654959] mt7996e 0000:01:00.0: Failed to get patch semaphore
+[   29.661033] mt7996e: probe of 0000:01:00.0 failed with error -11
+
+Suggested-by: Sujuan Chen" <sujuan.chen@mediatek.com>
+Fixes: 4920a3a1285f ("wifi: mt76: mt7996: set DMA mask to 36 bits for boards with more than 4GB of RAM")
+Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+ mt7996/dma.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/mt7996/dma.c
++++ b/mt7996/dma.c
+@@ -237,7 +237,8 @@ void mt7996_dma_start(struct mt7996_dev
+                                MT_WFDMA0_GLO_CFG_TX_DMA_EN |
+                                MT_WFDMA0_GLO_CFG_RX_DMA_EN |
+                                MT_WFDMA0_GLO_CFG_OMIT_TX_INFO |
+-                               MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2);
++                               MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2 |
++                               MT_WFDMA0_GLO_CFG_EXT_EN);
+               if (dev->hif2)
+                       mt76_set(dev, MT_WFDMA0_GLO_CFG + hif1_ofs,