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
@ -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…
x
Reference in New Issue
Block a user