Lines Matching +full:secondary +full:- +full:boot +full:- +full:reg
2 * Copyright (C) 2014-2015 Broadcom Corporation
20 #include <linux/irqchip/irq-bcm2836.h>
39 /* Name of device node property defining secondary boot register location */
40 #define OF_SECONDARY_BOOT "secondary-boot-reg"
60 return -ENXIO; in scu_a9_enable()
67 return -ENOENT; in scu_a9_enable()
74 return -ENOMEM; in scu_a9_enable()
97 pr_err("required secondary boot register not specified for CPU%u\n", in secondary_boot_addr_for()
112 return -EINVAL; in nsp_write_lut()
117 pr_warn("unable to ioremap SKU-ROM LUT register for cpu %u\n", cpu); in nsp_write_lut()
118 return -ENOMEM; in nsp_write_lut()
126 /* Ensure the write is visible to the secondary core */ in nsp_write_lut()
141 pr_warn("failed to enable A9 SCU - disabling SMP\n"); in bcm_smp_prepare_cpus()
147 * The ROM code has the secondary cores looping, waiting for an event.
149 * secondary boot register. When a core finds those bits contain its
150 * own core id, it performs initialization, including computing its boot
151 * address by clearing the boot register value's bottom two bits. The
152 * core signals that it is beginning its execution by writing its boot
153 * address back to the secondary boot register, and finally jumps to
157 * - Encode the (hardware) CPU id with the bottom bits of the secondary
159 * - Write that value into the secondary boot register.
160 * - Generate an event to wake up the secondary CPU(s).
161 * - Wait for the secondary boot register to be re-written, which
162 * indicates the secondary core has started.
177 return -EINVAL; in kona_boot_secondary()
181 return -EINVAL; in kona_boot_secondary()
186 pr_err("unable to map boot register for cpu %u\n", cpu_id); in kona_boot_secondary()
187 return -ENOMEM; in kona_boot_secondary()
191 * Secondary cores will start in secondary_startup(), in kona_boot_secondary()
207 timeout = local_clock() - start_clock > SECONDARY_TIMEOUT_NS; in kona_boot_secondary()
216 return -ENXIO; in kona_boot_secondary()
237 * secondary core. in bcm23550_boot_secondary()
239 name = "brcm,bcm23550-cdc"; in bcm23550_boot_secondary()
243 return -ENODEV; in bcm23550_boot_secondary()
251 return -ENOMEM; in bcm23550_boot_secondary()
254 /* Boot the secondary core */ in bcm23550_boot_secondary()
275 * After wake up, secondary core branches to the startup in nsp_boot_secondary()
284 /* Send a CPU wakeup interrupt to the secondary core */ in nsp_boot_secondary()
297 name = "brcm,bcm2836-l1-intc"; in bcm2836_boot_secondary()
301 return -ENODEV; in bcm2836_boot_secondary()
309 return -ENOMEM; in bcm2836_boot_secondary()
327 CPU_METHOD_OF_DECLARE(bcm_smp_bcm281xx, "brcm,bcm11351-cpu-method",
340 CPU_METHOD_OF_DECLARE(bcm_smp_nsp, "brcm,bcm-nsp-smp", &nsp_smp_ops);
345 CPU_METHOD_OF_DECLARE(bcm_smp_bcm2836, "brcm,bcm2836-smp", &bcm2836_smp_ops);