mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-08 10:39:08 +00:00
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>
This commit is contained in:
parent
a24c3155db
commit
c39d6a0ea5
5 changed files with 97 additions and 33 deletions
|
@ -129,7 +129,7 @@ struct nand_erase_options {
|
|||
typedef struct nand_erase_options nand_erase_options_t;
|
||||
|
||||
int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
|
||||
u_char *buffer);
|
||||
size_t *actual, loff_t lim, u_char *buffer);
|
||||
|
||||
#define WITH_YAFFS_OOB (1 << 0) /* whether write with yaffs format. This flag
|
||||
* is a 'mode' meaning it cannot be mixed with
|
||||
|
@ -137,7 +137,7 @@ int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
|
|||
#define WITH_DROP_FFS (1 << 1) /* drop trailing all-0xff pages */
|
||||
|
||||
int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
|
||||
u_char *buffer, int flags);
|
||||
size_t *actual, loff_t lim, u_char *buffer, int flags);
|
||||
int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts);
|
||||
int nand_torture(nand_info_t *nand, loff_t offset);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue