root/arch/arm/include/asm/smp_scu.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. scu_a9_has_base
  2. scu_a9_get_base
  3. scu_get_core_count
  4. scu_power_mode
  5. scu_cpu_power_enable
  6. scu_get_cpu_power_mode
  7. scu_enable

   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 
  14 static inline bool scu_a9_has_base(void)
  15 {
  16         return read_cpuid_part() == ARM_CPU_PART_CORTEX_A9;
  17 }
  18 
  19 static 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
  29 unsigned int scu_get_core_count(void __iomem *);
  30 int scu_power_mode(void __iomem *, unsigned int);
  31 int scu_cpu_power_enable(void __iomem *, unsigned int);
  32 int scu_get_cpu_power_mode(void __iomem *scu_base, unsigned int logical_cpu);
  33 #else
  34 static inline unsigned int scu_get_core_count(void __iomem *scu_base)
  35 {
  36         return 0;
  37 }
  38 static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode)
  39 {
  40         return -EINVAL;
  41 }
  42 static inline int scu_cpu_power_enable(void __iomem *scu_base,
  43                                        unsigned int mode)
  44 {
  45         return -EINVAL;
  46 }
  47 static 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)
  55 void scu_enable(void __iomem *scu_base);
  56 #else
  57 static inline void scu_enable(void __iomem *scu_base) {}
  58 #endif
  59 
  60 #endif
  61 
  62 #endif

/* [<][>][^][v][top][bottom][index][help] */