summaryrefslogtreecommitdiff
path: root/common/env_nand.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2013-03-14 05:32:50 +0000
committerMarek Vasut <marex@denx.de>2013-04-10 15:22:22 +0200
commitc39d6a0ea57d57b53bd7fb8933874e1640e47888 (patch)
treec3e91d95b7fa285301973278ca4cb2b31ab8c621 /common/env_nand.c
parenta24c3155db20f979f9a0aa758d4665f221e470b9 (diff)
downloadu-boot-imx-c39d6a0ea57d57b53bd7fb8933874e1640e47888.zip
u-boot-imx-c39d6a0ea57d57b53bd7fb8933874e1640e47888.tar.gz
u-boot-imx-c39d6a0ea57d57b53bd7fb8933874e1640e47888.tar.bz2
nand: Extend nand_(read|write)_skip_bad with *actual and limit parameters
We make these two functions take a size_t pointer to how much space was used on NAND to read or write the buffer (when reads/writes happen) so that bad blocks can be accounted for. We also make them take an loff_t limit on how much data can be read or written. This means that we can now catch the case of when writing to a partition would exceed the partition size due to bad blocks. To do this we also need to make check_skip_len count not just complete blocks used but partial ones as well. All callers of nand_(read|write)_skip_bad are adjusted to call these with the most sensible limits available. The changes were started by Pantelis and finished by Tom. Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com> Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'common/env_nand.c')
-rw-r--r--common/env_nand.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/common/env_nand.c b/common/env_nand.c
index 5b69889..b745822 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -281,7 +281,8 @@ int readenv(size_t offset, u_char *buf)
} else {
char_ptr = &buf[amount_loaded];
if (nand_read_skip_bad(&nand_info[0], offset,
- &len, char_ptr))
+ &len, NULL,
+ nand_info[0].size, char_ptr))
return 1;
offset += blocksize;