wifi: rtw89: improve compatibility of download firmware and PCI PHY
Ping-Ke Shih
maintainercover wifi: rtw89: improve compatibility of download firmware and PCI PHY
RTL8852BE was reported possibly failed to download firmware during stressed suspend/resume test. Add retry mechanism to avoid this rare failure caused by abnormal hardware state.
For RTL8852CE, set PCI PHY parameters to improve compatibility to avoid card lost during stressed reboot test. Since some parameters are only needed by certain platforms, add quirks for them.
Also, update 5.9GHz TX power table of IC for RTL8852C.
Chia-Yuan Li (1):
wifi: rtw89: download firmware with five times retry
Ping-Ke Shih (2):
wifi: rtw89: 8852c: add quirk to set PCI BER for certain platforms
wifi: rtw89: 8852c: disable PCI PHY EQ to improve compatibility
Zong-Zhe Yang (1):
wifi: rtw89: 8852c: update TX power tables to R69
drivers/net/wireless/realtek/rtw89/core.c | 18 ++++ drivers/net/wireless/realtek/rtw89/core.h | 10 ++ drivers/net/wireless/realtek/rtw89/fw.c | 27 ++++-- drivers/net/wireless/realtek/rtw89/pci.c | 91 +++++++++++++++++++ drivers/net/wireless/realtek/rtw89/pci.h | 13 +++ .../net/wireless/realtek/rtw89/rtw8851be.c | 1 + .../net/wireless/realtek/rtw89/rtw8852ae.c | 1 + .../net/wireless/realtek/rtw89/rtw8852be.c | 1 + .../wireless/realtek/rtw89/rtw8852c_table.c | 90 +++++++++--------- .../net/wireless/realtek/rtw89/rtw8852ce.c | 23 +++++ .../net/wireless/realtek/rtw89/rtw8922ae.c | 1 + 11 files changed, 225 insertions(+), 51 deletions(-)
Signature · 1 line
2.25.1
Ping-Ke Shih
maintainerPATCH 1/4 wifi: rtw89: download firmware with five times retry
From: Chia-Yuan Li <[email protected]>
After firmware boots, it reads keys info from efuse and checks secure checksum, but suddenly failed to access efuse resulting in probe failure, and driver throws messages:
rtw89_8852be 0000:03:00.0: fw security fail rtw89_8852be 0000:03:00.0: download firmware fail rtw89_8852be 0000:03:00.0: [ERR]fwdl 0x1E0 = 0xe2 rtw89_8852be 0000:03:00.0: [ERR]fwdl 0x83F0 = 0x210090
Retry five times to resolve rare abnormal hardware state.
--- drivers/net/wireless/realtek/rtw89/fw.c | 27 +++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-)
drivers/net/wireless/realtek/rtw89/fw.c +21 -6
@@ -1349,13 +1349,12 @@ static void rtw89_fw_prog_cnt_dump(struct rtw89_dev *rtwdev)static void rtw89_fw_dl_fail_dump (struct rtw89_dev *rtwdev) {u32 val32; -u16 val16; val32 =rtw89_read32 (rtwdev,R_AX_WCPU_FW_CTRL );rtw89_err (rtwdev,"[ERR]fwdl 0x1E0 = 0x%x\n" , val32); - val16 =rtw89_read16 (rtwdev,R_AX_BOOT_DBG +2 ); -rtw89_err (rtwdev,"[ERR]fwdl 0x83F2 = 0x%x\n" , val16); + val32 =rtw89_read32 (rtwdev,R_AX_BOOT_DBG ); +rtw89_err (rtwdev,"[ERR]fwdl 0x83F0 = 0x%x\n" , val32);rtw89_fw_prog_cnt_dump (rtwdev); }
@@ -1394,8 +1393,9 @@ static int rtw89_fw_download_suit(struct rtw89_dev *rtwdev,return 0 ; } -int rtw89_fw_download (struct rtw89_dev *rtwdev,enum rtw89_fw_type type, -bool include_bb) +static +int __rtw89_fw_download (struct rtw89_dev *rtwdev,enum rtw89_fw_type type, +bool include_bb) {const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;struct rtw89_fw_info *fw_info = &rtwdev->fw;
@@ -1433,7 +1433,7 @@ int rtw89_fw_download(struct rtw89_dev *rtwdev, enum rtw89_fw_type type, ret =rtw89_fw_check_rdy (rtwdev,RTW89_FWDL_CHECK_FREERTOS_DONE );if (ret) {rtw89_warn (rtwdev,"download firmware fail\n" ); -return ret; + goto fwdl_err; }return ret;
@@ -1443,6 +1443,21 @@ int rtw89_fw_download(struct rtw89_dev *rtwdev, enum rtw89_fw_type type,return ret; } +int rtw89_fw_download (struct rtw89_dev *rtwdev,enum rtw89_fw_type type, +bool include_bb) +{ +int retry; +int ret; + +for (retry =0 ; retry <5 ; retry++) { + ret =__rtw89_fw_download (rtwdev, type, include_bb); +if (!ret) +return 0 ; + } + +return ret; +} +int rtw89_wait_firmware_completion (struct rtw89_dev *rtwdev) {struct rtw89_fw_info *fw = &rtwdev->fw;
Signature · 1 line
2.25.1
Ping-Ke Shih
maintainerRe: [PATCH 1/4] wifi: rtw89: download firmware with five times retry
Quoted 11 lines · Ping-Ke Shih
From: Chia-Yuan Li <[email protected]>
After firmware boots, it reads keys info from efuse and checks secure checksum, but suddenly failed to access efuse resulting in probe failure, and driver throws messages:
rtw89_8852be0000:03:00.0: fw security failrtw89_8852be0000:03:00.0: download firmware failrtw89_8852be0000:03:00.0: [ERR]fwdl0x1E0=0xe2rtw89_8852be0000:03:00.0: [ERR]fwdl0x83F0=0x210090
Quoted 4 lines
Retry five times to resolve rare abnormal hardware state.
Signed-off-by Chia-Yuan Li <[email protected]>Signed-off-by Ping-Ke Shih <[email protected]>
4 patch(es) applied to rtw-next branch of rtw.git, thanks.
a9e1b0ec5bde wifi: rtw89: download firmware with five times retry 973719185ad1 wifi: rtw89: 8852c: update TX power tables to R69 5b919d726b61 wifi: rtw89: 8852c: add quirk to set PCI BER for certain platforms a78d33a1286c wifi: rtw89: 8852c: disable PCI PHY EQ to improve compatibility
Ping-Ke Shih
maintainerPATCH 2/4 wifi: rtw89: 8852c: update TX power tables to R69
In reply to Ping-Ke ShihFrom: Zong-Zhe Yang <[email protected]>
Configure applicable values for IC (Industry Canada) on 5.9GHz.
--- .../wireless/realtek/rtw89/rtw8852c_table.c | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-)
drivers/net/wireless/realtek/rtw89/rtw8852c_table.c +45 -45
@@ -34521,7 +34521,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][0][1][0][RTW89_FCC][48] = 72, [0][0][1][0][RTW89_ETSI][48] = 127, [0][0][1][0][RTW89_MKK][48] = 127, - [0][0][1][0][RTW89_IC][48] = 127, + [0][0][1][0][RTW89_IC][48] = 72, [0][0][1][0][RTW89_KCC][48] = 127, [0][0][1][0][RTW89_ACMA][48] = 127, [0][0][1][0][RTW89_CN][48] = 127,
@@ -34534,7 +34534,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][0][1][0][RTW89_FCC][50] = 72, [0][0][1][0][RTW89_ETSI][50] = 127, [0][0][1][0][RTW89_MKK][50] = 127, - [0][0][1][0][RTW89_IC][50] = 127, + [0][0][1][0][RTW89_IC][50] = 72, [0][0][1][0][RTW89_KCC][50] = 127, [0][0][1][0][RTW89_ACMA][50] = 127, [0][0][1][0][RTW89_CN][50] = 127,
@@ -34547,7 +34547,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][0][1][0][RTW89_FCC][52] = 72, [0][0][1][0][RTW89_ETSI][52] = 127, [0][0][1][0][RTW89_MKK][52] = 127, - [0][0][1][0][RTW89_IC][52] = 127, + [0][0][1][0][RTW89_IC][52] = 72, [0][0][1][0][RTW89_KCC][52] = 127, [0][0][1][0][RTW89_ACMA][52] = 127, [0][0][1][0][RTW89_CN][52] = 127,
@@ -34885,7 +34885,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][1][0][RTW89_FCC][48] = 48, [0][1][1][0][RTW89_ETSI][48] = 127, [0][1][1][0][RTW89_MKK][48] = 127, - [0][1][1][0][RTW89_IC][48] = 127, + [0][1][1][0][RTW89_IC][48] = 48, [0][1][1][0][RTW89_KCC][48] = 127, [0][1][1][0][RTW89_ACMA][48] = 127, [0][1][1][0][RTW89_CN][48] = 127,
@@ -34898,7 +34898,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][1][0][RTW89_FCC][50] = 48, [0][1][1][0][RTW89_ETSI][50] = 127, [0][1][1][0][RTW89_MKK][50] = 127, - [0][1][1][0][RTW89_IC][50] = 127, + [0][1][1][0][RTW89_IC][50] = 48, [0][1][1][0][RTW89_KCC][50] = 127, [0][1][1][0][RTW89_ACMA][50] = 127, [0][1][1][0][RTW89_CN][50] = 127,
@@ -34911,7 +34911,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][1][0][RTW89_FCC][52] = 48, [0][1][1][0][RTW89_ETSI][52] = 127, [0][1][1][0][RTW89_MKK][52] = 127, - [0][1][1][0][RTW89_IC][52] = 127, + [0][1][1][0][RTW89_IC][52] = 48, [0][1][1][0][RTW89_KCC][52] = 127, [0][1][1][0][RTW89_ACMA][52] = 127, [0][1][1][0][RTW89_CN][52] = 127,
@@ -35249,7 +35249,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][0][2][0][RTW89_FCC][48] = 72, [0][0][2][0][RTW89_ETSI][48] = 127, [0][0][2][0][RTW89_MKK][48] = 127, - [0][0][2][0][RTW89_IC][48] = 127, + [0][0][2][0][RTW89_IC][48] = 72, [0][0][2][0][RTW89_KCC][48] = 127, [0][0][2][0][RTW89_ACMA][48] = 127, [0][0][2][0][RTW89_CN][48] = 127,
@@ -35262,7 +35262,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][0][2][0][RTW89_FCC][50] = 72, [0][0][2][0][RTW89_ETSI][50] = 127, [0][0][2][0][RTW89_MKK][50] = 127, - [0][0][2][0][RTW89_IC][50] = 127, + [0][0][2][0][RTW89_IC][50] = 72, [0][0][2][0][RTW89_KCC][50] = 127, [0][0][2][0][RTW89_ACMA][50] = 127, [0][0][2][0][RTW89_CN][50] = 127,
@@ -35275,7 +35275,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][0][2][0][RTW89_FCC][52] = 72, [0][0][2][0][RTW89_ETSI][52] = 127, [0][0][2][0][RTW89_MKK][52] = 127, - [0][0][2][0][RTW89_IC][52] = 127, + [0][0][2][0][RTW89_IC][52] = 72, [0][0][2][0][RTW89_KCC][52] = 127, [0][0][2][0][RTW89_ACMA][52] = 127, [0][0][2][0][RTW89_CN][52] = 127,
@@ -35613,7 +35613,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][2][0][RTW89_FCC][48] = 48, [0][1][2][0][RTW89_ETSI][48] = 127, [0][1][2][0][RTW89_MKK][48] = 127, - [0][1][2][0][RTW89_IC][48] = 127, + [0][1][2][0][RTW89_IC][48] = 48, [0][1][2][0][RTW89_KCC][48] = 127, [0][1][2][0][RTW89_ACMA][48] = 127, [0][1][2][0][RTW89_CN][48] = 127,
@@ -35626,7 +35626,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][2][0][RTW89_FCC][50] = 50, [0][1][2][0][RTW89_ETSI][50] = 127, [0][1][2][0][RTW89_MKK][50] = 127, - [0][1][2][0][RTW89_IC][50] = 127, + [0][1][2][0][RTW89_IC][50] = 50, [0][1][2][0][RTW89_KCC][50] = 127, [0][1][2][0][RTW89_ACMA][50] = 127, [0][1][2][0][RTW89_CN][50] = 127,
@@ -35639,7 +35639,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][2][0][RTW89_FCC][52] = 48, [0][1][2][0][RTW89_ETSI][52] = 127, [0][1][2][0][RTW89_MKK][52] = 127, - [0][1][2][0][RTW89_IC][52] = 127, + [0][1][2][0][RTW89_IC][52] = 48, [0][1][2][0][RTW89_KCC][52] = 127, [0][1][2][0][RTW89_ACMA][52] = 127, [0][1][2][0][RTW89_CN][52] = 127,
@@ -35977,7 +35977,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][2][1][RTW89_FCC][48] = 48, [0][1][2][1][RTW89_ETSI][48] = 127, [0][1][2][1][RTW89_MKK][48] = 127, - [0][1][2][1][RTW89_IC][48] = 127, + [0][1][2][1][RTW89_IC][48] = 48, [0][1][2][1][RTW89_KCC][48] = 127, [0][1][2][1][RTW89_ACMA][48] = 127, [0][1][2][1][RTW89_CN][48] = 127,
@@ -35990,7 +35990,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][2][1][RTW89_FCC][50] = 50, [0][1][2][1][RTW89_ETSI][50] = 127, [0][1][2][1][RTW89_MKK][50] = 127, - [0][1][2][1][RTW89_IC][50] = 127, + [0][1][2][1][RTW89_IC][50] = 50, [0][1][2][1][RTW89_KCC][50] = 127, [0][1][2][1][RTW89_ACMA][50] = 127, [0][1][2][1][RTW89_CN][50] = 127,
@@ -36003,7 +36003,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [0][1][2][1][RTW89_FCC][52] = 48, [0][1][2][1][RTW89_ETSI][52] = 127, [0][1][2][1][RTW89_MKK][52] = 127, - [0][1][2][1][RTW89_IC][52] = 127, + [0][1][2][1][RTW89_IC][52] = 48, [0][1][2][1][RTW89_KCC][52] = 127, [0][1][2][1][RTW89_ACMA][52] = 127, [0][1][2][1][RTW89_CN][52] = 127,
@@ -36172,7 +36172,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [1][0][2][0][RTW89_FCC][47] = 68, [1][0][2][0][RTW89_ETSI][47] = 127, [1][0][2][0][RTW89_MKK][47] = 127, - [1][0][2][0][RTW89_IC][47] = 127, + [1][0][2][0][RTW89_IC][47] = 68, [1][0][2][0][RTW89_KCC][47] = 127, [1][0][2][0][RTW89_ACMA][47] = 127, [1][0][2][0][RTW89_CN][47] = 127,
@@ -36185,7 +36185,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [1][0][2][0][RTW89_FCC][51] = 68, [1][0][2][0][RTW89_ETSI][51] = 127, [1][0][2][0][RTW89_MKK][51] = 127, - [1][0][2][0][RTW89_IC][51] = 127, + [1][0][2][0][RTW89_IC][51] = 68, [1][0][2][0][RTW89_KCC][51] = 127, [1][0][2][0][RTW89_ACMA][51] = 127, [1][0][2][0][RTW89_CN][51] = 127,
@@ -36354,7 +36354,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [1][1][2][0][RTW89_FCC][47] = 62, [1][1][2][0][RTW89_ETSI][47] = 127, [1][1][2][0][RTW89_MKK][47] = 127, - [1][1][2][0][RTW89_IC][47] = 127, + [1][1][2][0][RTW89_IC][47] = 62, [1][1][2][0][RTW89_KCC][47] = 127, [1][1][2][0][RTW89_ACMA][47] = 127, [1][1][2][0][RTW89_CN][47] = 127,
@@ -36367,7 +36367,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [1][1][2][0][RTW89_FCC][51] = 60, [1][1][2][0][RTW89_ETSI][51] = 127, [1][1][2][0][RTW89_MKK][51] = 127, - [1][1][2][0][RTW89_IC][51] = 127, + [1][1][2][0][RTW89_IC][51] = 60, [1][1][2][0][RTW89_KCC][51] = 127, [1][1][2][0][RTW89_ACMA][51] = 127, [1][1][2][0][RTW89_CN][51] = 127,
@@ -36536,7 +36536,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [1][1][2][1][RTW89_FCC][47] = 62, [1][1][2][1][RTW89_ETSI][47] = 127, [1][1][2][1][RTW89_MKK][47] = 127, - [1][1][2][1][RTW89_IC][47] = 127, + [1][1][2][1][RTW89_IC][47] = 62, [1][1][2][1][RTW89_KCC][47] = 127, [1][1][2][1][RTW89_ACMA][47] = 127, [1][1][2][1][RTW89_CN][47] = 127,
@@ -36549,7 +36549,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [1][1][2][1][RTW89_FCC][51] = 60, [1][1][2][1][RTW89_ETSI][51] = 127, [1][1][2][1][RTW89_MKK][51] = 127, - [1][1][2][1][RTW89_IC][51] = 127, + [1][1][2][1][RTW89_IC][51] = 60, [1][1][2][1][RTW89_KCC][51] = 127, [1][1][2][1][RTW89_ACMA][51] = 127, [1][1][2][1][RTW89_CN][51] = 127,
@@ -36640,7 +36640,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [2][0][2][0][RTW89_FCC][49] = 62, [2][0][2][0][RTW89_ETSI][49] = 127, [2][0][2][0][RTW89_MKK][49] = 127, - [2][0][2][0][RTW89_IC][49] = 127, + [2][0][2][0][RTW89_IC][49] = 62, [2][0][2][0][RTW89_KCC][49] = 127, [2][0][2][0][RTW89_ACMA][49] = 127, [2][0][2][0][RTW89_CN][49] = 127,
@@ -36731,7 +36731,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [2][1][2][0][RTW89_FCC][49] = 62, [2][1][2][0][RTW89_ETSI][49] = 127, [2][1][2][0][RTW89_MKK][49] = 127, - [2][1][2][0][RTW89_IC][49] = 127, + [2][1][2][0][RTW89_IC][49] = 62, [2][1][2][0][RTW89_KCC][49] = 127, [2][1][2][0][RTW89_ACMA][49] = 127, [2][1][2][0][RTW89_CN][49] = 127,
@@ -36822,7 +36822,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [2][1][2][1][RTW89_FCC][49] = 62, [2][1][2][1][RTW89_ETSI][49] = 127, [2][1][2][1][RTW89_MKK][49] = 127, - [2][1][2][1][RTW89_IC][49] = 127, + [2][1][2][1][RTW89_IC][49] = 62, [2][1][2][1][RTW89_KCC][49] = 127, [2][1][2][1][RTW89_ACMA][49] = 127, [2][1][2][1][RTW89_CN][49] = 127,
@@ -36861,7 +36861,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [3][0][2][0][RTW89_FCC][45] = 52, [3][0][2][0][RTW89_ETSI][45] = 127, [3][0][2][0][RTW89_MKK][45] = 127, - [3][0][2][0][RTW89_IC][45] = 127, + [3][0][2][0][RTW89_IC][45] = 52, [3][0][2][0][RTW89_KCC][45] = 127, [3][0][2][0][RTW89_ACMA][45] = 127, [3][0][2][0][RTW89_CN][45] = 127,
@@ -36900,7 +36900,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [3][1][2][0][RTW89_FCC][45] = 46, [3][1][2][0][RTW89_ETSI][45] = 127, [3][1][2][0][RTW89_MKK][45] = 127, - [3][1][2][0][RTW89_IC][45] = 127, + [3][1][2][0][RTW89_IC][45] = 46, [3][1][2][0][RTW89_KCC][45] = 127, [3][1][2][0][RTW89_ACMA][45] = 127, [3][1][2][0][RTW89_CN][45] = 127,
@@ -36939,7 +36939,7 @@ const s8 rtw89_8852c_txpwr_lmt_5g[RTW89_5G_BW_NUM][RTW89_NTX_NUM] [3][1][2][1][RTW89_FCC][45] = 46, [3][1][2][1][RTW89_ETSI][45] = 127, [3][1][2][1][RTW89_MKK][45] = 127, - [3][1][2][1][RTW89_IC][45] = 127, + [3][1][2][1][RTW89_IC][45] = 46, [3][1][2][1][RTW89_KCC][45] = 127, [3][1][2][1][RTW89_ACMA][45] = 127, [3][1][2][1][RTW89_CN][45] = 127,
@@ -49374,7 +49374,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [0][0][RTW89_FCC][48] = 46, [0][0][RTW89_ETSI][48] = 127, [0][0][RTW89_MKK][48] = 127, - [0][0][RTW89_IC][48] = 127, + [0][0][RTW89_IC][48] = 46, [0][0][RTW89_KCC][48] = 127, [0][0][RTW89_ACMA][48] = 127, [0][0][RTW89_CN][48] = 127,
@@ -49387,7 +49387,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [0][0][RTW89_FCC][50] = 44, [0][0][RTW89_ETSI][50] = 127, [0][0][RTW89_MKK][50] = 127, - [0][0][RTW89_IC][50] = 127, + [0][0][RTW89_IC][50] = 44, [0][0][RTW89_KCC][50] = 127, [0][0][RTW89_ACMA][50] = 127, [0][0][RTW89_CN][50] = 127,
@@ -49400,7 +49400,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [0][0][RTW89_FCC][52] = 34, [0][0][RTW89_ETSI][52] = 127, [0][0][RTW89_MKK][52] = 127, - [0][0][RTW89_IC][52] = 127, + [0][0][RTW89_IC][52] = 34, [0][0][RTW89_KCC][52] = 127, [0][0][RTW89_ACMA][52] = 127, [0][0][RTW89_CN][52] = 127,
@@ -49738,7 +49738,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [0][1][RTW89_FCC][48] = 20, [0][1][RTW89_ETSI][48] = 127, [0][1][RTW89_MKK][48] = 127, - [0][1][RTW89_IC][48] = 127, + [0][1][RTW89_IC][48] = 20, [0][1][RTW89_KCC][48] = 127, [0][1][RTW89_ACMA][48] = 127, [0][1][RTW89_CN][48] = 127,
@@ -49751,7 +49751,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [0][1][RTW89_FCC][50] = 20, [0][1][RTW89_ETSI][50] = 127, [0][1][RTW89_MKK][50] = 127, - [0][1][RTW89_IC][50] = 127, + [0][1][RTW89_IC][50] = 20, [0][1][RTW89_KCC][50] = 127, [0][1][RTW89_ACMA][50] = 127, [0][1][RTW89_CN][50] = 127,
@@ -49764,7 +49764,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [0][1][RTW89_FCC][52] = 8, [0][1][RTW89_ETSI][52] = 127, [0][1][RTW89_MKK][52] = 127, - [0][1][RTW89_IC][52] = 127, + [0][1][RTW89_IC][52] = 8, [0][1][RTW89_KCC][52] = 127, [0][1][RTW89_ACMA][52] = 127, [0][1][RTW89_CN][52] = 127,
@@ -50102,7 +50102,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [1][0][RTW89_FCC][48] = 56, [1][0][RTW89_ETSI][48] = 127, [1][0][RTW89_MKK][48] = 127, - [1][0][RTW89_IC][48] = 127, + [1][0][RTW89_IC][48] = 56, [1][0][RTW89_KCC][48] = 127, [1][0][RTW89_ACMA][48] = 127, [1][0][RTW89_CN][48] = 127,
@@ -50115,7 +50115,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [1][0][RTW89_FCC][50] = 58, [1][0][RTW89_ETSI][50] = 127, [1][0][RTW89_MKK][50] = 127, - [1][0][RTW89_IC][50] = 127, + [1][0][RTW89_IC][50] = 58, [1][0][RTW89_KCC][50] = 127, [1][0][RTW89_ACMA][50] = 127, [1][0][RTW89_CN][50] = 127,
@@ -50128,7 +50128,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [1][0][RTW89_FCC][52] = 56, [1][0][RTW89_ETSI][52] = 127, [1][0][RTW89_MKK][52] = 127, - [1][0][RTW89_IC][52] = 127, + [1][0][RTW89_IC][52] = 56, [1][0][RTW89_KCC][52] = 127, [1][0][RTW89_ACMA][52] = 127, [1][0][RTW89_CN][52] = 127,
@@ -50466,7 +50466,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [1][1][RTW89_FCC][48] = 34, [1][1][RTW89_ETSI][48] = 127, [1][1][RTW89_MKK][48] = 127, - [1][1][RTW89_IC][48] = 127, + [1][1][RTW89_IC][48] = 34, [1][1][RTW89_KCC][48] = 127, [1][1][RTW89_ACMA][48] = 127, [1][1][RTW89_CN][48] = 127,
@@ -50479,7 +50479,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [1][1][RTW89_FCC][50] = 34, [1][1][RTW89_ETSI][50] = 127, [1][1][RTW89_MKK][50] = 127, - [1][1][RTW89_IC][50] = 127, + [1][1][RTW89_IC][50] = 34, [1][1][RTW89_KCC][50] = 127, [1][1][RTW89_ACMA][50] = 127, [1][1][RTW89_CN][50] = 127,
@@ -50492,7 +50492,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [1][1][RTW89_FCC][52] = 30, [1][1][RTW89_ETSI][52] = 127, [1][1][RTW89_MKK][52] = 127, - [1][1][RTW89_IC][52] = 127, + [1][1][RTW89_IC][52] = 30, [1][1][RTW89_KCC][52] = 127, [1][1][RTW89_ACMA][52] = 127, [1][1][RTW89_CN][52] = 127,
@@ -50830,7 +50830,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [2][0][RTW89_FCC][48] = 64, [2][0][RTW89_ETSI][48] = 127, [2][0][RTW89_MKK][48] = 127, - [2][0][RTW89_IC][48] = 127, + [2][0][RTW89_IC][48] = 64, [2][0][RTW89_KCC][48] = 127, [2][0][RTW89_ACMA][48] = 127, [2][0][RTW89_CN][48] = 127,
@@ -50843,7 +50843,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [2][0][RTW89_FCC][50] = 64, [2][0][RTW89_ETSI][50] = 127, [2][0][RTW89_MKK][50] = 127, - [2][0][RTW89_IC][50] = 127, + [2][0][RTW89_IC][50] = 64, [2][0][RTW89_KCC][50] = 127, [2][0][RTW89_ACMA][50] = 127, [2][0][RTW89_CN][50] = 127,
@@ -50856,7 +50856,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [2][0][RTW89_FCC][52] = 64, [2][0][RTW89_ETSI][52] = 127, [2][0][RTW89_MKK][52] = 127, - [2][0][RTW89_IC][52] = 127, + [2][0][RTW89_IC][52] = 64, [2][0][RTW89_KCC][52] = 127, [2][0][RTW89_ACMA][52] = 127, [2][0][RTW89_CN][52] = 127,
@@ -51194,7 +51194,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [2][1][RTW89_FCC][48] = 40, [2][1][RTW89_ETSI][48] = 127, [2][1][RTW89_MKK][48] = 127, - [2][1][RTW89_IC][48] = 127, + [2][1][RTW89_IC][48] = 40, [2][1][RTW89_KCC][48] = 127, [2][1][RTW89_ACMA][48] = 127, [2][1][RTW89_CN][48] = 127,
@@ -51207,7 +51207,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [2][1][RTW89_FCC][50] = 40, [2][1][RTW89_ETSI][50] = 127, [2][1][RTW89_MKK][50] = 127, - [2][1][RTW89_IC][50] = 127, + [2][1][RTW89_IC][50] = 40, [2][1][RTW89_KCC][50] = 127, [2][1][RTW89_ACMA][50] = 127, [2][1][RTW89_CN][50] = 127,
@@ -51220,7 +51220,7 @@ const s8 rtw89_8852c_txpwr_lmt_ru_5g[RTW89_RU_NUM][RTW89_NTX_NUM] [2][1][RTW89_FCC][52] = 40, [2][1][RTW89_ETSI][52] = 127, [2][1][RTW89_MKK][52] = 127, - [2][1][RTW89_IC][52] = 127, + [2][1][RTW89_IC][52] = 40, [2][1][RTW89_KCC][52] = 127, [2][1][RTW89_ACMA][52] = 127, [2][1][RTW89_CN][52] = 127,
Signature · 1 line
2.25.1
Ping-Ke Shih
maintainerPATCH 3/4 wifi: rtw89: 8852c: add quirk to set PCI BER for certain platforms
In reply to Ping-Ke ShihIncrease PCI BER (bit error rate) count depth setting which could increase PHY circuit fault tolerance and improve compatibility.
--- drivers/net/wireless/realtek/rtw89/core.c | 18 +++++++++++++++ drivers/net/wireless/realtek/rtw89/core.h | 10 ++++++++ drivers/net/wireless/realtek/rtw89/pci.c | 19 +++++++++++++++ drivers/net/wireless/realtek/rtw89/pci.h | 5 ++++ .../net/wireless/realtek/rtw89/rtw8851be.c | 1 + .../net/wireless/realtek/rtw89/rtw8852ae.c | 1 + .../net/wireless/realtek/rtw89/rtw8852be.c | 1 + .../net/wireless/realtek/rtw89/rtw8852ce.c | 23 +++++++++++++++++++ .../net/wireless/realtek/rtw89/rtw8922ae.c | 1 + 9 files changed, 79 insertions(+)
drivers/net/wireless/realtek/rtw89/core.c +18 -0
@@ -4069,6 +4069,24 @@ void rtw89_core_ntfy_btc_event(struct rtw89_dev *rtwdev, enum rtw89_btc_hmsg eve } } +void rtw89_check_quirks (struct rtw89_dev *rtwdev,const struct dmi_system_id *quirks) +{ +const struct dmi_system_id *match; +enum rtw89_quirks quirk; + +if (!quirks) +return ; + +for (match =dmi_first_match (quirks); match; match =dmi_first_match (match +1 )) { + quirk = (uintptr_t )match->driver_data; +if (quirk >=NUM_OF_RTW89_QUIRKS ) +continue ; + +set_bit (quirk, rtwdev->quirks); + } +} +EXPORT_SYMBOL (rtw89_check_quirks); +int rtw89_core_start (struct rtw89_dev *rtwdev) {int ret;
drivers/net/wireless/realtek/rtw89/core.h +10 -0
@@ -7,6 +7,7 @@#include <linux/average.h> #include <linux/bitfield.h> +#include <linux/dmi.h> #include <linux/firmware.h> #include <linux/iopoll.h> #include <linux/workqueue.h>
@@ -4079,6 +4080,7 @@ union rtw89_bus_info {struct rtw89_driver_info {const struct rtw89_chip_info *chip; +const struct dmi_system_id *quirks;union rtw89_bus_info bus; };
@@ -4426,6 +4428,12 @@ enum rtw89_flags { NUM_OF_RTW89_FLAGS, }; +enum rtw89_quirks { +RTW89_QUIRK_PCI_BER , + +NUM_OF_RTW89_QUIRKS , +}; +enum rtw89_pkt_drop_sel {RTW89_PKT_DROP_SEL_MACID_BE_ONCE ,RTW89_PKT_DROP_SEL_MACID_BK_ONCE ,
@@ -5186,6 +5194,7 @@ struct rtw89_dev {DECLARE_BITMAP (mac_id_map,RTW89_MAX_MAC_ID_NUM );DECLARE_BITMAP (flags,NUM_OF_RTW89_FLAGS );DECLARE_BITMAP (pkt_offload,RTW89_MAX_PKT_OFLD_NUM ); +DECLARE_BITMAP (quirks,NUM_OF_RTW89_QUIRKS );struct rtw89_phy_stat phystat;struct rtw89_rfk_wait_info rfk_wait;
@@ -6231,6 +6240,7 @@ int rtw89_core_sta_remove(struct rtw89_dev *rtwdev,void rtw89_core_set_tid_config (struct rtw89_dev *rtwdev,struct ieee80211_sta *sta,struct cfg80211_tid_config *tid_config); +void rtw89_check_quirks (struct rtw89_dev *rtwdev,const struct dmi_system_id *quirks);int rtw89_core_init (struct rtw89_dev *rtwdev);void rtw89_core_deinit (struct rtw89_dev *rtwdev);int rtw89_core_register (struct rtw89_dev *rtwdev);
drivers/net/wireless/realtek/rtw89/pci.c +19 -0
@@ -2298,6 +2298,22 @@ static int rtw89_pci_deglitch_setting(struct rtw89_dev *rtwdev)return 0 ; } +static void rtw89_pci_ber (struct rtw89_dev *rtwdev) +{ +u32 phy_offset; + +if (!test_bit (RTW89_QUIRK_PCI_BER , rtwdev->quirks)) +return ; + + phy_offset =R_RAC_DIRECT_OFFSET_G1 ; +rtw89_write16 (rtwdev, phy_offset +RAC_ANA1E *RAC_MULT ,RAC_ANA1E_G1_VAL ); +rtw89_write16 (rtwdev, phy_offset +RAC_ANA2E *RAC_MULT ,RAC_ANA2E_VAL ); + + phy_offset =R_RAC_DIRECT_OFFSET_G2 ; +rtw89_write16 (rtwdev, phy_offset +RAC_ANA1E *RAC_MULT ,RAC_ANA1E_G2_VAL ); +rtw89_write16 (rtwdev, phy_offset +RAC_ANA2E *RAC_MULT ,RAC_ANA2E_VAL ); +} +static void rtw89_pci_rxdma_prefth (struct rtw89_dev *rtwdev) {if (rtwdev->chip->chip_id !=RTL8852A )
@@ -2695,6 +2711,7 @@ static int rtw89_pci_ops_mac_pre_init_ax(struct rtw89_dev *rtwdev)const struct rtw89_pci_info *info = rtwdev->pci_info;int ret; +rtw89_pci_ber (rtwdev);rtw89_pci_rxdma_prefth (rtwdev);rtw89_pci_l1off_pwroff (rtwdev);rtw89_pci_deglitch_setting (rtwdev);
@@ -4171,6 +4188,8 @@ int rtw89_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) rtwdev->hci.rpwm_addr = pci_info->rpwm_addr; rtwdev->hci.cpwm_addr = pci_info->cpwm_addr; +rtw89_check_quirks (rtwdev, info->quirks); +SET_IEEE80211_DEV (rtwdev->hw, &pdev->dev); ret =rtw89_core_init (rtwdev);
drivers/net/wireless/realtek/rtw89/pci.h +5 -0
@@ -26,11 +26,16 @@#define RAC_REG_FLD_0 0x1D#define BAC_AUTOK_N_MASK GENMASK(3, 2)#define PCIE_AUTOK_4 0x3 +#define RAC_ANA1E 0x1E +#define RAC_ANA1E_G1_VAL 0x66EA +#define RAC_ANA1E_G2_VAL 0x6EEA#define RAC_ANA1F 0x1F#define RAC_ANA24 0x24#define B_AX_DEGLITCH GENMASK(11, 8)#define RAC_ANA26 0x26#define B_AX_RXEN GENMASK(15, 14) +#define RAC_ANA2E 0x2E +#define RAC_ANA2E_VAL 0xFFFE#define RAC_CTRL_PPR_V1 0x30#define B_AX_CLK_CALIB_EN BIT(12)#define B_AX_CALIB_EN BIT(13)
drivers/net/wireless/realtek/rtw89/rtw8851be.c +1 -0
@@ -63,6 +63,7 @@ static const struct rtw89_pci_info rtw8851b_pci_info = {static const struct rtw89_driver_info rtw89_8851be_info = { .chip = &rtw8851b_chip_info, + .quirks =NULL , .bus = { .pci = &rtw8851b_pci_info, },
drivers/net/wireless/realtek/rtw89/rtw8852ae.c +1 -0
@@ -61,6 +61,7 @@ static const struct rtw89_pci_info rtw8852a_pci_info = {static const struct rtw89_driver_info rtw89_8852ae_info = { .chip = &rtw8852a_chip_info, + .quirks =NULL , .bus = { .pci = &rtw8852a_pci_info, },
drivers/net/wireless/realtek/rtw89/rtw8852be.c +1 -0
@@ -63,6 +63,7 @@ static const struct rtw89_pci_info rtw8852b_pci_info = {static const struct rtw89_driver_info rtw89_8852be_info = { .chip = &rtw8852b_chip_info, + .quirks =NULL , .bus = { .pci = &rtw8852b_pci_info, },
drivers/net/wireless/realtek/rtw89/rtw8852ce.c +23 -0
@@ -68,8 +68,31 @@ static const struct rtw89_pci_info rtw8852c_pci_info = { .recognize_intrs = rtw89_pci_recognize_intrs_v1, }; +static const struct dmi_system_id rtw8852c_pci_quirks[] = { + { + .ident ="Dell Inc. Vostro 16 5640" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Vostro 16 5640" ), +DMI_MATCH (DMI_PRODUCT_SKU ,"0CA0" ), + }, + .driver_data = (void *)RTW89_QUIRK_PCI_BER , + }, + { + .ident ="Dell Inc. Inspiron 16 5640" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Inspiron 16 5640" ), +DMI_MATCH (DMI_PRODUCT_SKU ,"0C9F" ), + }, + .driver_data = (void *)RTW89_QUIRK_PCI_BER , + }, + {}, +}; +static const struct rtw89_driver_info rtw89_8852ce_info = { .chip = &rtw8852c_chip_info, + .quirks = rtw8852c_pci_quirks, .bus = { .pci = &rtw8852c_pci_info, },
drivers/net/wireless/realtek/rtw89/rtw8922ae.c +1 -0
@@ -61,6 +61,7 @@ static const struct rtw89_pci_info rtw8922a_pci_info = {static const struct rtw89_driver_info rtw89_8922ae_info = { .chip = &rtw8922a_chip_info, + .quirks =NULL , .bus = { .pci = &rtw8922a_pci_info, },
Signature · 1 line
2.25.1
Ping-Ke Shih
maintainerPATCH 4/4 wifi: rtw89: 8852c: disable PCI PHY EQ to improve compatibility
In reply to Ping-Ke ShihFor adaption EQ circuit, this HW design and affected by EIEOS (Electrical Idle Exit Order Set) amplitude from platform and process from IC, so disable EQ to improve that.
--- drivers/net/wireless/realtek/rtw89/pci.c | 72 ++++++++++++++++++++++++ drivers/net/wireless/realtek/rtw89/pci.h | 8 +++ 2 files changed, 80 insertions(+)
drivers/net/wireless/realtek/rtw89/pci.c +72 -0
@@ -19,6 +19,31 @@ MODULE_PARM_DESC(disable_clkreq, "Set Y to disable PCI clkreq support");MODULE_PARM_DESC (disable_aspm_l1,"Set Y to disable PCI ASPM L1 support" );MODULE_PARM_DESC (disable_aspm_l1ss,"Set Y to disable PCI L1SS support" ); +static int rtw89_pci_get_phy_offset_by_link_speed (struct rtw89_dev *rtwdev, +u32 *phy_offset) +{ +struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv; +struct pci_dev *pdev = rtwpci->pdev; +u32 val; +int ret; + + ret =pci_read_config_dword (pdev,RTW89_PCIE_L1_STS_V1 , &val); +if (ret) +return ret; + + val =u32_get_bits (val,RTW89_BCFG_LINK_SPEED_MASK ); +if (val ==RTW89_PCIE_GEN1_SPEED ) { + *phy_offset =R_RAC_DIRECT_OFFSET_G1 ; + }else if (val ==RTW89_PCIE_GEN2_SPEED ) { + *phy_offset =R_RAC_DIRECT_OFFSET_G2 ; + }else { +rtw89_warn (rtwdev,"Unknown PCI link speed %d\n" , val); +return -EFAULT ; + } + +return 0 ; +} +static int rtw89_pci_rst_bdram_ax (struct rtw89_dev *rtwdev) {u32 val;
@@ -2298,6 +2323,52 @@ static int rtw89_pci_deglitch_setting(struct rtw89_dev *rtwdev)return 0 ; } +static void rtw89_pci_disable_eq (struct rtw89_dev *rtwdev) +{ +u16 g1_oobs, g2_oobs; +u32 backup_aspm; +u32 phy_offset; +u16 oobs_val; +u16 val16; +int ret; + +if (rtwdev->chip->chip_id !=RTL8852C ) +return ; + + backup_aspm =rtw89_read32 (rtwdev,R_AX_PCIE_MIX_CFG_V1 ); +rtw89_write32_clr (rtwdev,R_AX_PCIE_MIX_CFG_V1 ,B_AX_ASPM_CTRL_MASK ); + + g1_oobs =rtw89_read16_mask (rtwdev,R_RAC_DIRECT_OFFSET_G1 + +RAC_ANA09 *RAC_MULT ,BAC_OOBS_SEL ); + g2_oobs =rtw89_read16_mask (rtwdev,R_RAC_DIRECT_OFFSET_G2 + +RAC_ANA09 *RAC_MULT ,BAC_OOBS_SEL ); +if (g1_oobs && g2_oobs) + goto out; + + ret =rtw89_pci_get_phy_offset_by_link_speed (rtwdev, &phy_offset); +if (ret) + goto out; + +rtw89_write16_set (rtwdev, phy_offset +RAC_ANA0D *RAC_MULT ,BAC_RX_TEST_EN ); +rtw89_write16 (rtwdev, phy_offset +RAC_ANA10 *RAC_MULT ,ADDR_SEL_PINOUT_DIS_VAL ); +rtw89_write16_set (rtwdev, phy_offset +RAC_ANA19 *RAC_MULT ,B_PCIE_BIT_RD_SEL ); + + val16 =rtw89_read16_mask (rtwdev, phy_offset +RAC_ANA1F *RAC_MULT , +OOBS_LEVEL_MASK ); + oobs_val =u16_encode_bits (val16,OOBS_SEN_MASK ); + +rtw89_write16 (rtwdev,R_RAC_DIRECT_OFFSET_G1 +RAC_ANA03 *RAC_MULT , oobs_val); +rtw89_write16_set (rtwdev,R_RAC_DIRECT_OFFSET_G1 +RAC_ANA09 *RAC_MULT , +BAC_OOBS_SEL ); + +rtw89_write16 (rtwdev,R_RAC_DIRECT_OFFSET_G2 +RAC_ANA03 *RAC_MULT , oobs_val); +rtw89_write16_set (rtwdev,R_RAC_DIRECT_OFFSET_G2 +RAC_ANA09 *RAC_MULT , +BAC_OOBS_SEL ); + +out: +rtw89_write32 (rtwdev,R_AX_PCIE_MIX_CFG_V1 , backup_aspm); +} +static void rtw89_pci_ber (struct rtw89_dev *rtwdev) {u32 phy_offset;
@@ -2711,6 +2782,7 @@ static int rtw89_pci_ops_mac_pre_init_ax(struct rtw89_dev *rtwdev)const struct rtw89_pci_info *info = rtwdev->pci_info;int ret; +rtw89_pci_disable_eq (rtwdev);rtw89_pci_ber (rtwdev);rtw89_pci_rxdma_prefth (rtwdev);rtw89_pci_l1off_pwroff (rtwdev);
drivers/net/wireless/realtek/rtw89/pci.h +8 -0
@@ -12,11 +12,18 @@#define MDIO_PG0_G2 2#define MDIO_PG1_G2 3#define RAC_CTRL_PPR 0x00 +#define RAC_ANA03 0x03 +#define OOBS_SEN_MASK GENMASK(5, 1) +#define RAC_ANA09 0x09 +#define BAC_OOBS_SEL BIT(4)#define RAC_ANA0A 0x0A#define B_BAC_EQ_SEL BIT(5)#define RAC_ANA0C 0x0C#define B_PCIE_BIT_PSAVE BIT(15) +#define RAC_ANA0D 0x0D +#define BAC_RX_TEST_EN BIT(6)#define RAC_ANA10 0x10 +#define ADDR_SEL_PINOUT_DIS_VAL 0x3C4#define B_PCIE_BIT_PINOUT_DIS BIT(3)#define RAC_REG_REV2 0x1B#define BAC_CMU_EN_DLY_MASK GENMASK(15, 12)
@@ -30,6 +37,7 @@#define RAC_ANA1E_G1_VAL 0x66EA#define RAC_ANA1E_G2_VAL 0x6EEA#define RAC_ANA1F 0x1F +#define OOBS_LEVEL_MASK GENMASK(12, 8)#define RAC_ANA24 0x24#define B_AX_DEGLITCH GENMASK(11, 8)#define RAC_ANA26 0x26
Signature · 1 line
2.25.1