From 9f17a00ee56dc5cfb1d9b51e6639d67b64cb3309 Mon Sep 17 00:00:00 2001 From: Stefano Babic Date: Thu, 15 Jun 2023 16:54:46 +0200 Subject: [PATCH] Revert "fw_setenv: fix bug when SPI flash write size != sector size" This reverts commit 44ecc1c216007272a6f99a104a71c9d410969d9e. mtd writesize was errouneously interpreted as maximum allowed size, but it is the minimum size. The patch raises performance issues because on NOR flashes single bytes are written. Signed-off-by: Stefano Babic --- src/uboot_env.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/uboot_env.c b/src/uboot_env.c index 3320753..d0c7173 100644 --- a/src/uboot_env.c +++ b/src/uboot_env.c @@ -759,8 +759,6 @@ static int mtdwrite(struct uboot_flash_env *dev, void *data) sectors = dev->envsectors ? dev->envsectors : 1; buf = data; while (count > 0) { - int blockcount; - erase.start = start; skip = is_nand_badblock(dev, start); @@ -791,26 +789,17 @@ static int mtdwrite(struct uboot_flash_env *dev, void *data) ret =-EIO; goto devwrite_out; } - - blockcount = blocksize; - - /* writesize can be different than the sector size. */ - - while (blockcount > 0) { - if (lseek(dev->fd, start, SEEK_SET) < 0) { - ret =-EIO; - goto devwrite_out; - } - if (write(dev->fd, buf, dev->mtdinfo.writesize) != dev->mtdinfo.writesize) { - ret =-EIO; - goto devwrite_out; - } - - blockcount -= dev->mtdinfo.writesize; - start += dev->mtdinfo.writesize; - buf += dev->mtdinfo.writesize; + if (lseek(dev->fd, start, SEEK_SET) < 0) { + ret =-EIO; + goto devwrite_out; + } + if (write(dev->fd, buf, blocksize) != blocksize) { + ret =-EIO; + goto devwrite_out; } MTDLOCK(dev, &erase); + start += dev->sectorsize; + buf += blocksize; count -= blocksize; ret += blocksize; }