|
@@ -389,15 +389,18 @@ static void mpc85xx_smp_machine_kexec(struct kimage *image)
|
|
|
}
|
|
|
#endif /* CONFIG_KEXEC */
|
|
|
|
|
|
-static void smp_85xx_setup_cpu(int cpu_nr)
|
|
|
+static void smp_85xx_basic_setup(int cpu_nr)
|
|
|
{
|
|
|
- if (smp_85xx_ops.probe == smp_mpic_probe)
|
|
|
- mpic_setup_this_cpu();
|
|
|
-
|
|
|
if (cpu_has_feature(CPU_FTR_DBELL))
|
|
|
doorbell_setup_this_cpu();
|
|
|
}
|
|
|
|
|
|
+static void smp_85xx_setup_cpu(int cpu_nr)
|
|
|
+{
|
|
|
+ mpic_setup_this_cpu();
|
|
|
+ smp_85xx_basic_setup(cpu_nr);
|
|
|
+}
|
|
|
+
|
|
|
static const struct of_device_id mpc85xx_smp_guts_ids[] = {
|
|
|
{ .compatible = "fsl,mpc8572-guts", },
|
|
|
{ .compatible = "fsl,p1020-guts", },
|
|
@@ -412,13 +415,14 @@ void __init mpc85xx_smp_init(void)
|
|
|
{
|
|
|
struct device_node *np;
|
|
|
|
|
|
- smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu;
|
|
|
|
|
|
np = of_find_node_by_type(NULL, "open-pic");
|
|
|
if (np) {
|
|
|
smp_85xx_ops.probe = smp_mpic_probe;
|
|
|
+ smp_85xx_ops.setup_cpu = smp_85xx_setup_cpu;
|
|
|
smp_85xx_ops.message_pass = smp_mpic_message_pass;
|
|
|
- }
|
|
|
+ } else
|
|
|
+ smp_85xx_ops.setup_cpu = smp_85xx_basic_setup;
|
|
|
|
|
|
if (cpu_has_feature(CPU_FTR_DBELL)) {
|
|
|
/*
|
|
@@ -427,6 +431,7 @@ void __init mpc85xx_smp_init(void)
|
|
|
*/
|
|
|
smp_85xx_ops.message_pass = NULL;
|
|
|
smp_85xx_ops.cause_ipi = doorbell_cause_ipi;
|
|
|
+ smp_85xx_ops.probe = NULL;
|
|
|
}
|
|
|
|
|
|
np = of_find_matching_node(NULL, mpc85xx_smp_guts_ids);
|