Loading...
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
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASMARM_ARCH_SCU_H
3#define __ASMARM_ARCH_SCU_H
4
5#define SCU_PM_NORMAL 0
6#define SCU_PM_DORMANT 2
7#define SCU_PM_POWEROFF 3
8
9#ifndef __ASSEMBLER__
10
11#include <linux/errno.h>
12#include <asm/cputype.h>
13
14static inline bool scu_a9_has_base(void)
15{
16 return read_cpuid_part() == ARM_CPU_PART_CORTEX_A9;
17}
18
19static inline unsigned long scu_a9_get_base(void)
20{
21 unsigned long pa;
22
23 asm("mrc p15, 4, %0, c15, c0, 0" : "=r" (pa));
24
25 return pa;
26}
27
28#ifdef CONFIG_HAVE_ARM_SCU
29unsigned int scu_get_core_count(void __iomem *);
30int scu_power_mode(void __iomem *, unsigned int);
31int scu_cpu_power_enable(void __iomem *, unsigned int);
32int scu_get_cpu_power_mode(void __iomem *scu_base, unsigned int logical_cpu);
33#else
34static inline unsigned int scu_get_core_count(void __iomem *scu_base)
35{
36 return 0;
37}
38static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode)
39{
40 return -EINVAL;
41}
42static inline int scu_cpu_power_enable(void __iomem *scu_base,
43 unsigned int mode)
44{
45 return -EINVAL;
46}
47static inline int scu_get_cpu_power_mode(void __iomem *scu_base,
48 unsigned int logical_cpu)
49{
50 return -EINVAL;
51}
52#endif
53
54#if defined(CONFIG_SMP) && defined(CONFIG_HAVE_ARM_SCU)
55void scu_enable(void __iomem *scu_base);
56#else
57static inline void scu_enable(void __iomem *scu_base) {}
58#endif
59
60#endif
61
62#endif