u-boot-brain/arch/arm
Stephen Warren d22a765755 ARM: add Raspberry Pi 3 64-bit config
On all Pis so far, the VC FW provides a short stub to set up the ARM CPU
before entering the kernel (a/k/a U-Boot for us). This feature is not
currently supported by the VC FW when booting in 64-bit mode. However,
this feature will likely appear in the near future, and this U-Boot port
assumes that such a feature is in place. Without that feature, or a
temporary workaround described below, U-Boot will not boot.

Once the VC FW does provide the ARM stub, u-boot.bin built for rpi_3 can
be used drectly as kernel7.img, in the same way as any other RPi port. The
following config.txt is required:

    # Fix mini UART input frequency, and setup/enable up the UART.
    # Without this option, U-Boot will not boot, even if you don't care
    # about the serial console. This option will always be required for
    # all RPi3 use-cases, unless the PL011 UART is used, which is not
    # yet supported by rpi_3* builds of U-Boot.
    enable_uart=1
    # Boot in AArch64 (64-bit) mode.
    # It is possible that a future VC FW will remove the need for this
    # option, instead auto-setting 32-/64-bit mode based on the "kernel"
    # filename present on the SD card.
    arm_control=0x200

Prior to the VC FW providing the ARM boot stub, you can use the following
steps to build an equivalent stub into the U-Boot binary:

git clone https://github.com/swarren/rpi-3-aarch64-demo.git \
    ../rpi-3-aarch64-demo
(cd ../rpi-3-aarch64-demo && ./build.sh)
Build U-Boot for rpi_3 in the usual way
cat ../rpi-3-aarch64-demo/armstub64.bin u-boot.bin > u-boot.bin.stubbed
Use u-boot.bin.stubbed as kernel7.img on the Pi SD card.

In this case, the following additional entries are required in config.txt:

    # Tell the FW to load the kernel image at address 0, the reset vector.
    kernel_old=1

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
2016-04-11 12:44:38 -04:00
..
cpu ARM: allow CONFIG_GICV* not to be defined 2016-04-11 12:44:38 -04:00
dts arm: mvebu: Add basic support for Armada 375 eval board db-88f6720 2016-04-04 11:22:10 +02:00
imx-common imx: imx-common: introduce boot auxiliary core 2016-02-21 11:46:26 +01:00
include arm: add missing writes[bwql], reads[bwql]. 2016-04-10 17:18:41 +02:00
lib arm: spl: Align default board_init_f comment with code 2016-04-01 17:17:57 -04:00
mach-at91 spl: arm: Make sure to include all of the u_boot_list entries 2016-03-16 15:27:55 -04:00
mach-bcm283x ARM: add Raspberry Pi 3 64-bit config 2016-04-11 12:44:38 -04:00
mach-davinci arm: Add support for LEGO MINDSTORMS EV3 2016-03-14 19:18:40 -04:00
mach-exynos Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
mach-highbank ARM: highbank: move SoC sources to mach-highbank 2015-02-21 08:23:51 -05:00
mach-integrator integrator: switch to DM serial port 2015-08-12 20:47:49 -04:00
mach-keystone ARM: keystone2: Add missing privilege ID settings 2016-04-01 17:17:40 -04:00
mach-kirkwood arm: mvebu/kirkwood: Use common timer functions 2016-01-14 14:08:59 +01:00
mach-mvebu arm: mvebu: Don't enable d-cache on A375 2016-04-04 11:22:15 +02:00
mach-orion5x Use correct spelling of "U-Boot" 2016-02-06 12:00:59 +01:00
mach-rockchip dm: Use uclass_first_device_err() where it is useful 2016-03-14 15:34:50 -06:00
mach-s5pc1xx arm: s5pc1xx: move SoC to mach-s5pc1xx 2015-11-30 17:17:01 +09:00
mach-snapdragon board: Add Qualcomm Dragonboard 410C support 2016-04-01 17:18:27 -04:00
mach-socfpga arm: socfpga: Nuke useless include 2016-04-10 17:19:49 +02:00
mach-stm32 stm32: stm32f4: move flash driver to mtd driver location 2016-03-26 18:49:28 -04:00
mach-sunxi sunxi: Add support for Allwinner A64 SoCs 2016-04-01 09:52:28 +02:00
mach-tegra ARM: tegra210: set PLLE_PTS bit when enabling PLLE 2016-03-29 09:57:57 -07:00
mach-uniphier cosmetic: Fix typos "privide" 2016-04-01 00:59:47 +09:00
mach-versatile arm: Remove versatileab board 2015-09-11 15:01:25 -04:00
mach-zynq net: gem: Allow to set the MAC from an EEPROM 2016-04-04 20:27:54 +02:00
thumb1/include/asm/proc-armv arm: support Thumb-1 with CONFIG_SYS_THUMB_BUILD 2015-11-10 15:03:48 +01:00
config.mk arm: clang: Update support slightly 2016-04-01 17:17:39 -04:00
Kconfig arm: mvebu: Add basic support for Armada 375 eval board db-88f6720 2016-04-04 11:22:10 +02:00
Kconfig.debug arm: debug: add Kconfig entries for lowlevel debug 2014-10-26 22:23:12 +01:00
Makefile arm: Add support for Qualcomm Snapdragon family 2016-04-01 17:18:26 -04:00