[PATCH] cfi_flash: show progress while during erase
Sascha Hauer
s.hauer at pengutronix.de
Mon May 26 22:42:13 PDT 2014
On Mon, May 26, 2014 at 08:20:52PM +0200, Franck Jullien wrote:
> Sascha,
>
> Any reason why you removed the progress bar here in this commit:
> 2749fbac48374b5f5ced ?
The reason was that with the conversion of the cfi driver to mtd the
loop over the erase blocks was no longer in the cfi driver but in the
mtd layer. So if you see a progress bar for each erased block. You are
probably irritated because of this patch which came in later:
| commit 0d7ac7c3817e006cc4e258522a989642f1be1538
| Author: Sascha Hauer <s.hauer at pengutronix.de>
| Date: Sat May 25 00:16:31 2013 +0200
|
| mtd: call mtd_erase with complete area if possible
|
| If a device does not have bad blocks loop over the eraseblocks
| in the driver instead of the core. This allows the mtd_dataflash
| driver to erase blocks instead of pages to gain more speed during
| erasing. Also the mtd_dataflash driver modifies the erase_info
| struct which causes the outer loop in the core to never end.
|
| Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
|
| diff --git a/drivers/mtd/core.c b/drivers/mtd/core.c
| index 61744b6..f358098 100644
| --- a/drivers/mtd/core.c
| +++ b/drivers/mtd/core.c
| @@ -107,6 +107,12 @@ static int mtd_op_erase(struct cdev *cdev, size_t count, loff_t offset)
| memset(&erase, 0, sizeof(erase));
| erase.mtd = mtd;
| erase.addr = offset;
| +
| + if (!mtd->block_isbad) {
| + erase.len = count;
| + return mtd_erase(mtd, &erase);
| + }
| +
| erase.len = mtd->erasesize;
|
| while (count > 0) {
This moves the eraseblock iteration back into the drivers when the
device does not have bad blocks, which is the case for cfi flashes.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list