Linux Audio

Check our new training course

Loading...
v4.10.11
 
 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
v5.4
 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