]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: Fix rtw89_mac_dmac_func_pre_en_ax() for USB/SDIO
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Sat, 1 Nov 2025 19:24:05 +0000 (21:24 +0200)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 4 Nov 2025 01:34:41 +0000 (09:34 +0800)
Set the DMA mode according to the interface type.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/d2250e72-0aa1-422c-8f7f-9aeb283ca376@gmail.com
drivers/net/wireless/realtek/rtw89/mac.c

index df040b4e8855aeff4fb13c879853fd2dc186fe60..b5309ae3fd57df04b81003f182f46155f7c30e08 100644 (file)
@@ -3984,8 +3984,15 @@ static void rtw89_mac_dmac_func_pre_en_ax(struct rtw89_dev *rtwdev)
 
        val = rtw89_read32(rtwdev, R_AX_HAXI_INIT_CFG1);
        val &= ~(B_AX_DMA_MODE_MASK | B_AX_STOP_AXI_MST);
-       val |= FIELD_PREP(B_AX_DMA_MODE_MASK, DMA_MOD_PCIE_1B) |
-              B_AX_TXHCI_EN_V1 | B_AX_RXHCI_EN_V1;
+       val |= B_AX_TXHCI_EN_V1 | B_AX_RXHCI_EN_V1;
+
+       if (rtwdev->hci.type == RTW89_HCI_TYPE_PCIE)
+               val |= FIELD_PREP(B_AX_DMA_MODE_MASK, DMA_MOD_PCIE_1B);
+       else if (rtwdev->hci.type == RTW89_HCI_TYPE_USB)
+               val |= FIELD_PREP(B_AX_DMA_MODE_MASK, DMA_MOD_USB);
+       else
+               val |= FIELD_PREP(B_AX_DMA_MODE_MASK, DMA_MOD_SDIO);
+
        rtw89_write32(rtwdev, R_AX_HAXI_INIT_CFG1, val);
 
        rtw89_write32_clr(rtwdev, R_AX_HAXI_DMA_STOP1,