From 5ee68395559714baa2229415fc7cc9cdede072e3 Mon Sep 17 00:00:00 2001 From: David Weng 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 [Merge from 4.14.77 to 5.4.18] Signed-off-by: Chi-hsien Lin 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