summaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorPaul Burton <paul.burton@imgtec.com>2014-03-14 17:06:16 +0100
committerPaul Burton <paul.burton@imgtec.com>2014-05-28 17:20:29 +0200
commit68c1232f51350b007cb1f05260e9e784770ec513 (patch)
treea9059486d9c85d889cd9615792e2dbbf76029bb0 /arch/mips
parentMIPS: smp-cps: rework core/VPE initialisation (diff)
downloadlinux-68c1232f51350b007cb1f05260e9e784770ec513.tar.xz
linux-68c1232f51350b007cb1f05260e9e784770ec513.zip
MIPS: smp-cps: function to determine whether CPS SMP is in use
The core power down state for cpuidle will require that the CPS SMP implementation is in use. This patch provides a mips_cps_smp_in_use function which determines whether or not the CPS SMP implementation is currently in use. Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/include/asm/smp-cps.h2
-rw-r--r--arch/mips/kernel/smp-cps.c6
2 files changed, 8 insertions, 0 deletions
diff --git a/arch/mips/include/asm/smp-cps.h b/arch/mips/include/asm/smp-cps.h
index d49279e92eb5..324df2c835ac 100644
--- a/arch/mips/include/asm/smp-cps.h
+++ b/arch/mips/include/asm/smp-cps.h
@@ -31,6 +31,8 @@ extern void mips_cps_core_init(void);
extern struct vpe_boot_config *mips_cps_boot_vpes(void);
+extern bool mips_cps_smp_in_use(void);
+
#else /* __ASSEMBLY__ */
.extern mips_cps_bootcfg;
diff --git a/arch/mips/kernel/smp-cps.c b/arch/mips/kernel/smp-cps.c
index af90e82f94bf..c7879fbe9f5b 100644
--- a/arch/mips/kernel/smp-cps.c
+++ b/arch/mips/kernel/smp-cps.c
@@ -260,6 +260,12 @@ static struct plat_smp_ops cps_smp_ops = {
.cpus_done = cps_cpus_done,
};
+bool mips_cps_smp_in_use(void)
+{
+ extern struct plat_smp_ops *mp_ops;
+ return mp_ops == &cps_smp_ops;
+}
+
int register_cps_smp_ops(void)
{
if (!mips_cm_present()) {