diff options
Diffstat (limited to 'kernel/arch/arm/mach-mmp/include/mach/cputype.h')
-rw-r--r-- | kernel/arch/arm/mach-mmp/include/mach/cputype.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/kernel/arch/arm/mach-mmp/include/mach/cputype.h b/kernel/arch/arm/mach-mmp/include/mach/cputype.h new file mode 100644 index 000000000..8a3b56dfd --- /dev/null +++ b/kernel/arch/arm/mach-mmp/include/mach/cputype.h @@ -0,0 +1,55 @@ +#ifndef __ASM_MACH_CPUTYPE_H +#define __ASM_MACH_CPUTYPE_H + +#include <asm/cputype.h> + +/* + * CPU Stepping CPU_ID CHIP_ID + * + * PXA168 S0 0x56158400 0x0000C910 + * PXA168 A0 0x56158400 0x00A0A168 + * PXA910 Y1 0x56158400 0x00F2C920 + * PXA910 A0 0x56158400 0x00F2C910 + * PXA910 A1 0x56158400 0x00A0C910 + * PXA920 Y0 0x56158400 0x00F2C920 + * PXA920 A0 0x56158400 0x00A0C920 + * PXA920 A1 0x56158400 0x00A1C920 + * MMP2 Z0 0x560f5811 0x00F00410 + * MMP2 Z1 0x560f5811 0x00E00410 + * MMP2 A0 0x560f5811 0x00A0A610 + */ + +extern unsigned int mmp_chip_id; + +#ifdef CONFIG_CPU_PXA168 +static inline int cpu_is_pxa168(void) +{ + return (((read_cpuid_id() >> 8) & 0xff) == 0x84) && + ((mmp_chip_id & 0xfff) == 0x168); +} +#else +#define cpu_is_pxa168() (0) +#endif + +/* cpu_is_pxa910() is shared on both pxa910 and pxa920 */ +#ifdef CONFIG_CPU_PXA910 +static inline int cpu_is_pxa910(void) +{ + return (((read_cpuid_id() >> 8) & 0xff) == 0x84) && + (((mmp_chip_id & 0xfff) == 0x910) || + ((mmp_chip_id & 0xfff) == 0x920)); +} +#else +#define cpu_is_pxa910() (0) +#endif + +#ifdef CONFIG_CPU_MMP2 +static inline int cpu_is_mmp2(void) +{ + return (((read_cpuid_id() >> 8) & 0xff) == 0x58); +} +#else +#define cpu_is_mmp2() (0) +#endif + +#endif /* __ASM_MACH_CPUTYPE_H */ |