Skip to content

Commit e5aeac7

Browse files
Ping-Ke Shihgregkh
authored andcommitted
wifi: rtw89: pci: disable PCIE wake bit when PCIE deinit
commit 9c1df81 upstream. The PCIE wake bit is to control PCIE wake signal to host. When PCIE is going down, clear this bit to prevent waking up host unexpectedly. Signed-off-by: Ping-Ke Shih <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Zenm Chen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent d5c8ffa commit e5aeac7

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

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

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2492,7 +2492,7 @@ static int rtw89_pci_dphy_delay(struct rtw89_dev *rtwdev)
24922492
PCIE_DPHY_DLY_25US, PCIE_PHY_GEN1);
24932493
}
24942494

2495-
static void rtw89_pci_power_wake(struct rtw89_dev *rtwdev, bool pwr_up)
2495+
static void rtw89_pci_power_wake_ax(struct rtw89_dev *rtwdev, bool pwr_up)
24962496
{
24972497
if (pwr_up)
24982498
rtw89_write32_set(rtwdev, R_AX_HCI_OPT_CTRL, BIT_WAKE_CTRL);
@@ -2799,6 +2799,8 @@ static int rtw89_pci_ops_deinit(struct rtw89_dev *rtwdev)
27992799
{
28002800
const struct rtw89_pci_info *info = rtwdev->pci_info;
28012801

2802+
rtw89_pci_power_wake(rtwdev, false);
2803+
28022804
if (rtwdev->chip->chip_id == RTL8852A) {
28032805
/* ltr sw trigger */
28042806
rtw89_write32_set(rtwdev, R_AX_LTR_CTRL_0, B_AX_APP_LTR_IDLE);
@@ -2841,7 +2843,7 @@ static int rtw89_pci_ops_mac_pre_init_ax(struct rtw89_dev *rtwdev)
28412843
return ret;
28422844
}
28432845

2844-
rtw89_pci_power_wake(rtwdev, true);
2846+
rtw89_pci_power_wake_ax(rtwdev, true);
28452847
rtw89_pci_autoload_hang(rtwdev);
28462848
rtw89_pci_l12_vmain(rtwdev);
28472849
rtw89_pci_gen2_force_ib(rtwdev);
@@ -2886,6 +2888,13 @@ static int rtw89_pci_ops_mac_pre_init_ax(struct rtw89_dev *rtwdev)
28862888
return 0;
28872889
}
28882890

2891+
static int rtw89_pci_ops_mac_pre_deinit_ax(struct rtw89_dev *rtwdev)
2892+
{
2893+
rtw89_pci_power_wake_ax(rtwdev, false);
2894+
2895+
return 0;
2896+
}
2897+
28892898
int rtw89_pci_ltr_set(struct rtw89_dev *rtwdev, bool en)
28902899
{
28912900
u32 val;
@@ -4264,7 +4273,7 @@ const struct rtw89_pci_gen_def rtw89_pci_gen_ax = {
42644273
B_AX_RDU_INT},
42654274

42664275
.mac_pre_init = rtw89_pci_ops_mac_pre_init_ax,
4267-
.mac_pre_deinit = NULL,
4276+
.mac_pre_deinit = rtw89_pci_ops_mac_pre_deinit_ax,
42684277
.mac_post_init = rtw89_pci_ops_mac_post_init_ax,
42694278

42704279
.clr_idx_all = rtw89_pci_clr_idx_all_ax,
@@ -4280,6 +4289,8 @@ const struct rtw89_pci_gen_def rtw89_pci_gen_ax = {
42804289
.aspm_set = rtw89_pci_aspm_set_ax,
42814290
.clkreq_set = rtw89_pci_clkreq_set_ax,
42824291
.l1ss_set = rtw89_pci_l1ss_set_ax,
4292+
4293+
.power_wake = rtw89_pci_power_wake_ax,
42834294
};
42844295
EXPORT_SYMBOL(rtw89_pci_gen_ax);
42854296

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,6 +1276,8 @@ struct rtw89_pci_gen_def {
12761276
void (*aspm_set)(struct rtw89_dev *rtwdev, bool enable);
12771277
void (*clkreq_set)(struct rtw89_dev *rtwdev, bool enable);
12781278
void (*l1ss_set)(struct rtw89_dev *rtwdev, bool enable);
1279+
1280+
void (*power_wake)(struct rtw89_dev *rtwdev, bool pwr_up);
12791281
};
12801282

12811283
struct rtw89_pci_info {
@@ -1766,4 +1768,13 @@ static inline int rtw89_pci_poll_txdma_ch_idle(struct rtw89_dev *rtwdev)
17661768

17671769
return gen_def->poll_txdma_ch_idle(rtwdev);
17681770
}
1771+
1772+
static inline void rtw89_pci_power_wake(struct rtw89_dev *rtwdev, bool pwr_up)
1773+
{
1774+
const struct rtw89_pci_info *info = rtwdev->pci_info;
1775+
const struct rtw89_pci_gen_def *gen_def = info->gen_def;
1776+
1777+
gen_def->power_wake(rtwdev, pwr_up);
1778+
}
1779+
17691780
#endif

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,5 +614,7 @@ const struct rtw89_pci_gen_def rtw89_pci_gen_be = {
614614
.aspm_set = rtw89_pci_aspm_set_be,
615615
.clkreq_set = rtw89_pci_clkreq_set_be,
616616
.l1ss_set = rtw89_pci_l1ss_set_be,
617+
618+
.power_wake = _patch_pcie_power_wake_be,
617619
};
618620
EXPORT_SYMBOL(rtw89_pci_gen_be);

0 commit comments

Comments
 (0)