From 093bf7fb3bd125e5e1b48305cab12f38df1998ad Mon Sep 17 00:00:00 2001 From: Double Lo Date: Tue, 4 May 2021 05:30:28 -0500 Subject: [PATCH 071/296] brcmfmac: Optimize CYW4373 SDIO current Optimize the current by requesting HT_AVAIL clock instead of HT clock. Signed-off-by: Double Lo --- .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index f09c1f23ed8b..abaa47e926d0 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -2541,6 +2541,14 @@ static bool brcmf_chip_is_ulp(struct brcmf_chip *ci) return false; } +static bool brcmf_sdio_use_ht_avail(struct brcmf_chip *ci) +{ + if (ci->chip == CY_CC_4373_CHIP_ID) + return true; + else + return false; +} + static void brcmf_sdio_bus_stop(struct device *dev) { struct brcmf_bus *bus_if = dev_get_drvdata(dev); @@ -2577,7 +2585,8 @@ static void brcmf_sdio_bus_stop(struct device *dev) &err); if (!err) { bpreq = saveclk; - bpreq |= brcmf_chip_is_ulp(bus->ci) ? + bpreq |= (brcmf_sdio_use_ht_avail(bus->ci) || + brcmf_chip_is_ulp(bus->ci)) ? SBSDIO_HT_AVAIL_REQ : SBSDIO_FORCE_HT; brcmf_sdiod_writeb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR, @@ -3709,7 +3718,8 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus) brcmf_dbg(TRACE, "Enter\n"); - if (brcmf_chip_is_ulp(bus->ci)) { + if (brcmf_sdio_use_ht_avail(bus->ci) || + brcmf_chip_is_ulp(bus->ci)) { wakeupctrl = SBSDIO_FUNC1_WCTRL_ALPWAIT_SHIFT; chipclkcsr = SBSDIO_HT_AVAIL_REQ; } else { @@ -4516,7 +4526,8 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, saveclk = brcmf_sdiod_readb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, &err); if (!err) { bpreq = saveclk; - bpreq |= brcmf_chip_is_ulp(bus->ci) ? + bpreq |= (brcmf_sdio_use_ht_avail(bus->ci) || + brcmf_chip_is_ulp(bus->ci)) ? SBSDIO_HT_AVAIL_REQ : SBSDIO_FORCE_HT; brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, bpreq, &err); -- 2.25.1