We want to see if the requested start or total block count are
unaligned. We discard the whole numbers and only care about the
remainder. Update the code to use div_u64_rem here and add a comment.
Cc: Hans de Goede hdego...@redhat.com
Cc: Pantelis Antoniou pantelis.anton...@konsulko.com
Cc: Bernhard Nortmann bernhard.nortm...@web.de
Reported-by: Simon Glass s...@chromium.org
Signed-off-by: Tom Rini tr...@konsulko.com
---
drivers/mmc/mmc_write.c | 12 +++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c
index 3db9669..7aea7e9 100644
--- a/drivers/mmc/mmc_write.c
+++ b/drivers/mmc/mmc_write.c
@@ -10,6 +10,8 @@
#include config.h
#include common.h
#include part.h
+#include div64.h
+#include linux/math64.h
#include mmc_private.h
static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt)
@@ -66,6 +68,7 @@ err_out:
unsigned long mmc_berase(int dev_num, lbaint_t start, lbaint_t blkcnt)
{
int err = 0;
+ u32 start_rem, blkcnt_rem;
struct mmc *mmc = find_mmc_device(dev_num);
lbaint_t blk = 0, blk_r = 0;
int timeout = 1000;
@@ -73,7 +76,14 @@ unsigned long mmc_berase(int dev_num, lbaint_t start,
lbaint_t blkcnt)
if (!mmc)
return -1;
- if ((start % mmc-erase_grp_size) || (blkcnt % mmc-erase_grp_size))
+ /*
+* We want to see if the requested start or total block count are
+* unaligned. We discard the whole numbers and only care about the
+* remainder.
+*/
+ err = div_u64_rem(start, mmc-erase_grp_size, start_rem);
+ err = div_u64_rem(blkcnt, mmc-erase_grp_size, blkcnt_rem);
+ if (start_rem || blkcnt_rem)
printf(\n\nCaution! Your devices Erase group is 0x%x\n
The erase range would be change to
0x LBAF ~0x LBAF \n\n,
--
1.7.9.5
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot