diff mbox series

[v2] rtw88: pci: Power cycle device during shutdown

Message ID 20200928165508.20775-1-kai.heng.feng@canonical.com
State Superseded
Headers show
Series [v2] rtw88: pci: Power cycle device during shutdown | expand

Commit Message

Kai-Heng Feng Sept. 28, 2020, 4:55 p.m. UTC
There are reports that 8822CE fails to work rtw88 with "failed to read DBI
register" error. Also I have a system with 8723DE which freezes the whole
system when the rtw88 is probing the device.

According to [1], platform firmware may not properly power manage the
device during shutdown. I did some expirements and putting the device to
D3 can workaround the issue.

So let's power cycle the device by putting the device to D3 at shutdown
to prevent the issue from happening.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=206411#c9

BugLink: https://bugs.launchpad.net/bugs/1872984
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
v2:
 - Add more detail in commit log.

 drivers/net/wireless/realtek/rtw88/pci.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Kalle Valo Oct. 1, 2020, 1:28 p.m. UTC | #1
Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:

> There are reports that 8822CE fails to work rtw88 with "failed to read DBI
> register" error. Also I have a system with 8723DE which freezes the whole
> system when the rtw88 is probing the device.
> 
> According to [1], platform firmware may not properly power manage the
> device during shutdown. I did some expirements and putting the device to
> D3 can workaround the issue.
> 
> So let's power cycle the device by putting the device to D3 at shutdown
> to prevent the issue from happening.
> 
> [1] https://bugzilla.kernel.org/show_bug.cgi?id=206411#c9
> 
> BugLink: https://bugs.launchpad.net/bugs/1872984
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

Patch applied to wireless-drivers-next.git, thanks.

44492e70adc8 rtw88: pci: Power cycle device during shutdown
diff mbox series

Patch

diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c
index 3413973bc475..7f1f5073b9f4 100644
--- a/drivers/net/wireless/realtek/rtw88/pci.c
+++ b/drivers/net/wireless/realtek/rtw88/pci.c
@@ -1599,6 +1599,8 @@  void rtw_pci_shutdown(struct pci_dev *pdev)
 
 	if (chip->ops->shutdown)
 		chip->ops->shutdown(rtwdev);
+
+	pci_set_power_state(pdev, PCI_D3hot);
 }
 EXPORT_SYMBOL(rtw_pci_shutdown);