2007-04-11 16:32:46 +01:00
/*
2008-08-05 16:14:15 +01:00
* arch / arm / mach - ixp4xx / include / mach / cpu . h
2007-04-11 16:32:46 +01:00
*
* IXP4XX cpu type detection
*
* Copyright ( C ) 2007 MontaVista Software , Inc .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*
*/
# ifndef __ASM_ARCH_CPU_H__
# define __ASM_ARCH_CPU_H__
2008-08-10 18:08:10 +01:00
# include <asm/cputype.h>
2007-04-11 16:32:46 +01:00
/* Processor id value in CP15 Register 0 */
2009-03-17 13:51:52 +01:00
# define IXP42X_PROCESSOR_ID_VALUE 0x690541c0 /* including unused 0x690541Ex */
# define IXP42X_PROCESSOR_ID_MASK 0xffffffc0
# define IXP43X_PROCESSOR_ID_VALUE 0x69054040
# define IXP43X_PROCESSOR_ID_MASK 0xfffffff0
# define IXP46X_PROCESSOR_ID_VALUE 0x69054200 /* including IXP455 */
# define IXP46X_PROCESSOR_ID_MASK 0xfffffff0
2009-04-28 14:48:43 +02:00
# define cpu_is_ixp42x_rev_a0() ((read_cpuid_id() & (IXP42X_PROCESSOR_ID_MASK | 0xF)) == \
IXP42X_PROCESSOR_ID_VALUE )
2009-03-17 13:51:52 +01:00
# define cpu_is_ixp42x() ((read_cpuid_id() & IXP42X_PROCESSOR_ID_MASK) == \
IXP42X_PROCESSOR_ID_VALUE )
# define cpu_is_ixp43x() ((read_cpuid_id() & IXP43X_PROCESSOR_ID_MASK) == \
IXP43X_PROCESSOR_ID_VALUE )
# define cpu_is_ixp46x() ((read_cpuid_id() & IXP46X_PROCESSOR_ID_MASK) == \
IXP46X_PROCESSOR_ID_VALUE )
2007-04-11 16:32:46 +01:00
2007-12-18 03:53:27 +01:00
static inline u32 ixp4xx_read_feature_bits ( void )
{
2009-04-28 14:48:43 +02:00
u32 val = ~ * IXP4XX_EXP_CFG2 ;
2007-12-18 03:53:27 +01:00
2009-04-28 14:48:43 +02:00
if ( cpu_is_ixp42x_rev_a0 ( ) )
return IXP42X_FEATURE_MASK & ~ ( IXP4XX_FEATURE_RCOMP |
IXP4XX_FEATURE_AES ) ;
2009-03-17 13:51:52 +01:00
if ( cpu_is_ixp42x ( ) )
return val & IXP42X_FEATURE_MASK ;
if ( cpu_is_ixp43x ( ) )
return val & IXP43X_FEATURE_MASK ;
return val & IXP46X_FEATURE_MASK ;
2007-12-18 03:53:27 +01:00
}
static inline void ixp4xx_write_feature_bits ( u32 value )
{
* IXP4XX_EXP_CFG2 = ~ value ;
}
2007-04-11 16:32:46 +01:00
# endif /* _ASM_ARCH_CPU_H */