From: Guillermo Rodríguez <guille.rodriguez@gmail.com>
Date: Mon, 16 Dec 2019 15:27:57 +0000 (+0100)
Subject: dfu: Add option to skip empty pages when flashing UBI images to NAND
X-Git-Tag: v2025.01-rc5-pxa1908~2579^2
X-Git-Url: http://git.dujemihanovic.xyz/%22http:/www.sics.se/static/git-favicon.png?a=commitdiff_plain;h=13cb7cc9e8e4;p=u-boot.git

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 <guille.rodriguez@gmail.com>
Cc: Lukasz Majewski <lukma@denx.de>
---

diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
index 9709b6277d..174fb588a6 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 b812a3dfb1..58b94348c9 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) {