The i.MX header is at an offset in the boot device, usually 0x400 bytes. This patch adds a flag to support the case that the partition the image is written to starts at that offset rather than 0x0. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- arch/arm/mach-imx/imx-bbu-internal.c | 7 +++++-- arch/arm/mach-imx/include/mach/bbu.h | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-imx/imx-bbu-internal.c b/arch/arm/mach-imx/imx-bbu-internal.c index 7a512b1de4..55e344cff2 100644 --- a/arch/arm/mach-imx/imx-bbu-internal.c +++ b/arch/arm/mach-imx/imx-bbu-internal.c @@ -57,12 +57,15 @@ static int imx_bbu_write_device(struct imx_internal_bbu_handler *imx_handler, if (fd < 0) return fd; - if (imx_handler->handler.flags & IMX_BBU_FLAG_KEEP_HEAD) { + if (imx_handler->handler.flags & (IMX_BBU_FLAG_KEEP_HEAD | + IMX_BBU_FLAG_PARTITION_STARTS_AT_HEADER)) { image_len -= imx_handler->flash_header_offset; - offset += imx_handler->flash_header_offset; buf += imx_handler->flash_header_offset; } + if (imx_handler->handler.flags & IMX_BBU_FLAG_KEEP_HEAD) + offset += imx_handler->flash_header_offset; + if (imx_handler->handler.flags & IMX_INTERNAL_FLAG_ERASE) { pr_debug("%s: unprotecting %s from 0x%08x to 0x%08x\n", __func__, devicefile, offset, image_len); diff --git a/arch/arm/mach-imx/include/mach/bbu.h b/arch/arm/mach-imx/include/mach/bbu.h index f19aacce06..7df9d668bb 100644 --- a/arch/arm/mach-imx/include/mach/bbu.h +++ b/arch/arm/mach-imx/include/mach/bbu.h @@ -16,6 +16,14 @@ struct imx_dcd_v2_entry; */ #define IMX_BBU_FLAG_KEEP_HEAD BIT(16) +/* + * Set this flag when the partition the update image is written to + * actually starts at the offset where the i.MX flash header is expected + * (usually 0x400). This means for the update code that it has to skip + * the first 0x400 bytes of the image. + */ +#define IMX_BBU_FLAG_PARTITION_STARTS_AT_HEADER (1 << 17) + /* * The upper 16 bit of the flags passes to the below functions are reserved * for i.MX specific flags -- 2.17.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox