[U-Boot] [PATCH] nand_init: use loff_t for offset

nand_init currently use size_t which is arch dependent and not always a unsigned long. Now use loff_t as the linux mtd layer
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com Cc: Scott Wood scottwood@freescale.com --- drivers/mtd/nand/nand_util.c | 20 ++++++++++---------- include/nand.h | 14 +++++++------- 2 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/mtd/nand/nand_util.c b/drivers/mtd/nand/nand_util.c index 6ba52b3..dc7eacd 100644 --- a/drivers/mtd/nand/nand_util.c +++ b/drivers/mtd/nand/nand_util.c @@ -312,7 +312,7 @@ int nand_lock(struct mtd_info *mtd, int tight) * NAND_LOCK_STATUS_UNLOCK: page unlocked * */ -int nand_get_lock_status(struct mtd_info *mtd, ulong offset) +int nand_get_lock_status(struct mtd_info *mtd, loff_t offset) { int ret = 0; int chipnr; @@ -433,7 +433,7 @@ int nand_unlock(struct mtd_info *mtd, ulong start, ulong length) * @param length image length * @return image length including bad blocks */ -static size_t get_len_incl_bad (nand_info_t *nand, size_t offset, +static size_t get_len_incl_bad (nand_info_t *nand, loff_t offset, const size_t length) { size_t len_incl_bad = 0; @@ -470,7 +470,7 @@ static size_t get_len_incl_bad (nand_info_t *nand, size_t offset, * @param buf buffer to read from * @return 0 in case of success */ -int nand_write_skip_bad(nand_info_t *nand, size_t offset, size_t *length, +int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, u_char *buffer) { int rval; @@ -495,7 +495,7 @@ int nand_write_skip_bad(nand_info_t *nand, size_t offset, size_t *length, if (len_incl_bad == *length) { rval = nand_write (nand, offset, length, buffer); if (rval != 0) - printf ("NAND write to offset %zx failed %d\n", + printf ("NAND write to offset %llx failed %d\n", offset, rval);
return rval; @@ -506,7 +506,7 @@ int nand_write_skip_bad(nand_info_t *nand, size_t offset, size_t *length, size_t write_size;
if (nand_block_isbad (nand, offset & ~(nand->erasesize - 1))) { - printf ("Skip bad block 0x%08zx\n", + printf ("Skip bad block 0x%08llx\n", offset & ~(nand->erasesize - 1)); offset += nand->erasesize - block_offset; continue; @@ -519,7 +519,7 @@ int nand_write_skip_bad(nand_info_t *nand, size_t offset, size_t *length,
rval = nand_write (nand, offset, &write_size, p_buffer); if (rval != 0) { - printf ("NAND write to offset %zx failed %d\n", + printf ("NAND write to offset %llx failed %d\n", offset, rval); *length -= left_to_write; return rval; @@ -547,7 +547,7 @@ int nand_write_skip_bad(nand_info_t *nand, size_t offset, size_t *length, * @param buffer buffer to write to * @return 0 in case of success */ -int nand_read_skip_bad(nand_info_t *nand, size_t offset, size_t *length, +int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, u_char *buffer) { int rval; @@ -565,7 +565,7 @@ int nand_read_skip_bad(nand_info_t *nand, size_t offset, size_t *length, if (len_incl_bad == *length) { rval = nand_read (nand, offset, length, buffer); if (rval != 0) - printf ("NAND read from offset %zx failed %d\n", + printf ("NAND read from offset %llx failed %d\n", offset, rval);
return rval; @@ -576,7 +576,7 @@ int nand_read_skip_bad(nand_info_t *nand, size_t offset, size_t *length, size_t read_length;
if (nand_block_isbad (nand, offset & ~(nand->erasesize - 1))) { - printf ("Skipping bad block 0x%08zx\n", + printf ("Skipping bad block 0x%08llx\n", offset & ~(nand->erasesize - 1)); offset += nand->erasesize - block_offset; continue; @@ -589,7 +589,7 @@ int nand_read_skip_bad(nand_info_t *nand, size_t offset, size_t *length,
rval = nand_read (nand, offset, &read_length, p_buffer); if (rval != 0) { - printf ("NAND read from offset %zx failed %d\n", + printf ("NAND read from offset %llx failed %d\n", offset, rval); *length -= left_to_read; return rval; diff --git a/include/nand.h b/include/nand.h index 065a42c..23f3ca1 100644 --- a/include/nand.h +++ b/include/nand.h @@ -38,22 +38,22 @@ typedef struct mtd_info nand_info_t; extern int nand_curr_device; extern nand_info_t nand_info[];
-static inline int nand_read(nand_info_t *info, off_t ofs, size_t *len, u_char *buf) +static inline int nand_read(nand_info_t *info, loff_t ofs, size_t *len, u_char *buf) { return info->read(info, ofs, *len, (size_t *)len, buf); }
-static inline int nand_write(nand_info_t *info, off_t ofs, size_t *len, u_char *buf) +static inline int nand_write(nand_info_t *info, loff_t ofs, size_t *len, u_char *buf) { return info->write(info, ofs, *len, (size_t *)len, buf); }
-static inline int nand_block_isbad(nand_info_t *info, off_t ofs) +static inline int nand_block_isbad(nand_info_t *info, loff_t ofs) { return info->block_isbad(info, ofs); }
-static inline int nand_erase(nand_info_t *info, off_t off, size_t size) +static inline int nand_erase(nand_info_t *info, loff_t off, size_t size) { struct erase_info instr;
@@ -110,9 +110,9 @@ struct nand_erase_options {
typedef struct nand_erase_options nand_erase_options_t;
-int nand_read_skip_bad(nand_info_t *nand, size_t offset, size_t *length, +int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, u_char *buffer); -int nand_write_skip_bad(nand_info_t *nand, size_t offset, size_t *length, +int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, u_char *buffer); int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts);
@@ -122,7 +122,7 @@ int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts);
int nand_lock( nand_info_t *meminfo, int tight ); int nand_unlock( nand_info_t *meminfo, ulong start, ulong length ); -int nand_get_lock_status(nand_info_t *meminfo, ulong offset); +int nand_get_lock_status(nand_info_t *meminfo, loff_t offset);
#ifdef CONFIG_SYS_NAND_SELECT_DEVICE void board_nand_select_device(struct nand_chip *nand, int chip);

On Sat, May 16, 2009 at 02:27:40PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
-static inline int nand_erase(nand_info_t *info, off_t off, size_t size) +static inline int nand_erase(nand_info_t *info, loff_t off, size_t size)
"size" should probably be loff_t (or something similarly sized) as well, or erasing an entire large device at once could be awkward.
-Scott

On 17:31 Tue 19 May , Scott Wood wrote:
On Sat, May 16, 2009 at 02:27:40PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
-static inline int nand_erase(nand_info_t *info, off_t off, size_t size) +static inline int nand_erase(nand_info_t *info, loff_t off, size_t size)
"size" should probably be loff_t (or something similarly sized) as well, or erasing an entire large device at once could be awkward.
so we need to update the struct erase_info too as it handle a u_int32_t
Best Regards, J.

On Sat, May 16, 2009 at 02:27:40PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
nand_init currently use size_t which is arch dependent and not always a unsigned long. Now use loff_t as the linux mtd layer
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD plagnioj@jcrosoft.com Cc: Scott Wood scottwood@freescale.com
Applied to u-boot-nand-flash, with the commit message cleaned up a bit (I assume you meant nand_util rather than nand_init?).
-Scott
participants (2)
-
Jean-Christophe PLAGNIOL-VILLARD
-
Scott Wood