Hey, quick review and apply please? NAND commands are not working!
2015-07-01 21:35 GMT+09:00 Masahiro Yamada <yamada.masah...@socionext.com>: > Since commit 09c3280754f8 (mtd, nand: Move common functions from > cmd_nand.c to common place), NAND commands would not work at all > on large devices. > > => nand read 80000000 10000 10000 > > NAND read: Offset exceeds device limit > => nand erase 100000 100000 > > NAND erase: Offset exceeds device limit > > The type of the "size" of "struct mtd_info" is uint64_t, while > mtd_arg_off_size() and mtd_arg_off() treat chipsize as int type. > The chipsize is wrapped around if the argument is given with 2GB > or larger. > > Signed-off-by: Masahiro Yamada <yamada.masah...@socionext.com> > --- > > drivers/mtd/mtd_uboot.c | 5 +++-- > include/linux/mtd/mtd.h | 5 +++-- > 2 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c > index 7197007..c517b9c 100644 > --- a/drivers/mtd/mtd_uboot.c > +++ b/drivers/mtd/mtd_uboot.c > @@ -43,7 +43,7 @@ static int get_part(const char *partname, int *idx, loff_t > *off, loff_t *size, > } > > int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size, > - loff_t *maxsize, int devtype, int chipsize) > + loff_t *maxsize, int devtype, uint64_t chipsize) > { > if (!str2off(arg, off)) > return get_part(arg, idx, off, size, maxsize, devtype); > @@ -59,7 +59,8 @@ int mtd_arg_off(const char *arg, int *idx, loff_t *off, > loff_t *size, > } > > int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off, > - loff_t *size, loff_t *maxsize, int devtype, int chipsize) > + loff_t *size, loff_t *maxsize, int devtype, > + uint64_t chipsize) > { > int ret; > > diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h > index 33669da..552d4d6 100644 > --- a/include/linux/mtd/mtd.h > +++ b/include/linux/mtd/mtd.h > @@ -484,8 +484,9 @@ int add_mtd_partitions(struct mtd_info *, const struct > mtd_partition *, int); > int del_mtd_partitions(struct mtd_info *); > > int mtd_arg_off(const char *arg, int *idx, loff_t *off, loff_t *size, > - loff_t *maxsize, int devtype, int chipsize); > + loff_t *maxsize, int devtype, uint64_t chipsize); > int mtd_arg_off_size(int argc, char *const argv[], int *idx, loff_t *off, > - loff_t *size, loff_t *maxsize, int devtype, int chipsize); > + loff_t *size, loff_t *maxsize, int devtype, > + uint64_t chipsize); > #endif > #endif /* __MTD_MTD_H__ */ > -- > 1.9.1 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot -- Best Regards Masahiro Yamada _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot