]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
silicon revision check for OMAP2/3
authorGirish <girishsg@ti.com>
Mon, 5 Nov 2007 11:12:32 +0000 (16:42 +0530)
committerTony Lindgren <tony@atomide.com>
Thu, 15 Nov 2007 02:12:26 +0000 (18:12 -0800)
This patch adds macro for identifying 3430 cpu type and silicon revision of OMAP2/3 processors as well.

Signed-off-by: Girish S G <girishsg@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
include/asm-arm/arch-omap/cpu.h

index b9399a85c1aee0ad80a843985082c1a035edf268..2683f775e260c334429c3ac6e5fa6f8c89995ed8 100644 (file)
@@ -28,7 +28,7 @@
 
 extern unsigned int system_rev;
 
-#define omap2_cpu_rev()                ((system_rev >> 8) & 0x0f)
+#define omap2_cpu_rev()                ((system_rev >> 12) & 0x0f)
 
 /*
  * Test if multicore OMAP support is needed
@@ -90,7 +90,7 @@ extern unsigned int system_rev;
  * cpu_is_omap243x():  True for OMAP2430
  * cpu_is_omap343x():  True for OMAP3430
  */
-#define GET_OMAP_CLASS (system_rev & 0xff)
+#define GET_OMAP_CLASS ((system_rev >> 24) & 0xff)
 
 #define IS_OMAP_CLASS(class, id)                       \
 static inline int is_omap ##class (void)               \
@@ -181,6 +181,7 @@ IS_OMAP_SUBCLASS(343x, 0x343)
  * cpu_is_omap2422():  True for OMAP2422
  * cpu_is_omap2423():  True for OMAP2423
  * cpu_is_omap2430():  True for OMAP2430
+ * cpu_is_omap3430():  True for OMAP3430
  */
 #define GET_OMAP_TYPE  ((system_rev >> 16) & 0xffff)
 
@@ -275,4 +276,61 @@ IS_OMAP_TYPE(3430, 0x3430)
                                cpu_is_omap16xx())
 #define cpu_class_is_omap2()   (cpu_is_omap24xx() || cpu_is_omap34xx())
 
+#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
+/*
+ * Macros to detect silicon revision of OMAP2/3 processors.
+ * is_sil_rev_greater_than:    true if passed cpu type & its rev is greater.
+ * is_sil_rev_lesser_than:     true if passed cpu type & its rev is lesser.
+ * is_sil_rev_equal_to:                true if passed cpu type & its rev is equal.
+ * get_sil_rev:                        return the silicon rev value.
+ */
+#define get_sil_omap_type(rev) ((rev & 0xffff0000) >> 16)
+#define get_sil_revision(rev)  ((rev & 0x00000f000) >> 12)
+
+#define is_sil_rev_greater_than(rev) \
+               ((get_sil_omap_type(system_rev) == get_sil_omap_type(rev)) && \
+               (get_sil_revision(system_rev) > get_sil_revision(rev)))
+
+#define is_sil_rev_less_than(rev) \
+               ((get_sil_omap_type(system_rev) == get_sil_omap_type(rev)) && \
+               (get_sil_revision(system_rev) < get_sil_revision(rev)))
+
+#define is_sil_rev_equal_to(rev) \
+               ((get_sil_omap_type(system_rev) == get_sil_omap_type(rev)) && \
+               (get_sil_revision(system_rev) == get_sil_revision(rev)))
+
+#define get_sil_rev() \
+               get_sil_revision(system_rev)
+
+/* Various silicon macros defined here */
+#define OMAP2420_REV_ES1_0     0x24200000
+#define OMAP2420_REV_ES2_0     0x24201000
+#define OMAP2430_REV_ES1_0     0x24300000
+#define OMAP3430_REV_ES1_0     0x34300000
+#define OMAP3430_REV_ES2_0     0x34301000
+
+/*
+ * Macro to detect device type i.e. EMU/HS/TST/GP/BAD
+ */
+#define DEVICE_TYPE_TEST       0
+#define DEVICE_TYPE_EMU        1
+#define DEVICE_TYPE_SEC        2
+#define DEVICE_TYPE_GP         3
+#define DEVICE_TYPE_BAD        4
+
+#define get_device_type()      \
+               ((system_rev & 0x700) >> 8)
+#define is_device_type_test()  \
+               (get_device_type() == DEVICE_TYPE_TEST)
+#define is_device_type_emu()   \
+               (get_device_type() == DEVICE_TYPE_EMU)
+#define is_device_type_sec()   \
+               (get_device_type() == DEVICE_TYPE_SEC)
+#define is_device_type_gp()    \
+               (get_device_type() == DEVICE_TYPE_GP)
+#define is_device_type_bad()   \
+               (get_device_type() == DEVICE_TYPE_BAD)
+
+#endif
+
 #endif