mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	The BCM4331 supports a PCIe max request size of 512 bytes and uses that, but the PCIe controller in the BCM4706 just supports 128 Bytes and that causes a DMA error for packages bigger than 126 bytes. This fixes the problem by setting the BCM4331 also to 128 Bytes. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 37709
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| brcmsmac: use bcma PCIe up and down functions
 | |
| 
 | |
| replace the calls to bcma_core_pci_extend_L1timer() by calls to the
 | |
| newly introduced bcma_core_pci_ip() and bcma_core_pci_down()
 | |
| 
 | |
| Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 | |
| 
 | |
| --- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
 | |
| +++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
 | |
| @@ -679,27 +679,6 @@ bool ai_clkctl_cc(struct si_pub *sih, en
 | |
|  	return mode == BCMA_CLKMODE_FAST;
 | |
|  }
 | |
|  
 | |
| -void ai_pci_up(struct si_pub *sih)
 | |
| -{
 | |
| -	struct si_info *sii;
 | |
| -
 | |
| -	sii = container_of(sih, struct si_info, pub);
 | |
| -
 | |
| -	if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
 | |
| -		bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci[0], true);
 | |
| -}
 | |
| -
 | |
| -/* Unconfigure and/or apply various WARs when going down */
 | |
| -void ai_pci_down(struct si_pub *sih)
 | |
| -{
 | |
| -	struct si_info *sii;
 | |
| -
 | |
| -	sii = container_of(sih, struct si_info, pub);
 | |
| -
 | |
| -	if (sii->icbus->hosttype == BCMA_HOSTTYPE_PCI)
 | |
| -		bcma_core_pci_extend_L1timer(&sii->icbus->drv_pci[0], false);
 | |
| -}
 | |
| -
 | |
|  /* Enable BT-COEX & Ex-PA for 4313 */
 | |
|  void ai_epa_4313war(struct si_pub *sih)
 | |
|  {
 | |
| --- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
 | |
| +++ b/drivers/net/wireless/brcm80211/brcmsmac/aiutils.h
 | |
| @@ -183,9 +183,6 @@ extern u16 ai_clkctl_fast_pwrup_delay(st
 | |
|  extern bool ai_clkctl_cc(struct si_pub *sih, enum bcma_clkmode mode);
 | |
|  extern bool ai_deviceremoved(struct si_pub *sih);
 | |
|  
 | |
| -extern void ai_pci_down(struct si_pub *sih);
 | |
| -extern void ai_pci_up(struct si_pub *sih);
 | |
| -
 | |
|  /* Enable Ex-PA for 4313 */
 | |
|  extern void ai_epa_4313war(struct si_pub *sih);
 | |
|  
 | |
| --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
 | |
| +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
 | |
| @@ -4667,7 +4667,7 @@ static int brcms_b_attach(struct brcms_c
 | |
|  	brcms_c_coredisable(wlc_hw);
 | |
|  
 | |
|  	/* Match driver "down" state */
 | |
| -	ai_pci_down(wlc_hw->sih);
 | |
| +	bcma_core_pci_down(wlc_hw->d11core->bus);
 | |
|  
 | |
|  	/* turn off pll and xtal to match driver "down" state */
 | |
|  	brcms_b_xtal(wlc_hw, OFF);
 | |
| @@ -5010,12 +5010,12 @@ static int brcms_b_up_prep(struct brcms_
 | |
|  	 */
 | |
|  	if (brcms_b_radio_read_hwdisabled(wlc_hw)) {
 | |
|  		/* put SB PCI in down state again */
 | |
| -		ai_pci_down(wlc_hw->sih);
 | |
| +		bcma_core_pci_down(wlc_hw->d11core->bus);
 | |
|  		brcms_b_xtal(wlc_hw, OFF);
 | |
|  		return -ENOMEDIUM;
 | |
|  	}
 | |
|  
 | |
| -	ai_pci_up(wlc_hw->sih);
 | |
| +	bcma_core_pci_up(wlc_hw->d11core->bus);
 | |
|  
 | |
|  	/* reset the d11 core */
 | |
|  	brcms_b_corereset(wlc_hw, BRCMS_USE_COREFLAGS);
 | |
| @@ -5212,7 +5212,7 @@ static int brcms_b_down_finish(struct br
 | |
|  
 | |
|  		/* turn off primary xtal and pll */
 | |
|  		if (!wlc_hw->noreset) {
 | |
| -			ai_pci_down(wlc_hw->sih);
 | |
| +			bcma_core_pci_down(wlc_hw->d11core->bus);
 | |
|  			brcms_b_xtal(wlc_hw, OFF);
 | |
|  		}
 | |
|  	}
 |