This patch fixes a bug related to mmc writes.

When doing fatwrites on an SD-Card, MMC bus problems can occur. Depending
on the size of the file, "MMC0: Bus busy timeout!" is reported, resulting
in an SD-Card that is no longer responding.
It appears to be, that set_cluster can be called with a size being zero.
That can be with a file that has a size being an exact multiple
(including 0) of the clustersize, but also for files that are smaller than
the size of one cluster.
The same problem occurs if the "mmc write" command is given with a block
count being 0.

By adding a check for the block count being zero in mmc_write_blocks
(drivers/mmc.c), this problem is solved.

Signed-off-by: Ruud Commandeur <rcommand...@clb.nl>
Cc: Tom Rini <tr...@ti.com>
Cc: Benoît Thébaudeau <benoit.thebaud...@advansee.com>
Cc: Mats Karrman <mats.karr...@tritech.se>
Cc: Andy Fleming <aflem...@gmail.com>

Index: drivers/mmc/mmc.c
===================================================================
--- drivers/mmc/mmc.c   (revision 9)
+++ drivers/mmc/mmc.c   (revision 35)
@@ -280,10 +280,12 @@
                return 0;
        }
 
-       if (blkcnt > 1)
-               cmd.cmdidx = MMC_CMD_WRITE_MULTIPLE_BLOCK;
-       else
+       if (blkcnt == 0)
+               return 0;
+       else if (blkcnt == 1)
                cmd.cmdidx = MMC_CMD_WRITE_SINGLE_BLOCK;
+       else
+               cmd.cmdidx = MMC_CMD_WRITE_MULTIPLE_BLOCK;
 
        if (mmc->high_capacity)
                cmd.cmdarg = start;
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to