mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
61 lines
2.1 KiB
Diff
61 lines
2.1 KiB
Diff
From 5760bb605b430b71beb78a128cd1addca751c06e Mon Sep 17 00:00:00 2001
|
|
From: Madhan Mohan R <madhanmohan.r@cypress.com>
|
|
Date: Tue, 28 Aug 2018 17:14:20 +0530
|
|
Subject: [PATCH 036/179] brcmfmac: reset PMU, backplane & all cores in CYW4373
|
|
during rmmod
|
|
|
|
To do a clean reset of the chip during rmmod brcmfmac, program
|
|
the PmuWatchdogCounter register. When a watchdog reset occurs,
|
|
the PMU, backplane and all of the cores in the chip are reset.
|
|
|
|
Signed-off-by: Madhan Mohan R <madhanmohan.r@cypress.com>
|
|
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
|
|
---
|
|
.../broadcom/brcm80211/brcmfmac/chip.c | 21 +++++++++++++++++--
|
|
1 file changed, 19 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
|
index 599c1b5ead1b..6829ca086695 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
|
@@ -224,9 +224,15 @@ struct sbsocramregs {
|
|
/* PMU CONTROL EXT mask for 43012C0 */
|
|
#define CY_43012_PMU_CONTROL_EXT_MASK 0x11
|
|
|
|
-/* PMU CONTROL EXT mask for 43012C0 */
|
|
+/* PMU Watchdog Counter Tick value for 43012C0 */
|
|
#define CY_43012_PMU_WATCHDOG_TICK_VAL 0x04
|
|
|
|
+/* PMU Watchdog Counter Tick value for 4373 */
|
|
+#define CY_4373_PMU_WATCHDOG_TICK_VAL 0x04
|
|
+
|
|
+/* Minimum PMU resource mask for 4373 */
|
|
+#define CY_4373_PMU_MIN_RES_MASK 0xFCAFF7F
|
|
+
|
|
struct brcmf_core_priv {
|
|
struct brcmf_core pub;
|
|
u32 wrapbase;
|
|
@@ -1595,7 +1601,18 @@ void brcmf_chip_reset_watchdog(struct brcmf_chip *pub)
|
|
chip->ops->write32(chip->ctx, addr,
|
|
CY_43012_PMU_WATCHDOG_TICK_VAL);
|
|
break;
|
|
-
|
|
+ case CY_CC_4373_CHIP_ID:
|
|
+ addr = CORE_CC_REG(base, min_res_mask);
|
|
+ chip->ops->write32(chip->ctx, addr,
|
|
+ CY_4373_PMU_MIN_RES_MASK);
|
|
+ addr = CORE_CC_REG(base, watchdog_res_mask);
|
|
+ chip->ops->write32(chip->ctx, addr,
|
|
+ CY_4373_PMU_MIN_RES_MASK);
|
|
+ addr = CORE_CC_REG(base, pmuwatchdog);
|
|
+ chip->ops->write32(chip->ctx, addr,
|
|
+ CY_4373_PMU_WATCHDOG_TICK_VAL);
|
|
+ mdelay(100);
|
|
+ break;
|
|
default:
|
|
break;
|
|
}
|
|
--
|
|
2.17.1
|
|
|