commit:     752206e80c1c703f36d40a7b76fcb92e7ec1634b
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 25 12:27:51 2024 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Wed Dec 25 12:27:51 2024 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=752206e8

wifi: rtw89: 885xb: reset IDMEM mode to prevent download firmware failure

Thanks to Robert Gill

Bug: https://bugs.gentoo.org/946802

Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>

 0000_README                         |  4 ++++
 2400_wifi-rtw89-88xb-firmware.patch | 38 +++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git a/0000_README b/0000_README
index bce37d7e..8238804a 100644
--- a/0000_README
+++ b/0000_README
@@ -335,6 +335,10 @@ Patch:  
2011_netfilter-nf-tables-allow-clone-callbacks-to-sleep.patch
 From:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
 Desc:   netfilter: nf_tables: allow clone callbacks to sleep
 
+Patch:  2400_wifi-rtw89-88xb-firmware patch
+From:   https://bugs.gentoo.org/946802
+Desc:   wifi: rtw89: 885xb: reset IDMEM mode to prevent download firmware 
failure
+
 Patch:  2700_ASoC_max98388_correct_includes.patch
 From:   
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/patch/sound/soc/codecs/max98388.c?id=832beb640e425b5d1a92d8c2002e6b8e0af693eb
 Desc:   ASoC: max98388: Correct the includes

diff --git a/2400_wifi-rtw89-88xb-firmware.patch 
b/2400_wifi-rtw89-88xb-firmware.patch
new file mode 100644
index 00000000..69b844a2
--- /dev/null
+++ b/2400_wifi-rtw89-88xb-firmware.patch
@@ -0,0 +1,38 @@
+--- a/drivers/net/wireless/realtek/rtw89/core.h        2024-12-24 
13:22:23.758244884 -0800
++++ b/drivers/net/wireless/realtek/rtw89/core.h        2024-12-24 
13:33:04.233450134 -0800
+@@ -109,6 +109,7 @@
+ enum rtw89_core_chip_id {
+       RTL8852A,
+       RTL8852B,
++      RTL8852BT,
+       RTL8852C,
+       RTL8851B,
+       RTL8922A,
+@@ -5314,6 +5315,16 @@
+       rcu_read_unlock();
+ }
+ 
++static inline bool rtw89_is_rtl885xb(struct rtw89_dev *rtwdev)
++{
++      enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
++
++      if (chip_id == RTL8852B || chip_id == RTL8851B || chip_id == RTL8852BT)
++              return true;
++
++      return false;
++}
++
+ int rtw89_core_tx_write(struct rtw89_dev *rtwdev, struct ieee80211_vif *vif,
+                       struct ieee80211_sta *sta, struct sk_buff *skb, int 
*qsel);
+ int rtw89_h2c_tx(struct rtw89_dev *rtwdev,
+--- a/drivers/net/wireless/realtek/rtw89/mac.c 2024-12-24 13:22:23.759244880 
-0800
++++ b/drivers/net/wireless/realtek/rtw89/mac.c 2024-12-24 13:24:41.015068494 
-0800
+@@ -3494,7 +3494,7 @@
+ 
+       rtw89_write32(rtwdev, R_AX_WCPU_FW_CTRL, val);
+ 
+-      if (rtwdev->chip->chip_id == RTL8852B)
++      if (rtw89_is_rtl885xb(rtwdev))
+               rtw89_write32_mask(rtwdev, R_AX_SEC_CTRL,
+                                  B_AX_SEC_IDMEM_SIZE_CONFIG_MASK, 0x2);
+ 

Reply via email to