mac80211: brcmfmac: backport remaining changes from 4.16
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
		| @@ -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; | ||||
		Reference in New Issue
	
	Block a user
	 Rafał Miłecki
					Rafał Miłecki