mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
66 lines
2.2 KiB
Diff
66 lines
2.2 KiB
Diff
From b7edf2ad70757a18706cb152763553cf98669627 Mon Sep 17 00:00:00 2001
|
|
From: Double Lo <Double.Lo@infineon.com>
|
|
Date: Tue, 4 May 2021 05:30:28 -0500
|
|
Subject: [PATCH 096/179] brcmfmac: Optimize CYW4373 SDIO current
|
|
|
|
Optimize the current by requesting HT_AVAIL clock instead of HT clock.
|
|
|
|
|
|
Signed-off-by: Double Lo <Double.Lo@infineon.com>
|
|
---
|
|
.../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 7e0aeb1434fd..da273eff93d2 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
@@ -2540,6 +2540,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);
|
|
@@ -2576,7 +2584,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,
|
|
@@ -3707,7 +3716,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 {
|
|
@@ -4510,7 +4520,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.17.1
|
|
|