[U-Boot] [PATCH 0/5] ti_armv7_common: env: Add support for loading FIT images

This series adds env support for loading FIT images on TI platforms and making it as default on HS platforms.
Lokesh Vutla (5): ti_armv7_common: env: Consolidate support for loading images from mmc ti_armv7_common: env: Add support for loading FIT images ARM: DRA7: Make FIT boot as default boot on HS devices ARM: AM57xx: Make FIT boot as default boot on HS devices ARM: AMx3xx: Make FIT boot as default boot on HS devices
board/ti/am335x/board.c | 7 +++++++ board/ti/am43xx/board.c | 7 +++++++ board/ti/am57xx/board.c | 8 ++++++++ board/ti/dra7xx/evm.c | 7 +++++++ include/configs/am335x_evm.h | 29 ++++----------------------- include/configs/am43xx_evm.h | 18 ++++------------- include/configs/ti_armv7_common.h | 41 ++++++++++++++++++++++++++++++++++++++- include/configs/ti_omap4_common.h | 12 ++++-------- include/configs/ti_omap5_common.h | 19 ++++-------------- 9 files changed, 85 insertions(+), 63 deletions(-)

Support for loading images from mmc is duplicated in all TI platforms. Add this information to DEFAULT_MMC_TI_ARGS so that it can be reused in all TI platforms.
Reviewed-by: Andrew F. Davis afd@ti.com Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- include/configs/am335x_evm.h | 25 ------------------------- include/configs/am43xx_evm.h | 14 -------------- include/configs/ti_armv7_common.h | 28 +++++++++++++++++++++++++++- include/configs/ti_omap4_common.h | 8 -------- include/configs/ti_omap5_common.h | 15 --------------- 5 files changed, 27 insertions(+), 63 deletions(-)
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 8fa8e39..7f5bee9 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -101,7 +101,6 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_LINUX_BOOT_ENV \ DEFAULT_MMC_TI_ARGS \ - "boot_fdt=try\0" \ "bootpart=0:2\0" \ "bootdir=/boot\0" \ "bootfile=zImage\0" \ @@ -127,30 +126,6 @@ "root=${ramroot} " \ "rootfstype=${ramrootfstype}\0" \ "loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \ - "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ - "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ - "mmcloados=run args_mmc; " \ - "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ - "if run loadfdt; then " \ - "bootz ${loadaddr} - ${fdtaddr}; " \ - "else " \ - "if test ${boot_fdt} = try; then " \ - "bootz; " \ - "else " \ - "echo WARN: Cannot load the DT; " \ - "fi; " \ - "fi; " \ - "else " \ - "bootz; " \ - "fi;\0" \ - "mmcboot=mmc dev ${mmcdev}; " \ - "if mmc rescan; then " \ - "echo SD/MMC found on device ${mmcdev};" \ - "run envboot; " \ - "if run loadimage; then " \ - "run mmcloados;" \ - "fi;" \ - "fi;\0" \ "spiboot=echo Booting from spi ...; " \ "run spiargs; " \ "sf probe ${spibusno}:0; " \ diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h index 0a6c06a..abfa852 100644 --- a/include/configs/am43xx_evm.h +++ b/include/configs/am43xx_evm.h @@ -229,20 +229,6 @@ "root=${ramroot} " \ "rootfstype=${ramrootfstype}\0" \ "loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz\0" \ - "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ - "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ - "mmcboot=mmc dev ${mmcdev}; " \ - "setenv devnum ${mmcdev}; " \ - "setenv devtype mmc; " \ - "if mmc rescan; then " \ - "echo SD/MMC found on device ${devnum};" \ - "if run loadimage; then " \ - "run loadfdt; " \ - "echo Booting from mmc${mmcdev} ...; " \ - "run args_mmc; " \ - "bootz ${loadaddr} - ${fdtaddr}; " \ - "fi;" \ - "fi;\0" \ "usbboot=" \ "setenv devnum ${usbdev}; " \ "setenv devtype usb; " \ diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h index 3e4d3fa..d720b2b 100644 --- a/include/configs/ti_armv7_common.h +++ b/include/configs/ti_armv7_common.h @@ -54,7 +54,8 @@ "ramdisk_addr_r=0x88080000\0" \ "scriptaddr=0x80000000\0" \ "pxefile_addr_r=0x80100000\0" \ - "bootm_size=0x10000000\0" + "bootm_size=0x10000000\0" \ + "boot_fdt=try\0"
#define DEFAULT_MMC_TI_ARGS \ "mmcdev=0\0" \ @@ -71,6 +72,8 @@ "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \ "env import -t ${loadaddr} ${filesize}\0" \ "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \ + "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ + "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ "envboot=mmc dev ${mmcdev}; " \ "if mmc rescan; then " \ "echo SD/MMC found on device ${mmcdev};" \ @@ -87,6 +90,29 @@ "fi;" \ "fi;" \ "fi;\0" \ + "mmcloados=run args_mmc; " \ + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ + "if run loadfdt; then " \ + "bootz ${loadaddr} - ${fdtaddr}; " \ + "else " \ + "if test ${boot_fdt} = try; then " \ + "bootz; " \ + "else " \ + "echo WARN: Cannot load the DT; " \ + "fi; " \ + "fi; " \ + "else " \ + "bootz; " \ + "fi;\0" \ + "mmcboot=mmc dev ${mmcdev}; " \ + "setenv devnum ${mmcdev}; " \ + "setenv devtype mmc; " \ + "if mmc rescan; then " \ + "echo SD/MMC found on device ${mmcdev};" \ + "if run loadimage; then " \ + "run mmcloados;" \ + "fi;" \ + "fi;\0" \
/* * DDR information. If the CONFIG_NR_DRAM_BANKS is not defined, diff --git a/include/configs/ti_omap4_common.h b/include/configs/ti_omap4_common.h index aa17c09..ce9d3e8 100644 --- a/include/configs/ti_omap4_common.h +++ b/include/configs/ti_omap4_common.h @@ -114,14 +114,7 @@ "bootfile=zImage\0" \ "usbtty=cdc_acm\0" \ "vram=16M\0" \ - "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ "loaduimage=load mmc ${mmcdev} ${loadaddr} uImage\0" \ - "mmcboot=echo Booting from mmc${mmcdev} ...; " \ - "run args_mmc; " \ - "if run loadimage; then " \ - "run loadfdt; " \ - "bootz ${loadaddr} - ${fdtaddr}; " \ - "fi;\0" \ "uimageboot=echo Booting from mmc${mmcdev} ...; " \ "run args_mmc; " \ "bootm ${loadaddr}\0" \ @@ -138,7 +131,6 @@ "setenv fdtfile omap4-duovero-parlor.dtb; fi;" \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine device tree to use; fi; \0" \ - "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ BOOTENV
/* diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h index 86e5464..90ead56 100644 --- a/include/configs/ti_omap5_common.h +++ b/include/configs/ti_omap5_common.h @@ -75,20 +75,6 @@ "partitions=" PARTS_DEFAULT "\0" \ "optargs=\0" \ "dofastboot=0\0" \ - "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \ - "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \ - "source ${loadaddr}\0" \ - "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ - "mmcboot=mmc dev ${mmcdev}; " \ - "if mmc rescan; then " \ - "echo SD/MMC found on device ${mmcdev};" \ - "if run loadimage; then " \ - "run loadfdt; " \ - "echo Booting from mmc${mmcdev} ...; " \ - "run args_mmc; " \ - "bootz ${loadaddr} - ${fdtaddr}; " \ - "fi;" \ - "fi;\0" \ "findfdt="\ "if test $board_name = omap5_uevm; then " \ "setenv fdtfile omap5-uevm.dtb; fi; " \ @@ -114,7 +100,6 @@ "setenv fdtfile am571x-idk.dtb; fi;" \ "if test $fdtfile = undefined; then " \ "echo WARNING: Could not determine device tree to use; fi; \0" \ - "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile};\0" \ DFUARGS \ NETARGS \

On Tue, Nov 29, 2016 at 11:57:59AM +0530, Lokesh Vutla wrote:
Support for loading images from mmc is duplicated in all TI platforms. Add this information to DEFAULT_MMC_TI_ARGS so that it can be reused in all TI platforms.
Reviewed-by: Andrew F. Davis afd@ti.com Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 11:57:59AM +0530, Lokesh Vutla wrote:
Support for loading images from mmc is duplicated in all TI platforms. Add this information to DEFAULT_MMC_TI_ARGS so that it can be reused in all TI platforms.
Reviewed-by: Andrew F. Davis afd@ti.com Signed-off-by: Lokesh Vutla lokeshvutla@ti.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

FIT is a new image format which is a Tree like structure and gives more flexibility in handling of various images. Mainly used for unification of multiple images in a single blob and provide security information for each image.
U-Boot already has support for loading such images, so adding the environment support to load FIT image on all TI platforms.
Reviewed-by: Andrew F. Davis afd@ti.com Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- include/configs/am335x_evm.h | 4 ++++ include/configs/am43xx_evm.h | 4 ++++ include/configs/ti_armv7_common.h | 15 ++++++++++++++- include/configs/ti_omap4_common.h | 4 ++++ include/configs/ti_omap5_common.h | 4 ++++ 5 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 7f5bee9..59f838a 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -90,6 +90,9 @@ func(DHCP, dhcp, na)
#define CONFIG_BOOTCOMMAND \ + "if test ${boot_fit} -eq 1; then " \ + "run update_to_fit;" \ + "fi;" \ "run findfdt; " \ "run init_console; " \ "run envboot; " \ @@ -101,6 +104,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_LINUX_BOOT_ENV \ DEFAULT_MMC_TI_ARGS \ + DEFAULT_FIT_TI_ARGS \ "bootpart=0:2\0" \ "bootdir=/boot\0" \ "bootfile=zImage\0" \ diff --git a/include/configs/am43xx_evm.h b/include/configs/am43xx_evm.h index abfa852..a04cc76 100644 --- a/include/configs/am43xx_evm.h +++ b/include/configs/am43xx_evm.h @@ -206,6 +206,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_LINUX_BOOT_ENV \ DEFAULT_MMC_TI_ARGS \ + DEFAULT_FIT_TI_ARGS \ "fdtfile=undefined\0" \ "bootpart=0:2\0" \ "bootdir=/boot\0" \ @@ -269,6 +270,9 @@ DFUARGS \
#define CONFIG_BOOTCOMMAND \ + "if test ${boot_fit} -eq 1; then " \ + "run update_to_fit;" \ + "fi;" \ "run findfdt; " \ "run envboot;" \ "run mmcboot;" \ diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h index d720b2b..d13fc94 100644 --- a/include/configs/ti_armv7_common.h +++ b/include/configs/ti_armv7_common.h @@ -110,10 +110,23 @@ "if mmc rescan; then " \ "echo SD/MMC found on device ${mmcdev};" \ "if run loadimage; then " \ - "run mmcloados;" \ + "if test ${boot_fit} -eq 1; then " \ + "run loadfit; " \ + "else " \ + "run mmcloados;" \ + "fi;" \ "fi;" \ "fi;\0" \
+#define DEFAULT_FIT_TI_ARGS \ + "boot_fit=0\0" \ + "fit_loadaddr=0x88000000\0" \ + "fit_bootfile=fitImage.itb\0" \ + "update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}\0" \ + "args_fit=setenv bootargs console=${console} \0" \ + "loadfit=run args_fit; bootm ${loadaddr}:kernel@1 " \ + "${loadaddr}:ramdisk@1 ${loadaddr}:${fdtfile};\0" \ + /* * DDR information. If the CONFIG_NR_DRAM_BANKS is not defined, * we say (for simplicity) that we have 1 bank, always, even when diff --git a/include/configs/ti_omap4_common.h b/include/configs/ti_omap4_common.h index ce9d3e8..8e0f9eb 100644 --- a/include/configs/ti_omap4_common.h +++ b/include/configs/ti_omap4_common.h @@ -98,6 +98,9 @@ func(DHCP, dhcp, na)
#define CONFIG_BOOTCOMMAND \ + "if test ${boot_fit} -eq 1; then " \ + "run update_to_fit;" \ + "fi;" \ "run findfdt; " \ "run envboot; " \ "run distro_bootcmd" @@ -107,6 +110,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_LINUX_BOOT_ENV \ DEFAULT_MMC_TI_ARGS \ + DEFAULT_FIT_TI_ARGS \ "console=ttyO2,115200n8\0" \ "fdtfile=undefined\0" \ "bootpart=0:2\0" \ diff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h index 90ead56..37d6565 100644 --- a/include/configs/ti_omap5_common.h +++ b/include/configs/ti_omap5_common.h @@ -65,6 +65,7 @@ #define CONFIG_EXTRA_ENV_SETTINGS \ DEFAULT_LINUX_BOOT_ENV \ DEFAULT_MMC_TI_ARGS \ + DEFAULT_FIT_TI_ARGS \ "console=" CONSOLEDEV ",115200n8\0" \ "fdtfile=undefined\0" \ "bootpart=0:2\0" \ @@ -110,6 +111,9 @@ "echo Booting into fastboot ...; " \ "fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; " \ "fi;" \ + "if test ${boot_fit} -eq 1; then " \ + "run update_to_fit;" \ + "fi;" \ "run findfdt; " \ "run envboot; " \ "run mmcboot;" \

On Tue, Nov 29, 2016 at 11:58:00AM +0530, Lokesh Vutla wrote:
FIT is a new image format which is a Tree like structure and gives more flexibility in handling of various images. Mainly used for unification of multiple images in a single blob and provide security information for each image.
U-Boot already has support for loading such images, so adding the environment support to load FIT image on all TI platforms.
Reviewed-by: Andrew F. Davis afd@ti.com Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 11:58:00AM +0530, Lokesh Vutla wrote:
FIT is a new image format which is a Tree like structure and gives more flexibility in handling of various images. Mainly used for unification of multiple images in a single blob and provide security information for each image.
U-Boot already has support for loading such images, so adding the environment support to load FIT image on all TI platforms.
Reviewed-by: Andrew F. Davis afd@ti.com Signed-off-by: Lokesh Vutla lokeshvutla@ti.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- board/ti/dra7xx/evm.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index 6d352e6..f932ae9 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -530,6 +530,13 @@ int board_late_init(void)
set_board_info_env(name);
+ /* + * Default FIT boot on HS devices. Non FIT images are not allowed + * on HS devices. + */ + if (get_device_type() == HS_DEVICE) + setenv("boot_fit", "1"); + omap_die_id_serial(); #endif return 0;

