diff options
Diffstat (limited to 'drivers/ssb/main.c')
-rw-r--r-- | drivers/ssb/main.c | 10 |
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 | ||
873 | static u32 ssb_tmslow_reject_bitmask(struct ssb_device *dev) | 873 | static 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); |