mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-28 17:21:36 +02:00
configs: meson64_android: boot android via abootimg
Since Android 10, we are required to use a "dtbo" partition which includes the various device-tree overlays [1]. It's also possible to provide a "dtb" partition. This is supported via the "abootimg" command. On Yukawa, the assumption is that we have only a "dtbo" partition, which includes all board dtbs and their dtbos [2] [1] https://source.android.com/devices/architecture/dto/partitions [2] https://android.googlesource.com/device/amlogic/yukawa/+/refs/heads/master/build/tasks/dtimages.mk#16 Signed-off-by: Guillaume La Roque <glaroque@baylibre.com> Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Acked-by: Neil Armstrong <narmstrong@baylibre.com> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
This commit is contained in:
parent
7039cbd2f5
commit
72cefbafbf
@ -81,7 +81,59 @@
|
||||
#define RECOVERY_PARTITION "recovery"
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CMD_ABOOTIMG)
|
||||
/*
|
||||
* Prepares complete device tree blob for current board (for Android boot).
|
||||
*
|
||||
* Boot image or recovery image should be loaded into $loadaddr prior to running
|
||||
* these commands. The logic of these commnads is next:
|
||||
*
|
||||
* 1. Read correct DTB for current SoC/board from boot image in $loadaddr
|
||||
* to $fdtaddr
|
||||
* 2. Merge all needed DTBO for current board from 'dtbo' partition into read
|
||||
* DTB
|
||||
* 3. User should provide $fdtaddr as 3rd argument to 'bootm'
|
||||
*/
|
||||
#define PREPARE_FDT \
|
||||
"echo Preparing FDT...; " \
|
||||
"if test $board_name = sei510; then " \
|
||||
"echo \" Reading DTB for sei510...\"; " \
|
||||
"setenv dtb_index 0;" \
|
||||
"elif test $board_name = sei610; then " \
|
||||
"echo \" Reading DTB for sei610...\"; " \
|
||||
"setenv dtb_index 1;" \
|
||||
"else " \
|
||||
"echo Error: Android boot is not supported for $board_name; " \
|
||||
"exit; " \
|
||||
"fi; " \
|
||||
"abootimg get dtb --index=$dtb_index dtb_start dtb_size; " \
|
||||
"cp.b $dtb_start $fdt_addr_r $dtb_size; " \
|
||||
"fdt addr $fdt_addr_r 0x80000; " \
|
||||
"if test $board_name = sei510; then " \
|
||||
"echo \" Reading DTBO for sei510...\"; " \
|
||||
"setenv dtbo_index 0;" \
|
||||
"elif test $board_name = sei610; then " \
|
||||
"echo \" Reading DTBO for sei610...\"; " \
|
||||
"setenv dtbo_index 1;" \
|
||||
"else " \
|
||||
"echo Error: Android boot is not supported for $board_name; " \
|
||||
"exit; " \
|
||||
"fi; " \
|
||||
"part start mmc ${mmcdev} dtbo${slot_suffix} p_dtbo_start; " \
|
||||
"part size mmc ${mmcdev} dtbo${slot_suffix} p_dtbo_size; " \
|
||||
"mmc read ${dtboaddr} ${p_dtbo_start} ${p_dtbo_size}; " \
|
||||
"echo \" Applying DTBOs...\"; " \
|
||||
"adtimg addr $dtboaddr; " \
|
||||
"adtimg get dt --index=$dtbo_index dtbo0_addr; " \
|
||||
"fdt apply $dtbo0_addr;" \
|
||||
"setenv bootargs \"$bootargs androidboot.dtbo_idx=$dtbo_index \";"\
|
||||
|
||||
#define BOOT_CMD "bootm ${loadaddr} ${loadaddr} ${fdt_addr_r};"
|
||||
|
||||
#else
|
||||
#define PREPARE_FDT " "
|
||||
#define BOOT_CMD "bootm ${loadaddr};"
|
||||
#endif
|
||||
|
||||
#define BOOTENV_DEV_FASTBOOT(devtypeu, devtypel, instance) \
|
||||
"bootcmd_fastboot=" \
|
||||
@ -153,6 +205,7 @@
|
||||
"part start mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_start;" \
|
||||
"part size mmc ${mmcdev} " RECOVERY_PARTITION "${slot_suffix} boot_size;" \
|
||||
"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
|
||||
PREPARE_FDT \
|
||||
"echo Running Android Recovery...;" \
|
||||
BOOT_CMD \
|
||||
"fi;" \
|
||||
@ -174,6 +227,7 @@
|
||||
"part start mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_start;" \
|
||||
"part size mmc ${mmcdev} " BOOT_PARTITION "${slot_suffix} boot_size;" \
|
||||
"if mmc read ${loadaddr} ${boot_start} ${boot_size}; then " \
|
||||
PREPARE_FDT \
|
||||
"setenv bootargs \"${bootargs} " AB_BOOTARGS "\" ; " \
|
||||
"echo Running Android...;" \
|
||||
BOOT_CMD \
|
||||
@ -212,7 +266,8 @@
|
||||
"stdin=" STDIN_CFG "\0" \
|
||||
"stdout=" STDOUT_CFG "\0" \
|
||||
"stderr=" STDOUT_CFG "\0" \
|
||||
"loadaddr=0x01000000\0" \
|
||||
"dtboaddr=0x08200000\0" \
|
||||
"loadaddr=0x01080000\0" \
|
||||
"fdt_addr_r=0x01000000\0" \
|
||||
"scriptaddr=0x08000000\0" \
|
||||
"kernel_addr_r=0x01080000\0" \
|
||||
|
Loading…
x
Reference in New Issue
Block a user