Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: ARM: sunxi: Document A80 SoC secure SRAM usage by SMP hotplug

On the Allwinner A80 SoC the BROM supports hotplugging the primary core
(cpu0) by checking two 32bit values at a specific location within the
secure SRAM block. This region needs to be reserved and accessible to
the SMP code.

Document its usage.

Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>

+44
+44
Documentation/devicetree/bindings/arm/sunxi/smp-sram.txt
··· 1 + Allwinner SRAM for smp bringup: 2 + ------------------------------------------------ 3 + 4 + Allwinner's A80 SoC uses part of the secure sram for hotplugging of the 5 + primary core (cpu0). Once the core gets powered up it checks if a magic 6 + value is set at a specific location. If it is then the BROM will jump 7 + to the software entry address, instead of executing a standard boot. 8 + 9 + Therefore a reserved section sub-node has to be added to the mmio-sram 10 + declaration. 11 + 12 + Note that this is separate from the Allwinner SRAM controller found in 13 + ../../sram/sunxi-sram.txt. This SRAM is secure only and not mappable to 14 + any device. 15 + 16 + Also there are no "secure-only" properties. The implementation should 17 + check if this SRAM is usable first. 18 + 19 + Required sub-node properties: 20 + - compatible : depending on the SoC this should be one of: 21 + "allwinner,sun9i-a80-smp-sram" 22 + 23 + The rest of the properties should follow the generic mmio-sram discription 24 + found in ../../misc/sram.txt 25 + 26 + Example: 27 + 28 + sram_b: sram@20000 { 29 + /* 256 KiB secure SRAM at 0x20000 */ 30 + compatible = "mmio-sram"; 31 + reg = <0x00020000 0x40000>; 32 + #address-cells = <1>; 33 + #size-cells = <1>; 34 + ranges = <0 0x00020000 0x40000>; 35 + 36 + smp-sram@1000 { 37 + /* 38 + * This is checked by BROM to determine if 39 + * cpu0 should jump to SMP entry vector 40 + */ 41 + compatible = "allwinner,sun9i-a80-smp-sram"; 42 + reg = <0x1000 0x8>; 43 + }; 44 + };