[ARM] pxa: add PXA3 cpu_is_xxx() macros
authoreric miao <eric.y.miao@gmail.com>
Wed, 12 Sep 2007 02:13:17 +0000 (19:13 -0700)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 12 Oct 2007 20:15:28 +0000 (21:15 +0100)
Extracted from patch by Eric Miao, this adds the cpu_is_xxx() macros
for identifying PXA3 SoCs.

Signed-off-by: eric miao <eric.y.miao@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
include/asm-arm/arch-pxa/hardware.h

index 538a34e..fc20d72 100644 (file)
                _id == 0x411;                           \
        })
 
+#define __cpu_is_pxa300(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x688;                           \
+        })
+
+#define __cpu_is_pxa310(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x689;                           \
+        })
+
+#define __cpu_is_pxa320(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x603 || _id == 0x682;           \
+        })
+
 #define cpu_is_pxa21x()                                        \
        ({                                              \
                unsigned int id = read_cpuid(CPUID_ID); \
                __cpu_is_pxa27x(id);                    \
        })
 
+#define cpu_is_pxa300()                                        \
+       ({                                              \
+               unsigned int id = read_cpuid(CPUID_ID); \
+               __cpu_is_pxa300(id);                    \
+        })
+
+#define cpu_is_pxa310()                                        \
+       ({                                              \
+               unsigned int id = read_cpuid(CPUID_ID); \
+               __cpu_is_pxa310(id);                    \
+        })
+
+#define cpu_is_pxa320()                                        \
+       ({                                              \
+               unsigned int id = read_cpuid(CPUID_ID); \
+               __cpu_is_pxa320(id);                    \
+        })
+
+/*
+ * CPUID Core Generation Bit
+ * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
+ * == 0x3 for pxa300/pxa310/pxa320
+ */
+#define __cpu_is_pxa2xx(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 13 & 0x7;    \
+               _id <= 0x2;                             \
+        })
+
+#define __cpu_is_pxa3xx(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 13 & 0x7;    \
+               _id == 0x3;                             \
+        })
+
+#define cpu_is_pxa2xx()                                        \
+       ({                                              \
+               unsigned int id = read_cpuid(CPUID_ID); \
+               __cpu_is_pxa2xx(id);                    \
+        })
+
+#define cpu_is_pxa3xx()                                        \
+       ({                                              \
+               unsigned int id = read_cpuid(CPUID_ID); \
+               __cpu_is_pxa3xx(id);                    \
+        })
+
 /*
  * Handy routine to set GPIO alternate functions
  */