Files
build/patch/kernel/archive/sunxi-5.15/patches.cypress/0035-non-upstream-fix-43012-driver-reload-failure-after-D.patch

70 lines
2.5 KiB
Diff

From 5ee68395559714baa2229415fc7cc9cdede072e3 Mon Sep 17 00:00:00 2001
From: David Weng <david.weng@cypress.com>
Date: Mon, 28 Jan 2019 01:05:36 -0600
Subject: [PATCH 035/179] non-upstream: fix 43012 driver reload failure after
DS1 exit
Device is left in non-responding state when unloading driver in non-DS1
state if it ever enters DS1 at least once. It leaves that state only
after a hard reset or power cycle 43012.
Signed-off-by: David Weng <david.weng@cypress.com>
[Merge from 4.14.77 to 5.4.18]
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
SWWLAN-137253
---
.../net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 12 +++++++-----
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 --
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index d9b6b116a78d..599c1b5ead1b 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -1491,11 +1491,6 @@ void brcmf_chip_reset_pmu_regs(struct brcmf_chip *pub)
addr = CORE_CC_REG(base, pmucontrol_ext);
chip->ops->write32(chip->ctx, addr,
CY_43012_PMU_CONTROL_EXT_MASK);
-
- /* PMU watchdog */
- addr = CORE_CC_REG(base, pmuwatchdog);
- chip->ops->write32(chip->ctx, addr,
- CY_43012_PMU_WATCHDOG_TICK_VAL);
break;
default:
@@ -1588,10 +1583,17 @@ void brcmf_chip_reset_watchdog(struct brcmf_chip *pub)
switch (pub->chip) {
case CY_CC_43012_CHIP_ID:
+ addr = CORE_CC_REG(base, min_res_mask);
+ chip->ops->write32(chip->ctx, addr,
+ CY_43012_PMU_MIN_RES_MASK);
/* Watchdog res mask */
addr = CORE_CC_REG(base, watchdog_res_mask);
chip->ops->write32(chip->ctx, addr,
CY_43012_PMU_MIN_RES_MASK);
+ /* PMU watchdog */
+ addr = CORE_CC_REG(base, pmuwatchdog);
+ chip->ops->write32(chip->ctx, addr,
+ CY_43012_PMU_WATCHDOG_TICK_VAL);
break;
default:
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index ce5f807be3d6..ba7d087d5144 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -4795,8 +4795,6 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)
FMAC_ULP_ENTRY_RECV) {
brcmf_chip_ulp_reset_lhl_regs(bus->ci);
brcmf_chip_reset_pmu_regs(bus->ci);
- brcmf_chip_set_default_min_res_mask(
- bus->ci);
} else {
brcmf_chip_set_passive(bus->ci);
}
--
2.17.1