mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
47 lines
1.7 KiB
Diff
47 lines
1.7 KiB
Diff
From 8a0b899f169d6b6102918327d026922140194fff Mon Sep 17 00:00:00 2001
|
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
|
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
|
Subject: [PATCH] ath11k: Fix inaccessible debug registers
|
|
|
|
Current code clears debug registers after SOC global reset performed
|
|
in ath11k_pci_sw_reset. However at that time those registers are
|
|
not accessible due to reset, thus they are actually not cleared at all.
|
|
For WCN6855, it may cause target fail to initialize. This issue can be
|
|
fixed by moving clear action ahead.
|
|
|
|
In addition, on some specific platforms, need to add delay to wait
|
|
those registers to become accessible.
|
|
|
|
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1
|
|
|
|
Signed-off-by: Baochen Qiang <bqiang@codeaurora.org>
|
|
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
|
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
Link: https://lore.kernel.org/r/20210913180246.193388-3-jouni@codeaurora.org
|
|
---
|
|
drivers/net/wireless/ath/ath11k/pci.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
|
@@ -430,6 +430,8 @@ static void ath11k_pci_force_wake(struct
|
|
|
|
static void ath11k_pci_sw_reset(struct ath11k_base *ab, bool power_on)
|
|
{
|
|
+ mdelay(100);
|
|
+
|
|
if (power_on) {
|
|
ath11k_pci_enable_ltssm(ab);
|
|
ath11k_pci_clear_all_intrs(ab);
|
|
@@ -439,9 +441,9 @@ static void ath11k_pci_sw_reset(struct a
|
|
}
|
|
|
|
ath11k_mhi_clear_vector(ab);
|
|
+ ath11k_pci_clear_dbg_registers(ab);
|
|
ath11k_pci_soc_global_reset(ab);
|
|
ath11k_mhi_set_mhictrl_reset(ab);
|
|
- ath11k_pci_clear_dbg_registers(ab);
|
|
}
|
|
|
|
int ath11k_pci_get_msi_irq(struct device *dev, unsigned int vector)
|