diff options
author | David Vrabel <david.vrabel@csr.com> | 2009-02-02 12:52:39 -0500 |
---|---|---|
committer | David Vrabel <david.vrabel@csr.com> | 2009-02-02 12:52:39 -0500 |
commit | 8f04915532485d81e7f6c580a396ea7b01094221 (patch) | |
tree | c5740e961a025f2fb6b520a2bc5937f19d4345ab /drivers/mtd/ubi/gluebi.c | |
parent | 8f5140a6a0b1a9aa79585b0008e88c5d266c5c1d (diff) | |
parent | 45c82b5a770be66845687a7d027c8b52946d59af (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-upstream
Diffstat (limited to 'drivers/mtd/ubi/gluebi.c')
-rw-r--r-- | drivers/mtd/ubi/gluebi.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/mtd/ubi/gluebi.c b/drivers/mtd/ubi/gluebi.c index 6dd4f5e77f82..49cd55ade9c8 100644 --- a/drivers/mtd/ubi/gluebi.c +++ b/drivers/mtd/ubi/gluebi.c | |||
@@ -28,7 +28,7 @@ | |||
28 | * eraseblock size is equivalent to the logical eraseblock size of the volume. | 28 | * eraseblock size is equivalent to the logical eraseblock size of the volume. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | #include <asm/div64.h> | 31 | #include <linux/math64.h> |
32 | #include "ubi.h" | 32 | #include "ubi.h" |
33 | 33 | ||
34 | /** | 34 | /** |
@@ -109,7 +109,6 @@ static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len, | |||
109 | int err = 0, lnum, offs, total_read; | 109 | int err = 0, lnum, offs, total_read; |
110 | struct ubi_volume *vol; | 110 | struct ubi_volume *vol; |
111 | struct ubi_device *ubi; | 111 | struct ubi_device *ubi; |
112 | uint64_t tmp = from; | ||
113 | 112 | ||
114 | dbg_gen("read %zd bytes from offset %lld", len, from); | 113 | dbg_gen("read %zd bytes from offset %lld", len, from); |
115 | 114 | ||
@@ -119,9 +118,7 @@ static int gluebi_read(struct mtd_info *mtd, loff_t from, size_t len, | |||
119 | vol = container_of(mtd, struct ubi_volume, gluebi_mtd); | 118 | vol = container_of(mtd, struct ubi_volume, gluebi_mtd); |
120 | ubi = vol->ubi; | 119 | ubi = vol->ubi; |
121 | 120 | ||
122 | offs = do_div(tmp, mtd->erasesize); | 121 | lnum = div_u64_rem(from, mtd->erasesize, &offs); |
123 | lnum = tmp; | ||
124 | |||
125 | total_read = len; | 122 | total_read = len; |
126 | while (total_read) { | 123 | while (total_read) { |
127 | size_t to_read = mtd->erasesize - offs; | 124 | size_t to_read = mtd->erasesize - offs; |
@@ -160,7 +157,6 @@ static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len, | |||
160 | int err = 0, lnum, offs, total_written; | 157 | int err = 0, lnum, offs, total_written; |
161 | struct ubi_volume *vol; | 158 | struct ubi_volume *vol; |
162 | struct ubi_device *ubi; | 159 | struct ubi_device *ubi; |
163 | uint64_t tmp = to; | ||
164 | 160 | ||
165 | dbg_gen("write %zd bytes to offset %lld", len, to); | 161 | dbg_gen("write %zd bytes to offset %lld", len, to); |
166 | 162 | ||
@@ -173,8 +169,7 @@ static int gluebi_write(struct mtd_info *mtd, loff_t to, size_t len, | |||
173 | if (ubi->ro_mode) | 169 | if (ubi->ro_mode) |
174 | return -EROFS; | 170 | return -EROFS; |
175 | 171 | ||
176 | offs = do_div(tmp, mtd->erasesize); | 172 | lnum = div_u64_rem(to, mtd->erasesize, &offs); |
177 | lnum = tmp; | ||
178 | 173 | ||
179 | if (len % mtd->writesize || offs % mtd->writesize) | 174 | if (len % mtd->writesize || offs % mtd->writesize) |
180 | return -EINVAL; | 175 | return -EINVAL; |