mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
ARM: vexpress: Select multi-cluster SMP operation if required
Signed-off-by: Jon Medhurst <[email protected]> Signed-off-by: Nicolas Pitre <[email protected]> Reviewed-by: Santosh Shilimkar <[email protected]> Acked-by: Pawel Moll <[email protected]>
This commit is contained in:
parent
d41418c0c0
commit
033a899c9b
3 changed files with 23 additions and 0 deletions
|
|
@ -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 a new issue