ARM: meson: Add boot device discovery
authorNeil Armstrong <narmstrong@baylibre.com>
Fri, 27 Jul 2018 12:10:00 +0000 (14:10 +0200)
committerNeil Armstrong <narmstrong@baylibre.com>
Mon, 26 Nov 2018 13:40:52 +0000 (14:40 +0100)
commitd96a782d09dbdc4a28ece3d18dc17a572e39d4f2
treea703759f1ed5f4bde82bceb9ec377a5e31f20ac7
parentb890acc7432e2ca7b21a44cc70a87aca51b0aedd
ARM: meson: Add boot device discovery

The Amlogic Meson SoCs ROM supports a boot over USB with a custom protocol.

When no other boot medium are available (or by forcing the USB mode), the
ROM sets the primary USB port as device mode and waits for a Host to
enumerate.

When enumerated, a custom protocol described at [1] permits writing to
memory and execute some specific FIP init code to run the loaded
Arm Trusted Firmware BL2 and BL3 stages before running the BL33 stage.

In this mode, we can load different binaries that can be used by U-boot
like a script image file.

This adds support for a custom USB boot stage only available when the
boot mode is USB and the script file at a pre-defined address is valid.
This support was heavily copied from the Sunxi Allwinner FEL U-Boot support.

The tool pyamlboot described at [2], permits using this boot mode on boards
exposing the first USB port, either as OTG or Host port.

[1] https://github.com/superna9999/pyamlboot/blob/master/PROTOCOL.md
[2] https://github.com/superna9999/pyamlboot/blob/master/README.md

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
arch/arm/include/asm/arch-meson/axg.h
arch/arm/include/asm/arch-meson/boot.h [new file with mode: 0644]
arch/arm/include/asm/arch-meson/gx.h
arch/arm/mach-meson/Kconfig
arch/arm/mach-meson/board-axg.c
arch/arm/mach-meson/board-common.c
arch/arm/mach-meson/board-gx.c
include/configs/meson64.h