On Tue, Nov 29, 2016 at 11:58:01AM +0530, Lokesh Vutla wrote:
Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 11:58:01AM +0530, Lokesh Vutla wrote:
Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- board/ti/am57xx/board.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c index 226752e..c63c693 100644 --- a/board/ti/am57xx/board.c +++ b/board/ti/am57xx/board.c @@ -463,6 +463,14 @@ int board_late_init(void) * This is the POWERHOLD-in-Low behavior. */ palmas_i2c_write_u8(TPS65903X_CHIP_P1, 0xA0, 0x1); + + /* + * Default FIT boot on HS devices. Non FIT images are not allowed + * on HS devices. + */ + if (get_device_type() == HS_DEVICE) + setenv("boot_fit", "1"); + return 0; }

On Tue, Nov 29, 2016 at 11:58:02AM +0530, Lokesh Vutla wrote:
Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 11:58:02AM +0530, Lokesh Vutla wrote:
Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com --- board/ti/am335x/board.c | 7 +++++++ board/ti/am43xx/board.c | 7 +++++++ 2 files changed, 14 insertions(+)
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c index da9eab4..111ed35 100644 --- a/board/ti/am335x/board.c +++ b/board/ti/am335x/board.c @@ -639,6 +639,13 @@ int board_late_init(void) if (board_is_bbg1()) name = "BBG1"; set_board_info_env(name); + + /* + * Default FIT boot on HS devices. Non FIT images are not allowed + * on HS devices. + */ + if (get_device_type() == HS_DEVICE) + setenv("boot_fit", "1"); #endif
#if !defined(CONFIG_SPL_BUILD) diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c index ba6f88f..390cc16 100644 --- a/board/ti/am43xx/board.c +++ b/board/ti/am43xx/board.c @@ -632,6 +632,13 @@ int board_late_init(void) { #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG set_board_info_env(NULL); + + /* + * Default FIT boot on HS devices. Non FIT images are not allowed + * on HS devices. + */ + if (get_device_type() == HS_DEVICE) + setenv("boot_fit", "1"); #endif return 0; }

On Tue, Nov 29, 2016 at 11:58:03AM +0530, Lokesh Vutla wrote:
Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com
Reviewed-by: Tom Rini trini@konsulko.com

On Tue, Nov 29, 2016 at 11:58:03AM +0530, Lokesh Vutla wrote:
Verification has to be done before booting any images on HS devices. So default the boot to FIT on HS devices.
Signed-off-by: Lokesh Vutla lokeshvutla@ti.com Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!
participants (2)
-
Lokesh Vutla
-
Tom Rini