1#ifndef __ASMARM_ARCH_SCU_H 2#define __ASMARM_ARCH_SCU_H 3 4#define SCU_PM_NORMAL 0 5#define SCU_PM_DORMANT 2 6#define SCU_PM_POWEROFF 3 7 8#ifndef __ASSEMBLER__ 9 10#include <asm/cputype.h> 11 12static inline bool scu_a9_has_base(void) 13{ 14 return read_cpuid_part() == ARM_CPU_PART_CORTEX_A9; 15} 16 17static inline unsigned long scu_a9_get_base(void) 18{ 19 unsigned long pa; 20 21 asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (pa)); 22 23 return pa; 24} 25 26#ifdef CONFIG_HAVE_ARM_SCU 27unsigned int scu_get_core_count(void __iomem *); 28int scu_power_mode(void __iomem *, unsigned int); 29#else 30static inline unsigned int scu_get_core_count(void __iomem *scu_base) 31{ 32 return 0; 33} 34static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode) 35{ 36 return -EINVAL; 37} 38#endif 39 40#if defined(CONFIG_SMP) && defined(CONFIG_HAVE_ARM_SCU) 41void scu_enable(void __iomem *scu_base); 42#else 43static inline void scu_enable(void __iomem *scu_base) {} 44#endif 45 46#endif 47 48#endif 49