diff options
author | Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com> | 2014-03-10 14:39:49 +0300 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-03-12 21:26:37 +0100 |
commit | 1ee640765a71a7b9ee2cf4ebad22ed5961aef8db (patch) | |
tree | b41e5eefa1033297be8f1713fbcdacfa58e3aebc /lib | |
parent | cf1b29a8504c83bb1922e249c2293a3ecd2920da (diff) | |
download | barebox-1ee640765a71a7b9ee2cf4ebad22ed5961aef8db.tar.gz barebox-1ee640765a71a7b9ee2cf4ebad22ed5961aef8db.tar.xz |
mtd: Update internal API to support 64-bit device size
MTD internal API presently uses 32-bit values to represent device
size. This patch updates them to 64-bits but leaves the external API
unchanged.
In general, changing from 32-bit to 64-bit values cause little
or no changes to the majority of the code with the following
exceptions:
- printk message formats;
- division and modulus of 64-bit values (mtd_div_by_wb,
mtd_div_by_eb may be used in some of such cases).
Was tested on phyFLEX i.MX6.
Signed-off-by: Dmitry Lavnikevich <d.lavnikevich@sam-solutions.com>
Signed-off-by: Grigory Milev <g.milev@sam-solutions.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libmtd.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/libmtd.c b/lib/libmtd.c index 1606b872fd..56672bd951 100644 --- a/lib/libmtd.c +++ b/lib/libmtd.c @@ -195,7 +195,7 @@ int libmtd_read(const struct mtd_dev_info *mtd, int fd, int eb, int offs, void *buf, int len) { int ret, rd = 0; - off_t seek; + loff_t seek; ret = mtd_valid_erase_block(mtd, eb); if (ret) @@ -209,7 +209,7 @@ int libmtd_read(const struct mtd_dev_info *mtd, int fd, int eb, int offs, } /* Seek to the beginning of the eraseblock */ - seek = (off_t)eb * mtd->eb_size + offs; + seek = (loff_t)eb * mtd->eb_size + offs; if (lseek(fd, seek, SEEK_SET) != seek) return sys_errmsg("cannot seek %s to offset %llu", mtd->node, (unsigned long long)seek); @@ -229,7 +229,7 @@ int libmtd_write(const struct mtd_dev_info *mtd, int fd, int eb, int offs, void *buf, int len) { int ret; - off_t seek; + loff_t seek; ret = mtd_valid_erase_block(mtd, eb); if (ret) @@ -255,7 +255,7 @@ int libmtd_write(const struct mtd_dev_info *mtd, int fd, int eb, int offs, } /* Seek to the beginning of the eraseblock */ - seek = (off_t)eb * mtd->eb_size + offs; + seek = (loff_t)eb * mtd->eb_size + offs; if (lseek(fd, seek, SEEK_SET) != seek) return sys_errmsg("cannot seek %s to offset %llu", mtd->node, (unsigned long long)seek); @@ -326,7 +326,7 @@ int mtd_get_dev_info(const char *node, struct mtd_dev_info *mtd) goto out_close; } - mtd->eb_cnt = ui.size / ui.erasesize; + mtd->eb_cnt = mtd_user_div_by_eb(ui.size, &ui); switch(mtd->type) { case MTD_ABSENT: |