summaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/330-v4.18-0005-brcmfmac-add-hostready-indication.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/330-v4.18-0005-brcmfmac-add-hostready-indication.patch')
-rw-r--r--package/kernel/mac80211/patches/330-v4.18-0005-brcmfmac-add-hostready-indication.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/330-v4.18-0005-brcmfmac-add-hostready-indication.patch b/package/kernel/mac80211/patches/330-v4.18-0005-brcmfmac-add-hostready-indication.patch
new file mode 100644
index 0000000..e3d4441
--- /dev/null
+++ b/package/kernel/mac80211/patches/330-v4.18-0005-brcmfmac-add-hostready-indication.patch
@@ -0,0 +1,74 @@
+From 84ad327d18debe19b8d509059b61db445d048b02 Mon Sep 17 00:00:00 2001
+From: Franky Lin <franky.lin@broadcom.com>
+Date: Thu, 26 Apr 2018 12:16:50 +0200
+Subject: [PATCH] brcmfmac: add hostready indication
+
+A hostready signal is introduced to inform firmware through mailbox
+doorbell1 when common ring initialized or D3 exited.
+
+Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Franky Lin <franky.lin@broadcom.com>
+Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+@@ -105,7 +105,8 @@ static const struct brcmf_firmware_mappi
+ #define BRCMF_PCIE_PCIE2REG_MAILBOXMASK 0x4C
+ #define BRCMF_PCIE_PCIE2REG_CONFIGADDR 0x120
+ #define BRCMF_PCIE_PCIE2REG_CONFIGDATA 0x124
+-#define BRCMF_PCIE_PCIE2REG_H2D_MAILBOX 0x140
++#define BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0 0x140
++#define BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1 0x144
+
+ #define BRCMF_PCIE2_INTA 0x01
+ #define BRCMF_PCIE2_INTB 0x02
+@@ -140,6 +141,7 @@ static const struct brcmf_firmware_mappi
+ #define BRCMF_PCIE_SHARED_VERSION_MASK 0x00FF
+ #define BRCMF_PCIE_SHARED_DMA_INDEX 0x10000
+ #define BRCMF_PCIE_SHARED_DMA_2B_IDX 0x100000
++#define BRCMF_PCIE_SHARED_HOSTRDY_DB1 0x10000000
+
+ #define BRCMF_PCIE_FLAGS_HTOD_SPLIT 0x4000
+ #define BRCMF_PCIE_FLAGS_DTOH_SPLIT 0x8000
+@@ -782,6 +784,12 @@ static void brcmf_pcie_intr_enable(struc
+ BRCMF_PCIE_MB_INT_FN0_1);
+ }
+
++static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
++{
++ if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1)
++ brcmf_pcie_write_reg32(devinfo,
++ BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1, 1);
++}
+
+ static irqreturn_t brcmf_pcie_quick_check_isr(int irq, void *arg)
+ {
+@@ -924,7 +932,7 @@ static int brcmf_pcie_ring_mb_ring_bell(
+
+ brcmf_dbg(PCIE, "RING !\n");
+ /* Any arbitrary value will do, lets use 1 */
+- brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX, 1);
++ brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0, 1);
+
+ return 0;
+ }
+@@ -1728,6 +1736,7 @@ static void brcmf_pcie_setup(struct devi
+ init_waitqueue_head(&devinfo->mbdata_resp_wait);
+
+ brcmf_pcie_intr_enable(devinfo);
++ brcmf_pcie_hostready(devinfo);
+ if (brcmf_attach(&devinfo->pdev->dev, devinfo->settings) == 0)
+ return;
+
+@@ -1950,6 +1959,7 @@ static int brcmf_pcie_pm_leave_D3(struct
+ brcmf_pcie_select_core(devinfo, BCMA_CORE_PCIE2);
+ brcmf_bus_change_state(bus, BRCMF_BUS_UP);
+ brcmf_pcie_intr_enable(devinfo);
++ brcmf_pcie_hostready(devinfo);
+ return 0;
+ }
+