From 13cb7cc9e8e48eb888b13743f79ff02420405044 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Guillermo=20Rodr=C3=ADguez?= Date: Mon, 16 Dec 2019 16:27:57 +0100 Subject: [PATCH] dfu: Add option to skip empty pages when flashing UBI images to NAND Add a new option to enable the DROP_FFS flag when flashing UBI images to NAND in order to drop trailing all-0xff pages. This is similar to the existing FASTBOOT_FLASH_NAND_TRIMFFS option. Signed-off-by: Guillermo Rodriguez Cc: Lukasz Majewski --- drivers/dfu/Kconfig | 7 +++++++ drivers/dfu/dfu_nand.c | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig index 9709b62..174fb58 100644 --- a/drivers/dfu/Kconfig +++ b/drivers/dfu/Kconfig @@ -42,6 +42,13 @@ config DFU_NAND This option enables using DFU to read and write to NAND based storage. +config DFU_NAND_TRIMFFS + bool "Skip empty pages when flashing UBI images to NAND" + depends on DFU_NAND + help + When flashing UBI images to NAND, enable the DROP_FFS flag to drop + trailing all-0xff pages. + config DFU_RAM bool "RAM back end for DFU" help diff --git a/drivers/dfu/dfu_nand.c b/drivers/dfu/dfu_nand.c index b812a3d..58b9434 100644 --- a/drivers/dfu/dfu_nand.c +++ b/drivers/dfu/dfu_nand.c @@ -50,6 +50,7 @@ static int nand_block_op(enum dfu_op op, struct dfu_entity *dfu, lim, buf); } else { nand_erase_options_t opts; + int write_flags = WITH_WR_VERIFY; memset(&opts, 0, sizeof(opts)); opts.offset = start; @@ -62,8 +63,12 @@ static int nand_block_op(enum dfu_op op, struct dfu_entity *dfu, if (ret) return ret; /* then write */ +#ifdef CONFIG_DFU_NAND_TRIMFFS + if (dfu->data.nand.ubi) + write_flags |= WITH_DROP_FFS; +#endif ret = nand_write_skip_bad(mtd, start, &count, &actual, - lim, buf, WITH_WR_VERIFY); + lim, buf, write_flags); } if (ret != 0) { -- 2.7.4