Patchwork [U-Boot,1/2] tools: arm: imx: Implement BOOT_OFFSET command for imximage

login
register
mail settings
Submitter Marek Vasut
Date April 25, 2013, 8:16 p.m.
Message ID <1366920963-8646-1-git-send-email-marex@denx.de>
Download mbox | patch
Permalink /patch/239592/
State Awaiting Upstream
Headers show

Comments

Marek Vasut - April 25, 2013, 8:16 p.m.
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
Benoît Thébaudeau - April 25, 2013, 9:29 p.m.
Hi Marek,

On Thursday, April 25, 2013 10:16:02 PM, 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;
> +		break;
>  	case CMD_DATA:
>  		value = get_cfg_value(token, name, lineno);
>  		(*set_dcd_val)(imxhdr, name, lineno, fld, value, dcd_len);
> 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
>  };
>  
> --
> 1.7.10.4

This looks good to me.

Best regards,
Benoît
Marek Vasut - April 26, 2013, 12:57 a.m.
Dear Benoît Thébaudeau,

> Hi Marek,
> 
[...]

> > @@ -52,6 +57,7 @@ enum imximage_cmd {
> > 
> >  	CMD_INVALID,
> >  	CMD_IMAGE_VERSION,
> >  	CMD_BOOT_FROM,
> > 
> > +	CMD_BOOT_OFFSET,
> > 
> >  	CMD_DATA
> >  
> >  };
> > 
> > --
> > 1.7.10.4
> 
> This looks good to me.

Yes, and it keeps compat too. Btw can you maybe use "[...]" to cut out the 
irrelevant parts of the emails so the relevant replies are easier to find 
please?

Best regards,
Marek Vasut
Benoît Thébaudeau - April 26, 2013, 7:11 a.m.
Dear Marek Vasut,

On Friday, April 26, 2013 2:57:44 AM, Marek Vasut wrote:
> > > @@ -52,6 +57,7 @@ enum imximage_cmd {
> > > 
> > >  	CMD_INVALID,
> > >  	CMD_IMAGE_VERSION,
> > >  	CMD_BOOT_FROM,
> > > 
> > > +	CMD_BOOT_OFFSET,
> > > 
> > >  	CMD_DATA
> > >  
> > >  };
> > > 
> > > --
> > > 1.7.10.4
> > 
> > This looks good to me.
> 
> Yes, and it keeps compat too. Btw can you maybe use "[...]" to cut out the
> irrelevant parts of the emails so the relevant replies are easier to find
> please?

Will do. ;)

Best regards,
Benoît
Stefano Babic - April 26, 2013, 8:19 a.m.
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;
> +		break;
>  	case CMD_DATA:
>  		value = get_cfg_value(token, name, lineno);
>  		(*set_dcd_val)(imxhdr, name, lineno, fld, value, dcd_len);
> 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
Stefan Roese - April 26, 2013, 8:49 a.m.
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>".

Look good. Thanks.

Acked-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan
Stefano Babic - April 28, 2013, 9:19 a.m.
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>
> ---
Applied to u-boot-imx, thanks.

Best regards,
Stefano Babic

Patch

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;
+		break;
 	case CMD_DATA:
 		value = get_cfg_value(token, name, lineno);
 		(*set_dcd_val)(imxhdr, name, lineno, fld, value, dcd_len);
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
 };