24 #include <linux/rtc.h>
26 #include <asm/machdep.h>
36 { .compatible =
"ibm,plb4", },
37 { .compatible =
"ibm,plb6", },
38 { .compatible =
"ibm,opb", },
39 { .compatible =
"ibm,ebc", },
43 static int __init iss4xx_device_probe(
void)
45 of_platform_bus_probe(
NULL, iss4xx_of_bus,
NULL);
53 static void __init iss4xx_init_irq(
void)
58 for_each_node_with_property(np,
"interrupt-controller") {
63 panic(
"Can't find top level interrupt controller");
74 struct mpic *mpic =
mpic_alloc(np, 0, MPIC_NO_RESET, 0, 0,
" MPIC ");
80 panic(
"Unrecognized top level interrupt controller");
92 const u64 *spin_table_addr_prop;
94 extern void start_secondary_47x(
void);
104 if (spin_table_addr_prop ==
NULL) {
105 pr_err(
"CPU%d: Can't start, missing cpu-release-addr !\n", cpu);
112 spin_table = (
u32 *)
__va(*spin_table_addr_prop);
113 pr_debug(
"CPU%d: Spin table mapped at %p\n", cpu, spin_table);
117 spin_table[1] =
__pa(start_secondary_47x);
123 static struct smp_ops_t iss_smp_ops = {
124 .probe = smp_mpic_probe,
125 .message_pass = smp_mpic_message_pass,
126 .setup_cpu = smp_iss4xx_setup_cpu,
127 .kick_cpu = smp_iss4xx_kick_cpu,
132 static void __init iss4xx_smp_init(
void)
134 if (mmu_has_feature(MMU_FTR_TYPE_47x))
139 static void __init iss4xx_smp_init(
void) { }
142 static void __init iss4xx_setup_arch(
void)
150 static int __init iss4xx_probe(
void)
152 unsigned long root = of_get_flat_dt_root();
154 if (!of_flat_dt_is_compatible(root,
"ibm,iss-4xx"))
162 .probe = iss4xx_probe,
164 .init_IRQ = iss4xx_init_irq,
165 .setup_arch = iss4xx_setup_arch,