Path: blob/master/arch/arm/mach-ixp4xx/include/mach/cpu.h
17633 views
/*1* arch/arm/mach-ixp4xx/include/mach/cpu.h2*3* IXP4XX cpu type detection4*5* Copyright (C) 2007 MontaVista Software, Inc.6*7* This program is free software; you can redistribute it and/or modify8* it under the terms of the GNU General Public License version 2 as9* published by the Free Software Foundation.10*11*/1213#ifndef __ASM_ARCH_CPU_H__14#define __ASM_ARCH_CPU_H__1516#include <asm/cputype.h>1718/* Processor id value in CP15 Register 0 */19#define IXP42X_PROCESSOR_ID_VALUE 0x690541c0 /* including unused 0x690541Ex */20#define IXP42X_PROCESSOR_ID_MASK 0xffffffc02122#define IXP43X_PROCESSOR_ID_VALUE 0x6905404023#define IXP43X_PROCESSOR_ID_MASK 0xfffffff02425#define IXP46X_PROCESSOR_ID_VALUE 0x69054200 /* including IXP455 */26#define IXP46X_PROCESSOR_ID_MASK 0xfffffff02728#define cpu_is_ixp42x_rev_a0() ((read_cpuid_id() & (IXP42X_PROCESSOR_ID_MASK | 0xF)) == \29IXP42X_PROCESSOR_ID_VALUE)30#define cpu_is_ixp42x() ((read_cpuid_id() & IXP42X_PROCESSOR_ID_MASK) == \31IXP42X_PROCESSOR_ID_VALUE)32#define cpu_is_ixp43x() ((read_cpuid_id() & IXP43X_PROCESSOR_ID_MASK) == \33IXP43X_PROCESSOR_ID_VALUE)34#define cpu_is_ixp46x() ((read_cpuid_id() & IXP46X_PROCESSOR_ID_MASK) == \35IXP46X_PROCESSOR_ID_VALUE)3637static inline u32 ixp4xx_read_feature_bits(void)38{39u32 val = ~*IXP4XX_EXP_CFG2;4041if (cpu_is_ixp42x_rev_a0())42return IXP42X_FEATURE_MASK & ~(IXP4XX_FEATURE_RCOMP |43IXP4XX_FEATURE_AES);44if (cpu_is_ixp42x())45return val & IXP42X_FEATURE_MASK;46if (cpu_is_ixp43x())47return val & IXP43X_FEATURE_MASK;48return val & IXP46X_FEATURE_MASK;49}5051static inline void ixp4xx_write_feature_bits(u32 value)52{53*IXP4XX_EXP_CFG2 = ~value;54}5556#endif /* _ASM_ARCH_CPU_H */575859