netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2] bcm43xx: Fix failure to deliver PCI-E interrupts
@ 2007-01-12 18:08 Larry Finger
       [not found] ` <45a7ceb2.m02aaCgouBsadVk/%Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Larry Finger @ 2007-01-12 18:08 UTC (permalink / raw)
  To: John Linville
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, Bcm43xx-dev-0fE9KPoRgkgATYTw5x5z8w,
	Michael Buesch

The PCI-E modifications to bcm43xx do not set up the interrupt vector
correctly. Tested with BCM4311 (PCI-E) on x86_64 and BCM4306 (PCI) on i386.

Signed-off-by: Larry Finger <Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
---

John,

This fix should be applied to wireless-2.6 _AND_ pushed upstream to
2.6.20-rcX. Without this patch, none of the PCI-E interfaces will work.
This version incorporates Michael Buesch's comments, and forgoes some
code clean-ups that were in the first version/

Larry


Index: linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -2704,8 +2704,8 @@ static int bcm43xx_probe_cores(struct bc
 		sb_id_hi = bcm43xx_read32(bcm, BCM43xx_CIR_SB_ID_HI);
 
 		/* extract core_id, core_rev, core_vendor */
-		core_id = (sb_id_hi & 0xFFF0) >> 4;
-		core_rev = (sb_id_hi & 0xF);
+		core_id = (sb_id_hi & 0x8FF0) >> 4;
+		core_rev = ((sb_id_hi & 0xF) | ((sb_id_hi & 0x7000) >> 8));
 		core_vendor = (sb_id_hi & 0xFFFF0000) >> 16;
 
 		dprintk(KERN_INFO PFX "Core %d: ID 0x%x, rev 0x%x, vendor 0x%x\n",
@@ -2876,7 +2876,10 @@ static int bcm43xx_wireless_core_init(st
 		sbimconfiglow = bcm43xx_read32(bcm, BCM43xx_CIR_SBIMCONFIGLOW);
 		sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_REQUEST_TOUT_MASK;
 		sbimconfiglow &= ~ BCM43xx_SBIMCONFIGLOW_SERVICE_TOUT_MASK;
-		sbimconfiglow |= 0x32;
+		if (bcm->bustype == BCM43xx_BUSTYPE_PCI)
+			sbimconfiglow |= 0x32;
+		else
+			sbimconfiglow |= 0x53;
 		bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow);
 	}
 
@@ -3080,7 +3083,7 @@ static int bcm43xx_setup_backplane_pci_c
 	if (err)
 		goto out;
 
-	if (bcm->current_core->rev < 6 ||
+	if (bcm->current_core->rev < 6 &&
 		bcm->current_core->id == BCM43xx_COREID_PCI) {
 		value = bcm43xx_read32(bcm, BCM43xx_CIR_SBINTVEC);
 		value |= (1 << backplane_flag_nr);

---

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2007-01-18 12:52 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-12 18:08 [PATCH V2] bcm43xx: Fix failure to deliver PCI-E interrupts Larry Finger
     [not found] ` <45a7ceb2.m02aaCgouBsadVk/%Larry.Finger-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2007-01-12 18:50   ` Stephen Sinclair
     [not found]     ` <9b3e2dc20701121050p52e13d92r1ec78e1881bbed3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-01-12 19:01       ` Michael Buesch
     [not found]         ` <200701122001.45546.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-01-12 19:27           ` Larry Finger
     [not found]     ` <45A7F501.9080202@docksud.com.ar>
2007-01-12 22:59       ` evan foss
     [not found]         ` <4a55afb80701121459q4f23083t6f92a7e3bc85ccb1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-01-14  6:28           ` evan foss
     [not found]             ` <4a55afb80701132228q2e264606mf8948a45507e59ea-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-01-14 18:14               ` evan foss
2007-01-14 23:54               ` Larry Finger
2007-01-12 18:53 ` Michael Buesch
     [not found]   ` <200701121953.44630.mb-fseUSCV1ubazQB+pC5nmwQ@public.gmane.org>
2007-01-12 19:18     ` evan foss
2007-01-12 19:30       ` Larry Finger
     [not found] ` <1168881379.2481.46.camel@flanders.rdu.redhat.com>
     [not found]   ` <45ABC0D5.3060008@lwfinger.net>
     [not found]     ` <4a55afb80701151502q7bf8bbabp7507a42f072efd29@mail.gmail.com>
     [not found]       ` <45AC41C4.2070401@lwfinger.net>
2007-01-18 12:52         ` evan foss

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).