]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: usb: Prepare rtw89_usb_ops_mac_pre_init() for RTL8852CU
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Sat, 1 Nov 2025 19:22:56 +0000 (21:22 +0200)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 4 Nov 2025 01:34:19 +0000 (09:34 +0800)
The registers used in rtw89_usb_ops_mac_pre_init() are located at
different offsets in RTL8852CU, so move them to struct rtw89_usb_info,
which is filled in each chip's driver.

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/36b823c9-2cb5-4191-8492-2a291f9dc1db@gmail.com
drivers/net/wireless/realtek/rtw89/rtw8851bu.c
drivers/net/wireless/realtek/rtw89/rtw8852bu.c
drivers/net/wireless/realtek/rtw89/usb.c
drivers/net/wireless/realtek/rtw89/usb.h

index c39acbec12a9ff4212cd3dea5dc45b152c993210..9cc682872d24504b5b3e6da9ca1b060530f6dd16 100644 (file)
@@ -5,9 +5,13 @@
 #include <linux/module.h>
 #include <linux/usb.h>
 #include "rtw8851b.h"
+#include "reg.h"
 #include "usb.h"
 
 static const struct rtw89_usb_info rtw8851b_usb_info = {
+       .usb_host_request_2             = R_AX_USB_HOST_REQUEST_2,
+       .usb_wlan0_1                    = R_AX_USB_WLAN0_1,
+       .hci_func_en                    = R_AX_HCI_FUNC_EN,
        .bulkout_id = {
                [RTW89_DMA_ACH0] = 3,
                [RTW89_DMA_ACH1] = 4,
index 28e69473918ec9eb28bdfb68b10be229d78ad71a..b913cae95e3b51ac8147a3e5dc0af8d040ccff91 100644 (file)
@@ -5,9 +5,13 @@
 #include <linux/module.h>
 #include <linux/usb.h>
 #include "rtw8852b.h"
+#include "reg.h"
 #include "usb.h"
 
 static const struct rtw89_usb_info rtw8852b_usb_info = {
+       .usb_host_request_2             = R_AX_USB_HOST_REQUEST_2,
+       .usb_wlan0_1                    = R_AX_USB_WLAN0_1,
+       .hci_func_en                    = R_AX_HCI_FUNC_EN,
        .bulkout_id = {
                [RTW89_DMA_ACH0] = 3,
                [RTW89_DMA_ACH1] = 4,
index 8c0129d54b6c0cc847b1883c889aa12b1a587234..ea1d8726ec3fd66fd07c0842da4685153f5aeb33 100644 (file)
@@ -678,20 +678,23 @@ static int rtw89_usb_ops_deinit(struct rtw89_dev *rtwdev)
 
 static int rtw89_usb_ops_mac_pre_init(struct rtw89_dev *rtwdev)
 {
+       struct rtw89_usb *rtwusb = rtw89_usb_priv(rtwdev);
+       const struct rtw89_usb_info *info = rtwusb->info;
        u32 val32;
 
-       rtw89_write32_set(rtwdev, R_AX_USB_HOST_REQUEST_2, B_AX_R_USBIO_MODE);
+       rtw89_write32_set(rtwdev, info->usb_host_request_2,
+                         B_AX_R_USBIO_MODE);
 
        /* fix USB IO hang suggest by chihhanli@realtek.com */
-       rtw89_write32_clr(rtwdev, R_AX_USB_WLAN0_1,
+       rtw89_write32_clr(rtwdev, info->usb_wlan0_1,
                          B_AX_USBRX_RST | B_AX_USBTX_RST);
 
-       val32 = rtw89_read32(rtwdev, R_AX_HCI_FUNC_EN);
+       val32 = rtw89_read32(rtwdev, info->hci_func_en);
        val32 &= ~(B_AX_HCI_RXDMA_EN | B_AX_HCI_TXDMA_EN);
-       rtw89_write32(rtwdev, R_AX_HCI_FUNC_EN, val32);
+       rtw89_write32(rtwdev, info->hci_func_en, val32);
 
        val32 |= B_AX_HCI_RXDMA_EN | B_AX_HCI_TXDMA_EN;
-       rtw89_write32(rtwdev, R_AX_HCI_FUNC_EN, val32);
+       rtw89_write32(rtwdev, info->hci_func_en, val32);
        /* fix USB TRX hang suggest by chihhanli@realtek.com */
 
        return 0;
index a27c698a424c4b928de73f5dd27b4f8ac833f8b0..be3a9fbe42c0bca66c8c7c0168bcc6f59973b2c7 100644 (file)
@@ -21,6 +21,9 @@
 #define RTW89_MAX_BULKOUT_NUM          7
 
 struct rtw89_usb_info {
+       u32 usb_host_request_2;
+       u32 usb_wlan0_1;
+       u32 hci_func_en;
        u8 bulkout_id[RTW89_DMA_CH_NUM];
 };