Merge tag 'for-linus-20150901' of git://git.infradead.org/linux-mtd
[deliverable/linux.git] / arch / arm / include / asm / smp_scu.h
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() == 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 #ifdef CONFIG_HAVE_ARM_SCU
27 unsigned int scu_get_core_count(void __iomem *);
28 int scu_power_mode(void __iomem *, unsigned int);
29 #else
30 static inline unsigned int scu_get_core_count(void __iomem *scu_base)
31 {
32 return 0;
33 }
34 static 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)
41 void scu_enable(void __iomem *scu_base);
42 #else
43 static inline void scu_enable(void __iomem *scu_base) {}
44 #endif
45
46 #endif
47
48 #endif
This page took 0.048134 seconds and 5 git commands to generate.