This patch takes a given address applies a plus or minus offset to locate
the putative address of an IVT given a non-IVT link location.

It then sets hab_ivt_address to allow for further logic/scripting based on
the calculated address.

This routine is useful when scripting hab_auth_img calls from boot.scr.
Subsequent patches will illustrate its utility in a board-port.

Signed-off-by: Bryan O'Donoghue <bryan.odonog...@linaro.org>
Cc: Utkarsh Gupta <utkarsh.gu...@nxp.com>
Cc: Breno Lima <breno.l...@nxp.com>
Cc: Fabio Estevam <fabio.este...@nxp.com>
---
 arch/arm/mach-imx/hab.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c
index c730c8f..0c18b2e 100644
--- a/arch/arm/mach-imx/hab.c
+++ b/arch/arm/mach-imx/hab.c
@@ -341,6 +341,31 @@ static int do_hab_failsafe(cmd_tbl_t *cmdtp, int flag, int 
argc,
        return 0;
 }
 
+/*
+ * This routine takes a given address and applies a plus or minus offset to 
that
+ * address.
+ */
+static int do_hab_get_ivt_addr(cmd_tbl_t *cmdtp, int flag, int argc,
+                              char * const argv[])
+{
+       ulong   addr;
+       long    ivt_offset;
+
+       if (argc < 3)
+               return CMD_RET_USAGE;
+
+       if (!imx_hab_is_enabled())
+               return CMD_RET_FAILURE;
+
+       addr = simple_strtoul(argv[1], NULL, 16);
+       ivt_offset = simple_strtol(argv[2], NULL, 16);
+       addr += ivt_offset;
+
+       env_set_hex("hab_ivt_addr", addr);
+
+       return CMD_RET_SUCCESS;
+}
+
 U_BOOT_CMD(
                hab_status, CONFIG_SYS_MAXARGS, 1, do_hab_status,
                "display HAB status",
@@ -362,6 +387,14 @@ U_BOOT_CMD(
                ""
          );
 
+U_BOOT_CMD(
+               hab_get_ivt_addr, 3, 0, do_hab_get_ivt_addr,
+               "determine IVT header location and store in $hab_ivt_addr",
+               "addr ivt_offset\n"
+               "addr - image hex address\n"
+               "ivt_offset - hex offset of IVT in the image"
+         );
+
 #endif /* !defined(CONFIG_SPL_BUILD) */
 
 /* Get CSF Header length */
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to