]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw89: mac: add specific case to dump mac memory for RTL8922D
authorPing-Ke Shih <pkshih@realtek.com>
Wed, 25 Mar 2026 07:21:26 +0000 (15:21 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 30 Mar 2026 02:26:49 +0000 (10:26 +0800)
The RTL8922D can reuse most mac memory addresses, but only
RTW89_MAC_MEM_SECURITY_CAM is different from existing one. Add a function
to return the specific memory address for RTL8922D.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260325072130.41751-5-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/debug.c
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h
drivers/net/wireless/realtek/rtw89/ser.c

index 82849d109cc38f1a257ec69000ab2b3a187a0c97..7d8d223110186b559b8ba735ced26a123d474a20 100644 (file)
@@ -1129,7 +1129,7 @@ static int rtw89_debug_dump_mac_mem(struct rtw89_dev *rtwdev,
        pages = len / mem_page_size + 1;
        start_page = start_addr / mem_page_size;
        residue = start_addr % mem_page_size;
-       base_addr = mac->mem_base_addrs[sel];
+       base_addr = rtw89_mac_mem_base_addrs(rtwdev, sel);
        base_addr += start_page * mem_page_size;
 
        for (pp = 0; pp < pages; pp++) {
index 35fd18fe6470ea02500bb6781af7502fdd28a736..54aad37485d6a2590e96cff8f87308fb09dfbe73 100644 (file)
@@ -43,7 +43,7 @@ static void rtw89_mac_mem_write(struct rtw89_dev *rtwdev, u32 offset,
                                u32 val, enum rtw89_mac_mem_sel sel)
 {
        const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
-       u32 addr = mac->mem_base_addrs[sel] + offset;
+       u32 addr = rtw89_mac_mem_base_addrs(rtwdev, sel) + offset;
 
        rtw89_write32(rtwdev, mac->filter_model_addr, addr);
        rtw89_write32(rtwdev, mac->indir_access_addr, val);
@@ -53,7 +53,7 @@ static u32 rtw89_mac_mem_read(struct rtw89_dev *rtwdev, u32 offset,
                              enum rtw89_mac_mem_sel sel)
 {
        const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
-       u32 addr = mac->mem_base_addrs[sel] + offset;
+       u32 addr = rtw89_mac_mem_base_addrs(rtwdev, sel) + offset;
 
        rtw89_write32(rtwdev, mac->filter_model_addr, addr);
        return rtw89_read32(rtwdev, mac->indir_access_addr);
index 88a877556cb3cbb3640f9a996e415761de0fcf1f..93bedf056f174f7c4ea369dde415a29cb080256a 100644 (file)
@@ -334,6 +334,7 @@ enum rtw89_mac_dbg_port_sel {
 #define NAT25_CAM_BASE_ADDR_BE         0x18820000
 #define RXPLD_FLTR_CAM_BASE_ADDR_BE    0x18823000
 #define SEC_CAM_BASE_ADDR_BE           0x18824000
+#define SEC_CAM_BASE_ADDR_BE_8922D     0x1882C000
 #define WOW_CAM_BASE_ADDR_BE           0x18828000
 #define MLD_TBL_BASE_ADDR_BE           0x18829000
 #define RX_CLSF_CAM_BASE_ADDR_BE       0x1882A000
@@ -1131,6 +1132,18 @@ struct rtw89_mac_gen_def {
 extern const struct rtw89_mac_gen_def rtw89_mac_gen_ax;
 extern const struct rtw89_mac_gen_def rtw89_mac_gen_be;
 
+static inline
+u32 rtw89_mac_mem_base_addrs(struct rtw89_dev *rtwdev, u8 sel)
+{
+       const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
+
+       if (rtwdev->chip->chip_id == RTL8922D &&
+           sel == RTW89_MAC_MEM_SECURITY_CAM)
+               return SEC_CAM_BASE_ADDR_BE_8922D;
+
+       return mac->mem_base_addrs[sel];
+}
+
 static inline
 u32 rtw89_mac_reg_by_idx(struct rtw89_dev *rtwdev, u32 reg_base, u8 band)
 {
index 75220042a9a7a5ea8985e25c7fbee8ca8ae96001..a507ce1fcd6307b3af56798e6b601ad2792dc5b1 100644 (file)
@@ -589,7 +589,7 @@ static void ser_mac_mem_dump(struct rtw89_dev *rtwdev, u8 *buf,
 
        start_page = start_addr / mem_page_size;
        residue = start_addr % mem_page_size;
-       base_addr = mac->mem_base_addrs[sel];
+       base_addr = rtw89_mac_mem_base_addrs(rtwdev, sel);
        base_addr += start_page * mem_page_size;
 
        while (cnt < len) {