mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05: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);
 | 
						|
 		}
 | 
						|
 	}
 |