colibri_imx7: introduce androidboot wrapper
authorIgor Opaniuk <igor.opaniuk@toradex.com>
Tue, 18 Jun 2019 11:57:32 +0000 (14:57 +0300)
committerStefano Babic <sbabic@denx.de>
Fri, 19 Jul 2019 18:14:50 +0000 (20:14 +0200)
1. Introduce androidboot wrapper for booting AOSP.
2. Add partitions_android env var for simplifying the process of
writing new gpt table from U-boot shell/fastboot.

Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
configs/colibri_imx7_emmc_defconfig
include/configs/colibri_imx7.h

index 2e6cfcd063c3b5cc76b71cfe9f2b86bb3ddc9a02..0c3a898aabb036921d976e948a5b0f0db83c4396 100644 (file)
@@ -26,7 +26,7 @@ CONFIG_CRC32_VERIFY=y
 CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_GPT=y
-# CONFIG_RANDOM_UUID is not set
+CONFIG_RANDOM_UUID=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_USB=y
index 40173b18fa77f7acab2cee04ee15eba67e662c15..49cdd610387eba9d68a2d465636475633f0f94f8 100644 (file)
 #define CONFIG_NETMASK                 255.255.255.0
 #define CONFIG_SERVERIP                        192.168.10.1
 
+#ifndef PARTS_DEFAULT
+/* Define the default GPT table for eMMC */
+#define PARTS_DEFAULT \
+       /* Android partitions */ \
+       "partitions_android=" \
+       "uuid_disk=${uuid_gpt_disk};" \
+       "name=boot,start=1M,size=32M,uuid=${uuid_gpt_boot};" \
+       "name=environment,size=4M,uuid=${uuid_gpt_environment};" \
+       "name=recovery,size=16M,uuid=${uuid_gpt_recovery};" \
+       "name=system,size=1536M,uuid=${uuid_gpt_system};" \
+       "name=cache,size=512M,uuid=${uuid_gpt_cache};" \
+       "name=device,size=8M,uuid=${uuid_gpt_device};" \
+       "name=misc,size=4M,uuid=${uuid_gpt_misc};" \
+       "name=datafooter,size=2M,uuid=${uuid_gpt_datafooter};" \
+       "name=metadata,size=2M,uuid=${uuid_gpt_metadata};" \
+       "name=persistdata,size=2M,uuid=${uuid_gpt_persistdata};" \
+       "name=userdata,size=128M,uuid=${uuid_gpt_userdata};" \
+       "name=fbmisc,size=-,uuid=${uuid_gpt_fbmisc}\0"
+#endif /* PARTS_DEFAULT */
+
+#define EMMC_ANDROID_BOOTCMD \
+       "android_args=androidboot.storage_type=emmc\0" \
+       PARTS_DEFAULT \
+       "android_fdt_addr=0x83700000\0" \
+       "android_mmc_dev=0\0" \
+       "m4binary=rpmsg_imu_freertos.elf\0" \
+       "androidboot=ext4load mmc 0:a ${loadaddr} media/0/${m4binary}; "\
+               "bootaux ${loadaddr}; " \
+               "setenv loadaddr 0x88000000; " \
+               "setenv bootm_boot_mode sec;" \
+               "setenv bootargs androidboot.serialno=${serial#} " \
+                       "$android_args; " \
+               "part start mmc ${android_mmc_dev} boot boot_start; " \
+               "part size mmc ${android_mmc_dev} boot boot_size; " \
+               "mmc read ${loadaddr} ${boot_start} ${boot_size}; " \
+               "part start mmc ${android_mmc_dev} environment env_start; " \
+               "part size mmc ${android_mmc_dev} environment env_size; " \
+               "mmc read ${android_fdt_addr} ${env_start} ${env_size}; " \
+               "bootm ${loadaddr} ${loadaddr} ${android_fdt_addr}\0 "
+
 #define EMMC_BOOTCMD \
        "set_emmcargs=setenv emmcargs ip=off root=PARTUUID=${uuid} ro " \
                "rootfstype=ext4 rootwait\0" \
        "emmcfinduuid=part uuid mmc ${emmcdev}:${emmcrootpart} uuid\0" \
        "emmcrootpart=2\0"
 
-
 #define MEM_LAYOUT_ENV_SETTINGS \
        "bootm_size=0x10000000\0" \
        "fdt_addr_r=0x82000000\0" \
        "setenv fdtfile ${soc}-colibri-emmc-${fdt_board}.dtb && run distro_bootcmd;"
 #define MODULE_EXTRA_ENV_SETTINGS \
        "variant=-emmc\0" \
-       EMMC_BOOTCMD
+       EMMC_BOOTCMD \
+       EMMC_ANDROID_BOOTCMD
 #endif
 
 #if defined(CONFIG_TARGET_COLIBRI_IMX7_NAND)