mac80211: brcmfmac: backport remaining changes from 4.16
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
parent
8d78cccc6e
commit
9543fb1ecd
5 changed files with 1297 additions and 0 deletions
|
@ -0,0 +1,27 @@
|
|||
From e3720dad99859251a8b0fe2807275a8afcfb560d Mon Sep 17 00:00:00 2001
|
||||
From: Double Lo <double.lo@cypress.com>
|
||||
Date: Tue, 19 Dec 2017 14:56:44 +0800
|
||||
Subject: [PATCH] brcmfmac: Support 43455 save-restore (SR) feature if FW
|
||||
include -sr
|
||||
|
||||
This patch will add 43455 into the save-restore(SR) capable chip list, so
|
||||
the SR engine will be enabled with 43455 FW which built-in the -sr
|
||||
function.
|
||||
|
||||
Signed-off-by: Double Lo <double.lo@cypress.com>
|
||||
Signed-off-by: Wright Feng <wright.feng@cypress.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
|
||||
@@ -1338,6 +1338,7 @@ bool brcmf_chip_sr_capable(struct brcmf_
|
||||
switch (pub->chip) {
|
||||
case BRCM_CC_4354_CHIP_ID:
|
||||
case BRCM_CC_4356_CHIP_ID:
|
||||
+ case BRCM_CC_4345_CHIP_ID:
|
||||
/* explicitly check SR engine enable bit */
|
||||
pmu_cc3_mask = BIT(2);
|
||||
/* fall-through */
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,31 @@
|
|||
From 32adbcaa5df49f1977441f7a4bf180a0bcfe9966 Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Tue, 9 Jan 2018 13:22:53 +0100
|
||||
Subject: [PATCH] brcmfmac: add comment block in brcmf_sdio_buscore_read()
|
||||
|
||||
In brcmf_sdio_buscore_read() there is some special handling upon
|
||||
register access to chipid register of the chipcommon core. Add
|
||||
comment explaining why it is done here.
|
||||
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -3772,6 +3772,13 @@ static u32 brcmf_sdio_buscore_read32(voi
|
||||
|
||||
val = brcmf_sdiod_readl(sdiodev, addr, NULL);
|
||||
|
||||
+ /*
|
||||
+ * this is a bit of special handling if reading the chipcommon chipid
|
||||
+ * register. The 4339 is a next-gen of the 4335. It uses the same
|
||||
+ * SDIO device id as 4335 and the chipid register returns 4335 as well.
|
||||
+ * It can be identified as 4339 by looking at the chip revision. It
|
||||
+ * is corrected here so the chip.c module has the right info.
|
||||
+ */
|
||||
if (addr == CORE_CC_REG(SI_ENUM_BASE, chipid) &&
|
||||
(sdiodev->func1->device == SDIO_DEVICE_ID_BROADCOM_4339 ||
|
||||
sdiodev->func1->device == SDIO_DEVICE_ID_BROADCOM_4335_4339)) {
|
|
@ -0,0 +1,137 @@
|
|||
From 378f6a16043e5d3346301fc618f503e97aea335b Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Tue, 9 Jan 2018 13:22:54 +0100
|
||||
Subject: [PATCH] brcmfmac: rename brcmf_sdiod_buff_{read,write}() functions
|
||||
|
||||
Rename functions to brcmf_sdio_skbuff_{read,write}() as we pass an
|
||||
skbuff to this function.
|
||||
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 48 +++++++++++-----------
|
||||
1 file changed, 24 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||
@@ -292,24 +292,24 @@ out:
|
||||
*ret = retval;
|
||||
}
|
||||
|
||||
-static int brcmf_sdiod_buff_read(struct brcmf_sdio_dev *sdiodev,
|
||||
- struct sdio_func *func, u32 addr,
|
||||
- struct sk_buff *pkt)
|
||||
+static int brcmf_sdiod_skbuff_read(struct brcmf_sdio_dev *sdiodev,
|
||||
+ struct sdio_func *func, u32 addr,
|
||||
+ struct sk_buff *skb)
|
||||
{
|
||||
unsigned int req_sz;
|
||||
int err;
|
||||
|
||||
/* Single skb use the standard mmc interface */
|
||||
- req_sz = pkt->len + 3;
|
||||
+ req_sz = skb->len + 3;
|
||||
req_sz &= (uint)~3;
|
||||
|
||||
switch (func->num) {
|
||||
case 1:
|
||||
- err = sdio_memcpy_fromio(func, ((u8 *)(pkt->data)), addr,
|
||||
+ err = sdio_memcpy_fromio(func, ((u8 *)(skb->data)), addr,
|
||||
req_sz);
|
||||
break;
|
||||
case 2:
|
||||
- err = sdio_readsb(func, ((u8 *)(pkt->data)), addr, req_sz);
|
||||
+ err = sdio_readsb(func, ((u8 *)(skb->data)), addr, req_sz);
|
||||
break;
|
||||
default:
|
||||
/* bail out as things are really fishy here */
|
||||
@@ -323,18 +323,18 @@ static int brcmf_sdiod_buff_read(struct
|
||||
return err;
|
||||
}
|
||||
|
||||
-static int brcmf_sdiod_buff_write(struct brcmf_sdio_dev *sdiodev,
|
||||
- struct sdio_func *func, u32 addr,
|
||||
- struct sk_buff *pkt)
|
||||
+static int brcmf_sdiod_skbuff_write(struct brcmf_sdio_dev *sdiodev,
|
||||
+ struct sdio_func *func, u32 addr,
|
||||
+ struct sk_buff *skb)
|
||||
{
|
||||
unsigned int req_sz;
|
||||
int err;
|
||||
|
||||
/* Single skb use the standard mmc interface */
|
||||
- req_sz = pkt->len + 3;
|
||||
+ req_sz = skb->len + 3;
|
||||
req_sz &= (uint)~3;
|
||||
|
||||
- err = sdio_memcpy_toio(func, addr, ((u8 *)(pkt->data)), req_sz);
|
||||
+ err = sdio_memcpy_toio(func, addr, ((u8 *)(skb->data)), req_sz);
|
||||
|
||||
if (err == -ENOMEDIUM)
|
||||
brcmf_sdiod_change_state(sdiodev, BRCMF_SDIOD_NOMEDIUM);
|
||||
@@ -550,7 +550,7 @@ int brcmf_sdiod_recv_pkt(struct brcmf_sd
|
||||
addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
||||
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func2, addr, pkt);
|
||||
+ err = brcmf_sdiod_skbuff_read(sdiodev, sdiodev->func2, addr, pkt);
|
||||
|
||||
done:
|
||||
return err;
|
||||
@@ -575,14 +575,14 @@ int brcmf_sdiod_recv_chain(struct brcmf_
|
||||
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
if (pktq->qlen == 1)
|
||||
- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func2, addr,
|
||||
- pktq->next);
|
||||
+ err = brcmf_sdiod_skbuff_read(sdiodev, sdiodev->func2, addr,
|
||||
+ pktq->next);
|
||||
else if (!sdiodev->sg_support) {
|
||||
glom_skb = brcmu_pkt_buf_get_skb(totlen);
|
||||
if (!glom_skb)
|
||||
return -ENOMEM;
|
||||
- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func2, addr,
|
||||
- glom_skb);
|
||||
+ err = brcmf_sdiod_skbuff_read(sdiodev, sdiodev->func2, addr,
|
||||
+ glom_skb);
|
||||
if (err)
|
||||
goto done;
|
||||
|
||||
@@ -623,8 +623,8 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
||||
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
||||
|
||||
if (!err)
|
||||
- err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func2, addr,
|
||||
- mypkt);
|
||||
+ err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr,
|
||||
+ mypkt);
|
||||
|
||||
brcmu_pkt_buf_free_skb(mypkt);
|
||||
|
||||
@@ -649,8 +649,8 @@ int brcmf_sdiod_send_pkt(struct brcmf_sd
|
||||
|
||||
if (pktq->qlen == 1 || !sdiodev->sg_support) {
|
||||
skb_queue_walk(pktq, skb) {
|
||||
- err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func2,
|
||||
- addr, skb);
|
||||
+ err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2,
|
||||
+ addr, skb);
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
@@ -706,11 +706,11 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev
|
||||
|
||||
if (write) {
|
||||
memcpy(pkt->data, data, dsize);
|
||||
- err = brcmf_sdiod_buff_write(sdiodev, sdiodev->func1,
|
||||
- sdaddr, pkt);
|
||||
+ err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func1,
|
||||
+ sdaddr, pkt);
|
||||
} else {
|
||||
- err = brcmf_sdiod_buff_read(sdiodev, sdiodev->func1,
|
||||
- sdaddr, pkt);
|
||||
+ err = brcmf_sdiod_skbuff_read(sdiodev, sdiodev->func1,
|
||||
+ sdaddr, pkt);
|
||||
}
|
||||
|
||||
if (err) {
|
|
@ -0,0 +1,59 @@
|
|||
From b7acadaf038740c43515dc1548f43d01cc92823a Mon Sep 17 00:00:00 2001
|
||||
From: Himanshu Jha <himanshujha199640@gmail.com>
|
||||
Date: Tue, 9 Jan 2018 02:15:31 +0530
|
||||
Subject: [PATCH] brcmfmac: Use zeroing memory allocator than allocator/memset
|
||||
|
||||
Use dma_zalloc_coherent for allocating zeroed
|
||||
memory and remove unnecessary memset function.
|
||||
|
||||
Generated-by: scripts/coccinelle/api/alloc/kzalloc-simple.cocci
|
||||
|
||||
Suggested-by: Luis R. Rodriguez <mcgrof@kernel.org>
|
||||
Signed-off-by: Himanshu Jha <himanshujha199640@gmail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||||
@@ -1251,14 +1251,14 @@ static int brcmf_pcie_init_scratchbuffer
|
||||
u64 address;
|
||||
u32 addr;
|
||||
|
||||
- devinfo->shared.scratch = dma_alloc_coherent(&devinfo->pdev->dev,
|
||||
- BRCMF_DMA_D2H_SCRATCH_BUF_LEN,
|
||||
- &devinfo->shared.scratch_dmahandle, GFP_KERNEL);
|
||||
+ devinfo->shared.scratch =
|
||||
+ dma_zalloc_coherent(&devinfo->pdev->dev,
|
||||
+ BRCMF_DMA_D2H_SCRATCH_BUF_LEN,
|
||||
+ &devinfo->shared.scratch_dmahandle,
|
||||
+ GFP_KERNEL);
|
||||
if (!devinfo->shared.scratch)
|
||||
goto fail;
|
||||
|
||||
- memset(devinfo->shared.scratch, 0, BRCMF_DMA_D2H_SCRATCH_BUF_LEN);
|
||||
-
|
||||
addr = devinfo->shared.tcm_base_address +
|
||||
BRCMF_SHARED_DMA_SCRATCH_ADDR_OFFSET;
|
||||
address = (u64)devinfo->shared.scratch_dmahandle;
|
||||
@@ -1268,14 +1268,14 @@ static int brcmf_pcie_init_scratchbuffer
|
||||
BRCMF_SHARED_DMA_SCRATCH_LEN_OFFSET;
|
||||
brcmf_pcie_write_tcm32(devinfo, addr, BRCMF_DMA_D2H_SCRATCH_BUF_LEN);
|
||||
|
||||
- devinfo->shared.ringupd = dma_alloc_coherent(&devinfo->pdev->dev,
|
||||
- BRCMF_DMA_D2H_RINGUPD_BUF_LEN,
|
||||
- &devinfo->shared.ringupd_dmahandle, GFP_KERNEL);
|
||||
+ devinfo->shared.ringupd =
|
||||
+ dma_zalloc_coherent(&devinfo->pdev->dev,
|
||||
+ BRCMF_DMA_D2H_RINGUPD_BUF_LEN,
|
||||
+ &devinfo->shared.ringupd_dmahandle,
|
||||
+ GFP_KERNEL);
|
||||
if (!devinfo->shared.ringupd)
|
||||
goto fail;
|
||||
|
||||
- memset(devinfo->shared.ringupd, 0, BRCMF_DMA_D2H_RINGUPD_BUF_LEN);
|
||||
-
|
||||
addr = devinfo->shared.tcm_base_address +
|
||||
BRCMF_SHARED_DMA_RINGUPD_ADDR_OFFSET;
|
||||
address = (u64)devinfo->shared.ringupd_dmahandle;
|
Loading…
Reference in a new issue