Skip to content

Commit d5d717a

Browse files
Zong-Zhe YangKalle Valo
authored andcommitted
wifi: rtw89: pci: reset BDRAM according to chip gen
Configure callback of reset BDRAM (buffer descriptor RAM) by chip gen. Refine the one of 802.11ax chip gen and drop a redundant duplicate of it in 802.11ax chip gen. Then, assign right callback of rst_bdram for HCI ops which needs to do callback according to chip gen. Signed-off-by: Zong-Zhe Yang <[email protected]> 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 af3077a commit d5d717a

File tree

3 files changed

+17
-26
lines changed

3 files changed

+17
-26
lines changed

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

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,18 @@ MODULE_PARM_DESC(disable_clkreq, "Set Y to disable PCI clkreq support");
1919
MODULE_PARM_DESC(disable_aspm_l1, "Set Y to disable PCI ASPM L1 support");
2020
MODULE_PARM_DESC(disable_aspm_l1ss, "Set Y to disable PCI L1SS support");
2121

22-
static int rtw89_pci_rst_bdram_pcie(struct rtw89_dev *rtwdev)
22+
static int rtw89_pci_rst_bdram_ax(struct rtw89_dev *rtwdev)
2323
{
2424
u32 val;
2525
int ret;
2626

27-
rtw89_write32(rtwdev, R_AX_PCIE_INIT_CFG1,
28-
rtw89_read32(rtwdev, R_AX_PCIE_INIT_CFG1) | B_AX_RST_BDRAM);
27+
rtw89_write32_set(rtwdev, R_AX_PCIE_INIT_CFG1, B_AX_RST_BDRAM);
2928

3029
ret = read_poll_timeout_atomic(rtw89_read32, val, !(val & B_AX_RST_BDRAM),
3130
1, RTW89_PCI_POLL_BDRAM_RST_CNT, false,
3231
rtwdev, R_AX_PCIE_INIT_CFG1);
3332

34-
if (ret)
35-
return -EBUSY;
36-
37-
return 0;
33+
return ret;
3834
}
3935

4036
static u32 rtw89_pci_dma_recalc(struct rtw89_dev *rtwdev,
@@ -2608,7 +2604,7 @@ static int rtw89_pci_ops_mac_pre_init_ax(struct rtw89_dev *rtwdev)
26082604
/* fill TRX BD indexes */
26092605
rtw89_pci_ops_reset(rtwdev);
26102606

2611-
ret = rtw89_pci_rst_bdram_pcie(rtwdev);
2607+
ret = rtw89_pci_rst_bdram_ax(rtwdev);
26122608
if (ret) {
26132609
rtw89_warn(rtwdev, "reset bdram busy\n");
26142610
return ret;
@@ -3691,22 +3687,6 @@ static int rtw89_pci_lv1rst_stop_dma(struct rtw89_dev *rtwdev)
36913687
return ret;
36923688
}
36933689

3694-
3695-
3696-
static int rtw89_pci_rst_bdram(struct rtw89_dev *rtwdev)
3697-
{
3698-
int ret = 0;
3699-
u32 val32, sts;
3700-
3701-
val32 = B_AX_RST_BDRAM;
3702-
rtw89_write32_set(rtwdev, R_AX_PCIE_INIT_CFG1, val32);
3703-
3704-
ret = read_poll_timeout_atomic(rtw89_read32, sts,
3705-
(sts & B_AX_RST_BDRAM) == 0x0, 1, 100,
3706-
true, rtwdev, R_AX_PCIE_INIT_CFG1);
3707-
return ret;
3708-
}
3709-
37103690
static int rtw89_pci_lv1rst_start_dma(struct rtw89_dev *rtwdev)
37113691
{
37123692
u32 ret;
@@ -3718,7 +3698,7 @@ static int rtw89_pci_lv1rst_start_dma(struct rtw89_dev *rtwdev)
37183698
rtw89_mac_ctrl_hci_dma_trx(rtwdev, true);
37193699
rtw89_pci_clr_idx_all(rtwdev);
37203700

3721-
ret = rtw89_pci_rst_bdram(rtwdev);
3701+
ret = rtw89_pci_rst_bdram_ax(rtwdev);
37223702
if (ret)
37233703
return ret;
37243704

@@ -3858,6 +3838,7 @@ const struct rtw89_pci_gen_def rtw89_pci_gen_ax = {
38583838
.mac_post_init = rtw89_pci_ops_mac_post_init_ax,
38593839

38603840
.clr_idx_all = rtw89_pci_clr_idx_all_ax,
3841+
.rst_bdram = rtw89_pci_rst_bdram_ax,
38613842
};
38623843
EXPORT_SYMBOL(rtw89_pci_gen_ax);
38633844

@@ -3899,7 +3880,7 @@ static const struct rtw89_hci_ops rtw89_pci_ops = {
38993880
.clear = rtw89_pci_clear_resource,
39003881
.disable_intr = rtw89_pci_disable_intr_lock,
39013882
.enable_intr = rtw89_pci_enable_intr_lock,
3902-
.rst_bdram = rtw89_pci_rst_bdram_pcie,
3883+
.rst_bdram = rtw89_pci_reset_bdram,
39033884
};
39043885

39053886
int rtw89_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,6 +1041,7 @@ struct rtw89_pci_gen_def {
10411041
int (*mac_post_init)(struct rtw89_dev *rtwdev);
10421042

10431043
void (*clr_idx_all)(struct rtw89_dev *rtwdev);
1044+
int (*rst_bdram)(struct rtw89_dev *rtwdev);
10441045
};
10451046

10461047
struct rtw89_pci_info {
@@ -1475,4 +1476,12 @@ static inline void rtw89_pci_clr_idx_all(struct rtw89_dev *rtwdev)
14751476
gen_def->clr_idx_all(rtwdev);
14761477
}
14771478

1479+
static inline int rtw89_pci_reset_bdram(struct rtw89_dev *rtwdev)
1480+
{
1481+
const struct rtw89_pci_info *info = rtwdev->pci_info;
1482+
const struct rtw89_pci_gen_def *gen_def = info->gen_def;
1483+
1484+
return gen_def->rst_bdram(rtwdev);
1485+
}
1486+
14781487
#endif

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,5 +425,6 @@ const struct rtw89_pci_gen_def rtw89_pci_gen_be = {
425425
.mac_post_init = rtw89_pci_ops_mac_post_init_be,
426426

427427
.clr_idx_all = rtw89_pci_clr_idx_all_be,
428+
.rst_bdram = rtw89_pci_rst_bdram_be,
428429
};
429430
EXPORT_SYMBOL(rtw89_pci_gen_be);

0 commit comments

Comments
 (0)