浏览代码

[ARM] pxa: introduce cpu_is_pxaXXX macros

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 18 年之前
父节点
当前提交
b23170c01f
共有 2 个文件被更改,包括 38 次插入4 次删除
  1. 2 4
      arch/arm/mach-pxa/generic.c
  2. 36 0
      include/asm-arm/arch-pxa/hardware.h

+ 2 - 4
arch/arm/mach-pxa/generic.c

@@ -448,16 +448,14 @@ static struct platform_device *devices[] __initdata = {
 
 static int __init pxa_init(void)
 {
-	int cpuid, ret;
+	int ret;
 
 	ret = platform_add_devices(devices, ARRAY_SIZE(devices));
 	if (ret)
 		return ret;
 
 	/* Only add HWUART for PXA255/26x; PXA210/250/27x do not have it. */
-	cpuid = read_cpuid(CPUID_ID);
-	if (((cpuid >> 4) & 0xfff) == 0x2d0 ||
-	    ((cpuid >> 4) & 0xfff) == 0x290)
+	if (cpu_is_pxa25x())
 		ret = platform_device_register(&hwuart_device);
 
 	return ret;

+ 36 - 0
include/asm-arm/arch-pxa/hardware.h

@@ -62,6 +62,42 @@
 
 #ifndef __ASSEMBLY__
 
+#define __cpu_is_pxa21x(id)				\
+	({						\
+		unsigned int _id = (id) >> 4 & 0xf3f;	\
+		_id == 0x212;				\
+	})
+
+#define __cpu_is_pxa25x(id)				\
+	({						\
+		unsigned int _id = (id) >> 4 & 0xfff;	\
+		_id == 0x2d0 || _id == 0x290;		\
+	})
+
+#define __cpu_is_pxa27x(id)				\
+	({						\
+		unsigned int _id = (id) >> 4 & 0xfff;	\
+		_id == 0x411;				\
+	})
+
+#define cpu_is_pxa21x()					\
+	({						\
+		unsigned int id = read_cpuid(CPUID_ID);	\
+		__cpu_is_pxa21x(id);			\
+	})
+
+#define cpu_is_pxa25x()					\
+	({						\
+		unsigned int id = read_cpuid(CPUID_ID);	\
+		__cpu_is_pxa25x(id);			\
+	})
+
+#define cpu_is_pxa27x()					\
+	({						\
+		unsigned int id = read_cpuid(CPUID_ID);	\
+		__cpu_is_pxa27x(id);			\
+	})
+
 /*
  * Handy routine to set GPIO alternate functions
  */