aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb/main.c
diff options
context:
space:
mode:
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);