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