 c52054e568
			
		
	
	c52054e568
	
	
	
		
			
			This improves FullMAC firmware compatibility, adds logging in case of
firmware crash and *may* fix "Invalid packet id" errors.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit 8888cb725d)
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 9ef77fbedad9ea8895cd5d7fb7aee16071f527dc Mon Sep 17 00:00:00 2001
 | |
| From: Wright Feng <Wright.Feng@cypress.com>
 | |
| Date: Fri, 26 Apr 2019 03:12:32 +0000
 | |
| Subject: [PATCH] brcmfmac: send mailbox interrupt twice for specific hardware
 | |
|  device
 | |
| 
 | |
| For PCIE wireless device with core revision less than 14, device may miss
 | |
| PCIE to System Backplane Interrupt via PCIEtoSBMailbox. So add sending
 | |
| mail box interrupt twice as a hardware workaround.
 | |
| 
 | |
| Signed-off-by: Wright Feng <wright.feng@cypress.com>
 | |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 | |
| ---
 | |
|  drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 7 ++++++-
 | |
|  1 file changed, 6 insertions(+), 1 deletion(-)
 | |
| 
 | |
| --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
 | |
| +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
 | |
| @@ -675,6 +675,7 @@ static int
 | |
|  brcmf_pcie_send_mb_data(struct brcmf_pciedev_info *devinfo, u32 htod_mb_data)
 | |
|  {
 | |
|  	struct brcmf_pcie_shared_info *shared;
 | |
| +	struct brcmf_core *core;
 | |
|  	u32 addr;
 | |
|  	u32 cur_htod_mb_data;
 | |
|  	u32 i;
 | |
| @@ -698,7 +699,11 @@ brcmf_pcie_send_mb_data(struct brcmf_pci
 | |
|  
 | |
|  	brcmf_pcie_write_tcm32(devinfo, addr, htod_mb_data);
 | |
|  	pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_SBMBX, 1);
 | |
| -	pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_SBMBX, 1);
 | |
| +
 | |
| +	/* Send mailbox interrupt twice as a hardware workaround */
 | |
| +	core = brcmf_chip_get_core(devinfo->ci, BCMA_CORE_PCIE2);
 | |
| +	if (core->rev <= 13)
 | |
| +		pci_write_config_dword(devinfo->pdev, BRCMF_PCIE_REG_SBMBX, 1);
 | |
|  
 | |
|  	return 0;
 | |
|  }
 |