From: Stephen Warren <swar...@nvidia.com>

Nothing in dfu_mmc.c ever sets dfu->r_left. Consequently, reads from
MMC DFU altsettings would return 0 bytes.

Fix this by modifying dfu_read_medium_mmc() to set *len in the same way
that dfu_nand.c's dfu_read_medium_nand() does.

Signed-off-by: Stephen Warren <swar...@nvidia.com>
---
Even though this mirrors how dfu_nand.c works, it feels odd to do this
every time a HW read is performed, since I believe this can happen
multiple times in a single DFU read transaction. Surely *len (and hence
dfu->r_left) should be set up once when the altsetting is initialized,
likely by calling a separate function in struct dfu_entity?

P.S. Could you please add a "dfu" entry into doc/git-mailrc?
---
 drivers/dfu/dfu_mmc.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c
index 63cc876612c9..3addcef68bde 100644
--- a/drivers/dfu/dfu_mmc.c
+++ b/drivers/dfu/dfu_mmc.c
@@ -203,6 +203,7 @@ int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, 
void *buf,
 
        switch (dfu->layout) {
        case DFU_RAW_ADDR:
+               *len = dfu->data.mmc.lba_size * dfu->data.mmc.lba_blk_size;
                ret = mmc_block_op(DFU_OP_READ, dfu, offset, buf, len);
                break;
        case DFU_FS_FAT:
-- 
1.8.1.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to