xref: /openbmc/linux/arch/arm/include/asm/smp_scu.h (revision 39b6f3aa)
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 
12 static inline bool scu_a9_has_base(void)
13 {
14 	return read_cpuid_part_number() == ARM_CPU_PART_CORTEX_A9;
15 }
16 
17 static 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 unsigned int scu_get_core_count(void __iomem *);
27 int scu_power_mode(void __iomem *, unsigned int);
28 
29 #ifdef CONFIG_SMP
30 void scu_enable(void __iomem *scu_base);
31 #else
32 static inline void scu_enable(void __iomem *scu_base) {}
33 #endif
34 
35 #endif
36 
37 #endif
38