aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb/main.c
diff options
context:
space:
mode:
authorLarry Finger <Larry.Finger@lwfinger.net>2007-11-09 17:56:25 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:04:41 -0500
commitc272ef4403c271799a7f09a4ab7a236c86643843 (patch)
tree8f2baf9c11159044b42233cea56aa5a62dcd7500 /drivers/ssb/main.c
parentac82fab44f6b981e3f6b53784e2f23838f4908e1 (diff)
ssb: Convert to use of the new SPROM structure
In disagreement with the SPROM specs, revision 3 devices appear to have moved the MAC address. Change ssb to handle the revision 4 SPROM, which is a different size. This change in size is handled by adding a new variable to the ssb_sprom struct and using it whenever possible. For those routines that do not have access to this structure, a 'u16 size' argument is added. The new PCI_ID for the BCM4328 is also added. Testing of the Revision 4 SPROM, which is used on the BCM4328, was done by Michael Gerdau <mgerdau@tiscali.de>. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/ssb/main.c')
-rw-r--r--drivers/ssb/main.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c
index 85a20546e827..9028ed5715a1 100644
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
@@ -872,14 +872,22 @@ EXPORT_SYMBOL(ssb_clockspeed);
872 872
873static u32 ssb_tmslow_reject_bitmask(struct ssb_device *dev) 873static u32 ssb_tmslow_reject_bitmask(struct ssb_device *dev)
874{ 874{
875 u32 rev = ssb_read32(dev, SSB_IDLOW) & SSB_IDLOW_SSBREV;
876
875 /* The REJECT bit changed position in TMSLOW between 877 /* The REJECT bit changed position in TMSLOW between
876 * Backplane revisions. */ 878 * Backplane revisions. */
877 switch (ssb_read32(dev, SSB_IDLOW) & SSB_IDLOW_SSBREV) { 879 switch (rev) {
878 case SSB_IDLOW_SSBREV_22: 880 case SSB_IDLOW_SSBREV_22:
879 return SSB_TMSLOW_REJECT_22; 881 return SSB_TMSLOW_REJECT_22;
880 case SSB_IDLOW_SSBREV_23: 882 case SSB_IDLOW_SSBREV_23:
881 return SSB_TMSLOW_REJECT_23; 883 return SSB_TMSLOW_REJECT_23;
884 case SSB_IDLOW_SSBREV_24: /* TODO - find the proper REJECT bits */
885 case SSB_IDLOW_SSBREV_25: /* same here */
886 case SSB_IDLOW_SSBREV_26: /* same here */
887 case SSB_IDLOW_SSBREV_27: /* same here */
888 return SSB_TMSLOW_REJECT_23; /* this is a guess */
882 default: 889 default:
890 printk(KERN_INFO "ssb: Backplane Revision 0x%.8X\n", rev);
883 WARN_ON(1); 891 WARN_ON(1);
884 } 892 }
885 return (SSB_TMSLOW_REJECT_22 | SSB_TMSLOW_REJECT_23); 893 return (SSB_TMSLOW_REJECT_22 | SSB_TMSLOW_REJECT_23);