Commit | Line | Data |
---|---|---|
53b2e01b | 1 | /* |
a09e64fb | 2 | * arch/arm/mach-ixp4xx/include/mach/cpu.h |
53b2e01b VB |
3 | * |
4 | * IXP4XX cpu type detection | |
5 | * | |
6 | * Copyright (C) 2007 MontaVista Software, Inc. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify | |
9 | * it under the terms of the GNU General Public License version 2 as | |
10 | * published by the Free Software Foundation. | |
11 | * | |
12 | */ | |
13 | ||
14 | #ifndef __ASM_ARCH_CPU_H__ | |
15 | #define __ASM_ARCH_CPU_H__ | |
16 | ||
13ec32f4 | 17 | #include <linux/io.h> |
0ba8b9b2 RK |
18 | #include <asm/cputype.h> |
19 | ||
53b2e01b | 20 | /* Processor id value in CP15 Register 0 */ |
de3ce856 KH |
21 | #define IXP42X_PROCESSOR_ID_VALUE 0x690541c0 /* including unused 0x690541Ex */ |
22 | #define IXP42X_PROCESSOR_ID_MASK 0xffffffc0 | |
23 | ||
24 | #define IXP43X_PROCESSOR_ID_VALUE 0x69054040 | |
25 | #define IXP43X_PROCESSOR_ID_MASK 0xfffffff0 | |
26 | ||
27 | #define IXP46X_PROCESSOR_ID_VALUE 0x69054200 /* including IXP455 */ | |
28 | #define IXP46X_PROCESSOR_ID_MASK 0xfffffff0 | |
29 | ||
8a4fe824 KH |
30 | #define cpu_is_ixp42x_rev_a0() ((read_cpuid_id() & (IXP42X_PROCESSOR_ID_MASK | 0xF)) == \ |
31 | IXP42X_PROCESSOR_ID_VALUE) | |
de3ce856 KH |
32 | #define cpu_is_ixp42x() ((read_cpuid_id() & IXP42X_PROCESSOR_ID_MASK) == \ |
33 | IXP42X_PROCESSOR_ID_VALUE) | |
34 | #define cpu_is_ixp43x() ((read_cpuid_id() & IXP43X_PROCESSOR_ID_MASK) == \ | |
35 | IXP43X_PROCESSOR_ID_VALUE) | |
36 | #define cpu_is_ixp46x() ((read_cpuid_id() & IXP46X_PROCESSOR_ID_MASK) == \ | |
37 | IXP46X_PROCESSOR_ID_VALUE) | |
53b2e01b | 38 | |
c18f6581 KH |
39 | static inline u32 ixp4xx_read_feature_bits(void) |
40 | { | |
13ec32f4 | 41 | u32 val = ~__raw_readl(IXP4XX_EXP_CFG2); |
c18f6581 | 42 | |
8a4fe824 KH |
43 | if (cpu_is_ixp42x_rev_a0()) |
44 | return IXP42X_FEATURE_MASK & ~(IXP4XX_FEATURE_RCOMP | | |
45 | IXP4XX_FEATURE_AES); | |
de3ce856 KH |
46 | if (cpu_is_ixp42x()) |
47 | return val & IXP42X_FEATURE_MASK; | |
48 | if (cpu_is_ixp43x()) | |
49 | return val & IXP43X_FEATURE_MASK; | |
50 | return val & IXP46X_FEATURE_MASK; | |
c18f6581 KH |
51 | } |
52 | ||
53 | static inline void ixp4xx_write_feature_bits(u32 value) | |
54 | { | |
13ec32f4 | 55 | __raw_writel(~value, IXP4XX_EXP_CFG2); |
c18f6581 KH |
56 | } |
57 | ||
53b2e01b | 58 | #endif /* _ASM_ARCH_CPU_H */ |