diff options
Diffstat (limited to 'arch/arm/mach-ixp4xx/include/mach/cpu.h')
| -rw-r--r-- | arch/arm/mach-ixp4xx/include/mach/cpu.h | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/arch/arm/mach-ixp4xx/include/mach/cpu.h b/arch/arm/mach-ixp4xx/include/mach/cpu.h index 51bd69c46d94..def7773be67c 100644 --- a/arch/arm/mach-ixp4xx/include/mach/cpu.h +++ b/arch/arm/mach-ixp4xx/include/mach/cpu.h | |||
| @@ -17,26 +17,31 @@ | |||
| 17 | #include <asm/cputype.h> | 17 | #include <asm/cputype.h> |
| 18 | 18 | ||
| 19 | /* Processor id value in CP15 Register 0 */ | 19 | /* Processor id value in CP15 Register 0 */ |
| 20 | #define IXP425_PROCESSOR_ID_VALUE 0x690541c0 | 20 | #define IXP42X_PROCESSOR_ID_VALUE 0x690541c0 /* including unused 0x690541Ex */ |
| 21 | #define IXP435_PROCESSOR_ID_VALUE 0x69054040 | 21 | #define IXP42X_PROCESSOR_ID_MASK 0xffffffc0 |
| 22 | #define IXP465_PROCESSOR_ID_VALUE 0x69054200 | 22 | |
| 23 | #define IXP4XX_PROCESSOR_ID_MASK 0xfffffff0 | 23 | #define IXP43X_PROCESSOR_ID_VALUE 0x69054040 |
| 24 | 24 | #define IXP43X_PROCESSOR_ID_MASK 0xfffffff0 | |
| 25 | #define cpu_is_ixp42x() ((read_cpuid_id() & IXP4XX_PROCESSOR_ID_MASK) == \ | 25 | |
| 26 | IXP425_PROCESSOR_ID_VALUE) | 26 | #define IXP46X_PROCESSOR_ID_VALUE 0x69054200 /* including IXP455 */ |
| 27 | #define cpu_is_ixp43x() ((read_cpuid_id() & IXP4XX_PROCESSOR_ID_MASK) == \ | 27 | #define IXP46X_PROCESSOR_ID_MASK 0xfffffff0 |
| 28 | IXP435_PROCESSOR_ID_VALUE) | 28 | |
| 29 | #define cpu_is_ixp46x() ((read_cpuid_id() & IXP4XX_PROCESSOR_ID_MASK) == \ | 29 | #define cpu_is_ixp42x() ((read_cpuid_id() & IXP42X_PROCESSOR_ID_MASK) == \ |
| 30 | IXP465_PROCESSOR_ID_VALUE) | 30 | IXP42X_PROCESSOR_ID_VALUE) |
| 31 | #define cpu_is_ixp43x() ((read_cpuid_id() & IXP43X_PROCESSOR_ID_MASK) == \ | ||
| 32 | IXP43X_PROCESSOR_ID_VALUE) | ||
| 33 | #define cpu_is_ixp46x() ((read_cpuid_id() & IXP46X_PROCESSOR_ID_MASK) == \ | ||
| 34 | IXP46X_PROCESSOR_ID_VALUE) | ||
| 31 | 35 | ||
| 32 | static inline u32 ixp4xx_read_feature_bits(void) | 36 | static inline u32 ixp4xx_read_feature_bits(void) |
| 33 | { | 37 | { |
| 34 | unsigned int val = ~*IXP4XX_EXP_CFG2; | 38 | unsigned int val = ~*IXP4XX_EXP_CFG2; |
| 35 | val &= ~IXP4XX_FEATURE_RESERVED; | ||
| 36 | if (!cpu_is_ixp46x()) | ||
| 37 | val &= ~IXP4XX_FEATURE_IXP46X_ONLY; | ||
| 38 | 39 | ||
| 39 | return val; | 40 | if (cpu_is_ixp42x()) |
| 41 | return val & IXP42X_FEATURE_MASK; | ||
| 42 | if (cpu_is_ixp43x()) | ||
| 43 | return val & IXP43X_FEATURE_MASK; | ||
| 44 | return val & IXP46X_FEATURE_MASK; | ||
| 40 | } | 45 | } |
| 41 | 46 | ||
| 42 | static inline void ixp4xx_write_feature_bits(u32 value) | 47 | static inline void ixp4xx_write_feature_bits(u32 value) |
