Skip to content

Commit 88e6a92

Browse files
Ping-Ke ShihKalle Valo
authored andcommitted
wifi: rtw89: mac: use mac_gen pointer to access about efuse
Use function pointers to abstract efuse access, and introduce an new function to convert efuse power state that is needed by WiFi 7 chips. Signed-off-by: Ping-Ke Shih <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent c0a0455 commit 88e6a92

File tree

5 files changed

+29
-9
lines changed

5 files changed

+29
-9
lines changed

drivers/net/wireless/realtek/rtw89/core.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4216,17 +4216,18 @@ static void rtw89_core_setup_rfe_parms(struct rtw89_dev *rtwdev)
42164216

42174217
static int rtw89_chip_efuse_info_setup(struct rtw89_dev *rtwdev)
42184218
{
4219+
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
42194220
int ret;
42204221

42214222
ret = rtw89_mac_partial_init(rtwdev, false);
42224223
if (ret)
42234224
return ret;
42244225

4225-
ret = rtw89_parse_efuse_map(rtwdev);
4226+
ret = mac->parse_efuse_map(rtwdev);
42264227
if (ret)
42274228
return ret;
42284229

4229-
ret = rtw89_parse_phycap_map(rtwdev);
4230+
ret = mac->parse_phycap_map(rtwdev);
42304231
if (ret)
42314232
return ret;
42324233

drivers/net/wireless/realtek/rtw89/efuse.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ static int rtw89_dump_physical_efuse_map_ddv(struct rtw89_dev *rtwdev, u8 *map,
114114
return 0;
115115
}
116116

117+
int rtw89_cnv_efuse_state_ax(struct rtw89_dev *rtwdev, bool idle)
118+
{
119+
return 0;
120+
}
121+
117122
static int rtw89_dump_physical_efuse_map_dav(struct rtw89_dev *rtwdev, u8 *map,
118123
u32 dump_addr, u32 dump_size)
119124
{
@@ -231,7 +236,7 @@ static int rtw89_dump_logical_efuse_map(struct rtw89_dev *rtwdev, u8 *phy_map,
231236
return 0;
232237
}
233238

234-
int rtw89_parse_efuse_map(struct rtw89_dev *rtwdev)
239+
int rtw89_parse_efuse_map_ax(struct rtw89_dev *rtwdev)
235240
{
236241
u32 phy_size = rtwdev->chip->physical_efuse_size;
237242
u32 log_size = rtwdev->chip->logical_efuse_size;
@@ -300,7 +305,7 @@ int rtw89_parse_efuse_map(struct rtw89_dev *rtwdev)
300305
return ret;
301306
}
302307

303-
int rtw89_parse_phycap_map(struct rtw89_dev *rtwdev)
308+
int rtw89_parse_phycap_map_ax(struct rtw89_dev *rtwdev)
304309
{
305310
u32 phycap_addr = rtwdev->chip->phycap_addr;
306311
u32 phycap_size = rtwdev->chip->phycap_size;

drivers/net/wireless/realtek/rtw89/efuse.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88
#include "core.h"
99

10-
int rtw89_parse_efuse_map(struct rtw89_dev *rtwdev);
11-
int rtw89_parse_phycap_map(struct rtw89_dev *rtwdev);
10+
int rtw89_parse_efuse_map_ax(struct rtw89_dev *rtwdev);
11+
int rtw89_parse_phycap_map_ax(struct rtw89_dev *rtwdev);
12+
int rtw89_cnv_efuse_state_ax(struct rtw89_dev *rtwdev, bool idle);
1213
int rtw89_read_efuse_ver(struct rtw89_dev *rtwdev, u8 *efv);
1314

1415
#endif

drivers/net/wireless/realtek/rtw89/mac.c

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "cam.h"
66
#include "chan.h"
77
#include "debug.h"
8+
#include "efuse.h"
89
#include "fw.h"
910
#include "mac.h"
1011
#include "pci.h"
@@ -2626,20 +2627,26 @@ static int cmac_init(struct rtw89_dev *rtwdev, u8 mac_idx)
26262627
static int rtw89_mac_read_phycap(struct rtw89_dev *rtwdev,
26272628
struct rtw89_mac_c2h_info *c2h_info)
26282629
{
2630+
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
26292631
struct rtw89_mac_h2c_info h2c_info = {0};
26302632
u32 ret;
26312633

2634+
mac->cnv_efuse_state(rtwdev, false);
2635+
26322636
h2c_info.id = RTW89_FWCMD_H2CREG_FUNC_GET_FEATURE;
26332637
h2c_info.content_len = 0;
26342638

26352639
ret = rtw89_fw_msg_reg(rtwdev, &h2c_info, c2h_info);
26362640
if (ret)
2637-
return ret;
2641+
goto out;
26382642

26392643
if (c2h_info->id != RTW89_FWCMD_C2HREG_FUNC_PHY_CAP)
2640-
return -EINVAL;
2644+
ret = -EINVAL;
26412645

2642-
return 0;
2646+
out:
2647+
mac->cnv_efuse_state(rtwdev, true);
2648+
2649+
return ret;
26432650
}
26442651

26452652
int rtw89_mac_setup_phycap(struct rtw89_dev *rtwdev)
@@ -5775,6 +5782,9 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_ax = {
57755782
.fwdl_enable_wcpu = rtw89_mac_enable_cpu_ax,
57765783
.fwdl_get_status = rtw89_fw_get_rdy_ax,
57775784
.fwdl_check_path_ready = rtw89_fwdl_check_path_ready_ax,
5785+
.parse_efuse_map = rtw89_parse_efuse_map_ax,
5786+
.parse_phycap_map = rtw89_parse_phycap_map_ax,
5787+
.cnv_efuse_state = rtw89_cnv_efuse_state_ax,
57785788

57795789
.get_txpwr_cr = rtw89_mac_get_txpwr_cr_ax,
57805790
};

drivers/net/wireless/realtek/rtw89/mac.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -873,6 +873,9 @@ struct rtw89_mac_gen_def {
873873
bool dlfw, bool include_bb);
874874
u8 (*fwdl_get_status)(struct rtw89_dev *rtwdev, enum rtw89_fwdl_check_type type);
875875
int (*fwdl_check_path_ready)(struct rtw89_dev *rtwdev, bool h2c_or_fwdl);
876+
int (*parse_efuse_map)(struct rtw89_dev *rtwdev);
877+
int (*parse_phycap_map)(struct rtw89_dev *rtwdev);
878+
int (*cnv_efuse_state)(struct rtw89_dev *rtwdev, bool idle);
876879

877880
bool (*get_txpwr_cr)(struct rtw89_dev *rtwdev,
878881
enum rtw89_phy_idx phy_idx,

0 commit comments

Comments
 (0)