1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- From 35bbc4d8155ed86ca7200e060dad98bdfbce684d Mon Sep 17 00:00:00 2001
- From: Stefano Babic <sbabic@denx.de>
- 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 <sbabic@denx.de>
- Upstream: https://github.com/sbabic/libubootenv/commit/9f17a00ee56dc5cfb1d9b51e6639d67b64cb3309
- Signed-off-by: Brandon Maier <brandon.maier@collins.com>
- ---
- 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 c5eefe7..76e2619 100644
- --- a/src/uboot_env.c
- +++ b/src/uboot_env.c
- @@ -712,8 +712,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);
- @@ -744,26 +742,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;
- }
- --
- 2.41.0
|