mirror of
https://github.com/armbian/build.git
synced 2025-08-12 14:16:57 +02:00
* sunxi-5.19: Initial state for megous patches * Add the ability to do 5.19 * Move to 5.19 - tested both - removed broken Opi Zero xradio driver https://armbian.atlassian.net/browse/AR-1280 * sunxi-5.19: fix tag for switch * sunxi-5.19: Initial state for armbian patches * sunxi-5.19: Add armbian patches to series.conf file * sanxi-5.19: Add other 2 patches * sunxi-5.19: Limit to use the 'wireless/xradio' module Limit the kernel version to less than 5.19 to use the 'wireless/xradio' module Co-authored-by: Igor Pecovnik <igor.pecovnik@gmail.com>
87 lines
3.4 KiB
Diff
87 lines
3.4 KiB
Diff
From a6e28898754a3b39cc4c778126354208981b616e Mon Sep 17 00:00:00 2001
|
|
From: Ping-Ke Shih <pkshih@realtek.com>
|
|
Date: Fri, 20 May 2022 15:17:28 +0800
|
|
Subject: [PATCH 392/417] rtw89: pci: handle hardware watchdog timeout
|
|
interrupt status
|
|
|
|
This watchdog timeout status bit indicates hardware gets wrong, so run SER
|
|
L2 flow that calls mac80211 to restart hardware.
|
|
|
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
|
Link: https://lore.kernel.org/r/20220520071731.38563-4-pkshih@realtek.com
|
|
---
|
|
drivers/net/wireless/realtek/rtw89/mac.h | 1 +
|
|
drivers/net/wireless/realtek/rtw89/pci.c | 9 ++++++---
|
|
drivers/net/wireless/realtek/rtw89/pci.h | 1 +
|
|
3 files changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
|
|
index 9f511c8d8..f66619354 100644
|
|
--- a/drivers/net/wireless/realtek/rtw89/mac.h
|
|
+++ b/drivers/net/wireless/realtek/rtw89/mac.h
|
|
@@ -666,6 +666,7 @@ enum mac_ax_err_info {
|
|
MAC_AX_ERR_L2_ERR_APB_BBRF_TO_RX4281 = 0x2360,
|
|
MAC_AX_ERR_L2_ERR_APB_BBRF_TO_OTHERS = 0x2370,
|
|
MAC_AX_ERR_L2_RESET_DONE = 0x2400,
|
|
+ MAC_AX_ERR_L2_ERR_WDT_TIMEOUT_INT = 0x2599,
|
|
MAC_AX_ERR_CPU_EXCEPTION = 0x3000,
|
|
MAC_AX_ERR_ASSERTION = 0x4000,
|
|
MAC_AX_GET_ERR_MAX,
|
|
diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c
|
|
index 0ef7821b2..25872dfb4 100644
|
|
--- a/drivers/net/wireless/realtek/rtw89/pci.c
|
|
+++ b/drivers/net/wireless/realtek/rtw89/pci.c
|
|
@@ -738,6 +738,9 @@ static irqreturn_t rtw89_pci_interrupt_threadfn(int irq, void *dev)
|
|
if (unlikely(isrs.halt_c2h_isrs & B_AX_HALT_C2H_INT_EN))
|
|
rtw89_ser_notify(rtwdev, rtw89_mac_get_err_status(rtwdev));
|
|
|
|
+ if (unlikely(isrs.halt_c2h_isrs & B_AX_WDT_TIMEOUT_INT_EN))
|
|
+ rtw89_ser_notify(rtwdev, MAC_AX_ERR_L2_ERR_WDT_TIMEOUT_INT);
|
|
+
|
|
if (unlikely(rtwpci->under_recovery))
|
|
goto enable_intr;
|
|
|
|
@@ -3126,7 +3129,7 @@ static void rtw89_pci_recovery_intr_mask_v1(struct rtw89_dev *rtwdev)
|
|
struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv;
|
|
|
|
rtwpci->ind_intrs = B_AX_HS0ISR_IND_INT_EN;
|
|
- rtwpci->halt_c2h_intrs = B_AX_HALT_C2H_INT_EN;
|
|
+ rtwpci->halt_c2h_intrs = B_AX_HALT_C2H_INT_EN | B_AX_WDT_TIMEOUT_INT_EN;
|
|
rtwpci->intrs[0] = 0;
|
|
rtwpci->intrs[1] = 0;
|
|
}
|
|
@@ -3138,7 +3141,7 @@ static void rtw89_pci_default_intr_mask_v1(struct rtw89_dev *rtwdev)
|
|
rtwpci->ind_intrs = B_AX_HCI_AXIDMA_INT_EN |
|
|
B_AX_HS1ISR_IND_INT_EN |
|
|
B_AX_HS0ISR_IND_INT_EN;
|
|
- rtwpci->halt_c2h_intrs = B_AX_HALT_C2H_INT_EN;
|
|
+ rtwpci->halt_c2h_intrs = B_AX_HALT_C2H_INT_EN | B_AX_WDT_TIMEOUT_INT_EN;
|
|
rtwpci->intrs[0] = B_AX_TXDMA_STUCK_INT_EN |
|
|
B_AX_RXDMA_INT_EN |
|
|
B_AX_RXP1DMA_INT_EN |
|
|
@@ -3155,7 +3158,7 @@ static void rtw89_pci_low_power_intr_mask_v1(struct rtw89_dev *rtwdev)
|
|
|
|
rtwpci->ind_intrs = B_AX_HS1ISR_IND_INT_EN |
|
|
B_AX_HS0ISR_IND_INT_EN;
|
|
- rtwpci->halt_c2h_intrs = B_AX_HALT_C2H_INT_EN;
|
|
+ rtwpci->halt_c2h_intrs = B_AX_HALT_C2H_INT_EN | B_AX_WDT_TIMEOUT_INT_EN;
|
|
rtwpci->intrs[0] = 0;
|
|
rtwpci->intrs[1] = B_AX_GPIO18_INT_EN;
|
|
}
|
|
diff --git a/drivers/net/wireless/realtek/rtw89/pci.h b/drivers/net/wireless/realtek/rtw89/pci.h
|
|
index bb585ed19..a11864721 100644
|
|
--- a/drivers/net/wireless/realtek/rtw89/pci.h
|
|
+++ b/drivers/net/wireless/realtek/rtw89/pci.h
|
|
@@ -94,6 +94,7 @@
|
|
|
|
/* Interrupts */
|
|
#define R_AX_HIMR0 0x01A0
|
|
+#define B_AX_WDT_TIMEOUT_INT_EN BIT(22)
|
|
#define B_AX_HALT_C2H_INT_EN BIT(21)
|
|
#define R_AX_HISR0 0x01A4
|
|
|
|
--
|
|
2.35.3
|
|
|