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