
On 25/04/2013 22:16, Marek Vasut wrote:
Implement BOOT_OFFSET command for imximage. This command is parallel to current BOOT_FROM command, but allows more flexibility in configuring arbitrary image header offset. Also add an imximage.cfg with default offset values into arm/arch/imx-common/ so the board-specific imximage.cfg can include this file to avoid magic constants.
The syntax of BOOT_OFFSET command is "BOOT_OFFSET <u32 offset>".
Signed-off-by: Marek Vasut marex@denx.de Cc: Albert ARIBAUD albert.u.boot@aribaud.net Cc: Benoît Thébaudeau benoit.thebaudeau@advansee.com Cc: Fabio Estevam fabio.estevam@freescale.com Cc: Scott Wood scottwood@freescale.com Cc: Stefano Babic sbabic@denx.de Cc: Tom Rini trini@ti.com
arch/arm/include/asm/imx-common/imximage.cfg | 30 ++++++++++++++++++++++++++ doc/README.imximage | 18 ++++++++++++++++ tools/imximage.c | 6 ++++++ tools/imximage.h | 6 ++++++ 4 files changed, 60 insertions(+) create mode 100644 arch/arm/include/asm/imx-common/imximage.cfg
diff --git a/arch/arm/include/asm/imx-common/imximage.cfg b/arch/arm/include/asm/imx-common/imximage.cfg new file mode 100644 index 0000000..95daa3d --- /dev/null +++ b/arch/arm/include/asm/imx-common/imximage.cfg @@ -0,0 +1,30 @@ +/*
- i.MX image header offset values
- Copyright (C) 2013 Marek Vasut marex@denx.de
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License or (at your option) any later version.
- */
+/*
- NOTE: This file must be kept in sync with tools/imximage.h because
tools/imximage.c can not cross-include headers from arch/arm/
and vice-versa.
- */
+#ifndef __ASM_IMX_COMMON_IMXIMAGE_CFG__ +#define __ASM_IMX_COMMON_IMXIMAGE_CFG__
+/* Standard image header offset for NAND, SATA, SD, SPI flash. */ +#define FLASH_OFFSET_STANDARD 0x400 +/* Specific image header offset for booting from OneNAND. */ +#define FLASH_OFFSET_ONENAND 0x100 +/* Specific image header offset for booting from memory-mapped NOR. */ +#define FLASH_OFFSET_NOR 0x1000
+#endif /* __ASM_IMX_COMMON_IMXIMAGE_CFG__ */ diff --git a/doc/README.imximage b/doc/README.imximage index 073e3fc..802eb90 100644 --- a/doc/README.imximage +++ b/doc/README.imximage @@ -65,9 +65,27 @@ Configuration command line syntax: This command need appear the fist before other valid commands in configuration file.
BOOT_OFFSET value
This command is parallel to BOOT_FROM and
is preferred over BOOT_FROM.
value: Offset of the image header, this
value shall be set to one of the
values found in the file:
arch/arm/include/asm/\
imx-common/imximage.cfg
Example:
BOOT_OFFSET FLASH_OFFSET_STANDARD
BOOT_FROM nand/spi/sd/onenand/nor/sata
This command is parallel to BOOT_OFFSET and
is to be deprecated in favor of BOOT_OFFSET.
Example: BOOT_FROM spi
DATA type address value
type: word=4, halfword=2, byte=1
diff --git a/tools/imximage.c b/tools/imximage.c index c018562..5e8e470 100644 --- a/tools/imximage.c +++ b/tools/imximage.c @@ -37,6 +37,7 @@ */ static table_entry_t imximage_cmds[] = { {CMD_BOOT_FROM, "BOOT_FROM", "boot command", },
- {CMD_BOOT_OFFSET, "BOOT_OFFSET", "Boot offset", }, {CMD_DATA, "DATA", "Reg Write Data", }, {CMD_IMAGE_VERSION, "IMAGE_VERSION", "image version", }, {-1, "", "", },
@@ -352,6 +353,11 @@ static void parse_cfg_cmd(struct imx_header *imxhdr, int32_t cmd, char *token, if (unlikely(cmd_ver_first != 1)) cmd_ver_first = 0; break;
- case CMD_BOOT_OFFSET:
imxhdr->flash_offset = get_cfg_value(token, name, lineno);
if (unlikely(cmd_ver_first != 1))
cmd_ver_first = 0;
case CMD_DATA: value = get_cfg_value(token, name, lineno); (*set_dcd_val)(imxhdr, name, lineno, fld, value, dcd_len);break;
diff --git a/tools/imximage.h b/tools/imximage.h index dfd2e9e..99e124a 100644 --- a/tools/imximage.h +++ b/tools/imximage.h @@ -31,6 +31,11 @@
#define HEADER_OFFSET 0x400
+/*
- NOTE: This file must be kept in sync with arch/arm/include/asm/\
imx-common/imximage.cfg because tools/imximage.c can not
cross-include headers from arch/arm/ and vice-versa.
- */
#define CMD_DATA_STR "DATA" #define FLASH_OFFSET_UNDEFINED 0xFFFFFFFF #define FLASH_OFFSET_STANDARD 0x400 @@ -52,6 +57,7 @@ enum imximage_cmd { CMD_INVALID, CMD_IMAGE_VERSION, CMD_BOOT_FROM,
- CMD_BOOT_OFFSET, CMD_DATA
};
It looks great.
Acked-by: Stefano Babic sbabic@denx.de
Best regards, Stefano Babic