forked from luck/tmp_suning_uos_patched
ARM: vexpress: Select multi-cluster SMP operation if required
Signed-off-by: Jon Medhurst <tixy@linaro.org> Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org> Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Acked-by: Pawel Moll <pawel.moll@arm.com>
This commit is contained in:
parent
d41418c0c0
commit
033a899c9b
|
@ -6,6 +6,8 @@
|
|||
|
||||
void vexpress_dt_smp_map_io(void);
|
||||
|
||||
bool vexpress_smp_init_ops(void);
|
||||
|
||||
extern struct smp_operations vexpress_smp_ops;
|
||||
|
||||
extern void vexpress_cpu_die(unsigned int cpu);
|
||||
|
|
|
@ -12,9 +12,11 @@
|
|||
#include <linux/errno.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_fdt.h>
|
||||
#include <linux/vexpress.h>
|
||||
|
||||
#include <asm/mcpm.h>
|
||||
#include <asm/smp_scu.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
|
@ -203,3 +205,21 @@ struct smp_operations __initdata vexpress_smp_ops = {
|
|||
.cpu_die = vexpress_cpu_die,
|
||||
#endif
|
||||
};
|
||||
|
||||
bool __init vexpress_smp_init_ops(void)
|
||||
{
|
||||
#ifdef CONFIG_MCPM
|
||||
/*
|
||||
* The best way to detect a multi-cluster configuration at the moment
|
||||
* is to look for the presence of a CCI in the system.
|
||||
* Override the default vexpress_smp_ops if so.
|
||||
*/
|
||||
struct device_node *node;
|
||||
node = of_find_compatible_node(NULL, NULL, "arm,cci-400");
|
||||
if (node && of_device_is_available(node)) {
|
||||
mcpm_smp_set_ops();
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -456,6 +456,7 @@ static const char * const v2m_dt_match[] __initconst = {
|
|||
DT_MACHINE_START(VEXPRESS_DT, "ARM-Versatile Express")
|
||||
.dt_compat = v2m_dt_match,
|
||||
.smp = smp_ops(vexpress_smp_ops),
|
||||
.smp_init = smp_init_ops(vexpress_smp_init_ops),
|
||||
.map_io = v2m_dt_map_io,
|
||||
.init_early = v2m_dt_init_early,
|
||||
.init_irq = irqchip_init,
|
||||
|
|
Loading…
Reference in New Issue
Block a user