ARM: add SMP support for Broadcom mobile SoCs
authorAlex Elder <elder@linaro.org>
Mon, 30 Jun 2014 22:15:37 +0000 (17:15 -0500)
committerMatt Porter <mporter@linaro.org>
Mon, 28 Jul 2014 13:42:24 +0000 (09:42 -0400)
commit9a5a110eb9ba137840cacb06cead746a6a238b09
tree876556b77e083f89d1d9bae7e00b3e30a52c49b0
parent9a3c4145af32125c5ee39c0272662b47307a8323
ARM: add SMP support for Broadcom mobile SoCs

This patch adds SMP support for BCM281XX and BCM21664 family SoCs.

This feature is controlled with a distinct config option such that
an SMP-enabled multi-v7 binary can be configured to run these SoCs
in uniprocessor mode.  Since this SMP functionality is used for
multiple Broadcom mobile chip families the config option is called
ARCH_BCM_MOBILE_SMP (for lack of a better name).

On SoCs of this type, the secondary core is not held in reset on
power-on.  Instead it loops in a ROM-based holding pen.  To release
it, one must write into a special register a jump address whose
low-order bits have been replaced with a secondary core's id, then
trigger an event with SEV.  On receipt of an event, the ROM code
will examine the register's contents, and if the low-order bits
match its cpu id, it will clear them and write the value back to the
register just prior to jumping to the address specified.

The location of the special register is defined in the device tree
using a "secondary-boot-reg" property in a node whose "enable-method"
matches.

Derived from code originally provided by Ray Jui <rjui@broadcom.com>

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Matt Porter <mporter@linaro.org>
arch/arm/mach-bcm/Kconfig
arch/arm/mach-bcm/Makefile
arch/arm/mach-bcm/kona_smp.c [new file with mode: 0644]