From ae3c37b988120f7b74a6d15e52cd9b84ad5d3355 Mon Sep 17 00:00:00 2001 From: Chandra Sekhar Mahankali Date: Tue, 14 Mar 2023 06:31:18 -0500 Subject: [PATCH 227/296] brcmfmac: Bring up DS1 for 43022 DM chip 1. handle FC state interrupt 2. do not access PMU register for secured chips Signed-off-by: Chandra Sekhar Mahankali --- .../broadcom/brcm80211/brcmfmac/sdio.c | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index bf54ce0977b4..f5628cea1db7 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -3134,12 +3134,16 @@ brcmf_sdio_ulp_pre_redownload_check(struct brcmf_sdio *bus, u32 hmb_data) &err); brcmf_dbg(ULP, "wowl_wake_ind: 0x%08x, ulp_wake_ind: 0x%08x\n", wowl_wake_ind, ulp_wake_ind); - reg_addr = CORE_CC_REG( - brcmf_chip_get_pmu(bus->ci)->base, min_res_mask); - brcmf_sdiod_writel(sdiod, reg_addr, - DEFAULT_43012_MIN_RES_MASK, &err); - if (err) - brcmf_err("min_res_mask failed\n"); + + /* skip setting min resource mask for secure chip */ + if (bus->ci->chip != CY_CC_43022_CHIP_ID) { + reg_addr = CORE_CC_REG(brcmf_chip_get_pmu(bus->ci)->base, + min_res_mask); + brcmf_sdiod_writel(sdiod, reg_addr, + DEFAULT_43012_MIN_RES_MASK, &err); + if (err) + brcmf_err("min_res_mask failed\n"); + } return true; } @@ -3257,6 +3261,11 @@ static void brcmf_sdio_dpc(struct brcmf_sdio *bus) intstatus &= ~I_CHIPACTIVE; } + if (intstatus & I_HMB_FC_STATE) { + brcmf_dbg(INFO, "Dongle reports HMB_FC_STATE\n"); + intstatus &= ~I_HMB_FC_STATE; + } + /* Ignore frame indications if rxskip is set */ if (bus->rxskip) intstatus &= ~I_HMB_FRAME_IND; -- 2.25.1