ath10k: fix PCIE device wake up failed [Linux 4.9.187]

This Linux kernel change "ath10k: fix PCIE device wake up failed" is included in the Linux 4.9.187 release. This change is authored by Miaoqing Pan <miaoqing [at] codeaurora.org> on Thu May 30 09:49:20 2019 +0800. The commit for this change in Linux stable tree is 71145a2 (patch) which is from upstream commit 011d411. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream 011d411.

ath10k: fix PCIE device wake up failed

[ Upstream commit 011d4111c8c602ea829fa4917af1818eb0500a90 ]

Observed PCIE device wake up failed after ~120 iterations of
soft-reboot test. The error message is
"ath10k_pci 0000:01:00.0: failed to wake up device : -110"

The call trace as below:
ath10k_pci_probe -> ath10k_pci_force_wake -> ath10k_pci_wake_wait ->
ath10k_pci_is_awake

Once trigger the device to wake up, we will continuously check the RTC
state until it returns RTC_STATE_V_ON or timeout.

But for QCA99x0 chips, we use wrong value for RTC_STATE_V_ON.
Occasionally, we get 0x7 on the fist read, we thought as a failure
case, but actually is the right value, also verified with the spec.
So fix the issue by changing RTC_STATE_V_ON from 0x5 to 0x7, passed
~2000 iterations.

Tested HW: QCA9984

Signed-off-by: Miaoqing Pan <miaoqing@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>

There are 2 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/net/wireless/ath/ath10k/hw.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/hw.c b/drivers/net/wireless/ath/ath10k/hw.c
index 675e75d..14dc654 100644
--- a/drivers/net/wireless/ath/ath10k/hw.c
+++ b/drivers/net/wireless/ath/ath10k/hw.c
@@ -157,7 +157,7 @@
 };

 const struct ath10k_hw_values qca99x0_values = {
-   .rtc_state_val_on       = 5,
+   .rtc_state_val_on       = 7,
    .ce_count           = 12,
    .msi_assign_ce_max      = 12,
    .num_target_ce_config_wlan  = 10,

Leave a Reply

Your email address will not be published. Required fields are marked *