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