u-boot/board/amlogic/odroid-c2
Neil Armstrong c7be3e5a79 ARM: arch-meson: build memory banks using reported memory from registers
As discussed at [1], the Amlogic Meson GX SoCs can embed a BL31 firmware
and a secondary BL32 firmware.
Since mid-2017, the reserved memory address of the BL31 firmware was moved
and grown for security reasons.

But mainline U-Boot and Linux has the old address and size fixed.

These SoCs have a register interface to get the two firmware reserved
memory start and sizes.

This patch adds a dynamic reservation of the memory zones in the device tree bootmem
reserved memory zone used by the kernel in early boot.
To be complete, the memory zones are also added to the EFI reserved zones.

Depends on patchset "Add support for Amlogic GXL Based SBCs" at [2].

[1] http://lists.infradead.org/pipermail/linux-amlogic/2017-October/004860.html
[2] http://lists.infradead.org/pipermail/linux-amlogic/2017-November/005410.html

Changes since v1:
- switched the #if to if(IS_ENABLED()) to compile all code paths
- renamed function to meson_board_add_reserved_memory()
- added a mem.h header with comment
- updated all boards ft_board_setup()

Changes since RFC v2:
- reduced preprocessor load
- kept Odroid-C2 static memory mapping as exception

Changes since RFC v1:
- switch to fdt rsv mem table and efi reserve memory
- replaced in_le32 by readl()

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
[trini: Fix warning on khadas-vim over missing <asm/arch/mem.h>
Signed-off-by: Tom Rini <trini@konsulko.com>
2017-12-04 10:17:29 -05:00
..
Kconfig board: amlogic: Rename folder for Amlogic boards 2016-06-24 17:23:09 -04:00
MAINTAINERS board: amlogic: Rename folder for Amlogic boards 2016-06-24 17:23:09 -04:00
Makefile board: amlogic: Rename folder for Amlogic boards 2016-06-24 17:23:09 -04:00
odroid-c2.c ARM: arch-meson: build memory banks using reported memory from registers 2017-12-04 10:17:29 -05:00
README odroid-c2: README: MMC is supported 2017-05-01 12:58:35 -04:00

U-Boot for ODROID-C2
====================

ODROID-C2 is a single board computer manufactured by Hardkernel
Co. Ltd with the following specifications:

 - Amlogic S905 ARM Cortex-A53 quad-core SoC @ 2GHz
 - ARM Mali 450 GPU
 - 2GB DDR3 SDRAM
 - Gigabit Ethernet
 - HDMI 2.0 4K/60Hz display
 - 40-pin GPIO header
 - 4 x USB 2.0 Host, 1 x USB OTG
 - eMMC, microSD
 - Infrared receiver

Schematics are available on the manufacturer website.

Currently the u-boot port supports the following devices:
 - serial
 - eMMC, microSD
 - Ethernet

u-boot compilation
==================

 > export ARCH=arm
 > export CROSS_COMPILE=aarch64-none-elf-
 > make odroid-c2_defconfig
 > make

Image creation
==============

Amlogic doesn't provide sources for the firmware and for tools needed
to create the bootloader image, so it is necessary to obtain them from
the git tree published by the board vendor:

 > DIR=odroid-c2
 > git clone --depth 1 \
       https://github.com/hardkernel/u-boot.git -b odroidc2-v2015.01 \
       $DIR
 > $DIR/fip/fip_create --bl30  $DIR/fip/gxb/bl30.bin \
                       --bl301 $DIR/fip/gxb/bl301.bin \
                       --bl31  $DIR/fip/gxb/bl31.bin \
                       --bl33  u-boot.bin \
                       $DIR/fip.bin
 > $DIR/fip/fip_create --dump $DIR/fip.bin
 > cat $DIR/fip/gxb/bl2.package $DIR/fip.bin > $DIR/boot_new.bin
 > $DIR/fip/gxb/aml_encrypt_gxb --bootsig \
                                --input $DIR/boot_new.bin \
                                --output $DIR/u-boot.img
 > dd if=$DIR/u-boot.img of=$DIR/u-boot.gxbb bs=512 skip=96

and then write the image to SD with:

 > DEV=/dev/your_sd_device
 > BL1=$DIR/sd_fuse/bl1.bin.hardkernel
 > dd if=$BL1 of=$DEV conv=fsync bs=1 count=442
 > dd if=$BL1 of=$DEV conv=fsync bs=512 skip=1 seek=1
 > dd if=$DIR/u-boot.gxbb of=$DEV conv=fsync bs=512 seek=97