Blackfin arch: fix bug - detect 0.1 silicon revision BF527-EZKIT as 0.0 version
authorMichael Hennerich <michael.hennerich@analog.com>
Sat, 19 Jul 2008 08:56:53 +0000 (16:56 +0800)
committerBryan Wu <cooloney@kernel.org>
Sat, 19 Jul 2008 08:56:53 +0000 (16:56 +0800)
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
include/asm-blackfin/processor.h

index 1c00407..6f3995b 100644 (file)
@@ -112,7 +112,26 @@ unsigned long get_wchan(struct task_struct *p);
 static inline uint32_t __pure bfin_revid(void)
 {
        /* stored in the upper 4 bits */
-       return bfin_read_CHIPID() >> 28;
+       uint32_t revid = bfin_read_CHIPID() >> 28;
+
+#ifdef CONFIG_BF52x
+       /* ANOMALY_05000357
+        * Incorrect Revision Number in DSPID Register
+        */
+       if (revid == 0)
+               switch (bfin_read16(_BOOTROM_GET_DXE_ADDRESS_TWI)) {
+               case 0x0010:
+                       revid = 0;
+                       break;
+               case 0x2796:
+                       revid = 1;
+                       break;
+               default:
+                       revid = 0xFFFF;
+                       break;
+               }
+#endif
+       return revid;
 }
 
 static inline uint32_t __pure bfin_compiled_revid(void)