]> git.sur5r.net Git - u-boot/commitdiff
arm64: mvebu: Update bubt command MMC block device access
authorKonstantin Porotchkin <kostap@marvell.com>
Sun, 8 Jan 2017 14:52:06 +0000 (16:52 +0200)
committerStefan Roese <sr@denx.de>
Wed, 25 Jan 2017 06:04:22 +0000 (07:04 +0100)
Update the MMC block device access code in bubt command
implementation according to the latest MMC driver changes.

Change-Id: Ie852ceefa0b040ffe1362bdb7815fcea9b2d923b
Signed-off-by: Konstantin Porotchkin <kostap@marvell.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Nadav Haklai <nadavh@marvell.com>
Cc: Neta Zur Hershkovits <neta@marvell.com>
Cc: Omri Itach <omrii@marvell.com>
Cc: Igal Liberman <igall@marvell.com>
Cc: Haim Boot <hayim@marvell.com>
Cc: Hanna Hawa <hannah@marvell.com>
cmd/mvebu/bubt.c

index 1cbfcf0863548eafdd823ead29455a03e8624a79..b752927e8c690eb18f0ff328c1e5af85cb3ac8d4 100644 (file)
@@ -18,6 +18,9 @@
 #include <usb.h>
 #include <fs.h>
 #include <mmc.h>
+#ifdef CONFIG_BLK
+#include <blk.h>
+#endif
 #include <u-boot/sha1.h>
 #include <u-boot/sha256.h>
 
@@ -116,7 +119,9 @@ static int mmc_burn_image(size_t image_size)
        ulong           blk_written;
        int             err;
        const u8        mmc_dev_num = CONFIG_SYS_MMC_ENV_DEV;
-
+#ifdef CONFIG_BLK
+       struct blk_desc *blk_desc;
+#endif
        mmc = find_mmc_device(mmc_dev_num);
        if (!mmc) {
                printf("No SD/MMC/eMMC card found\n");
@@ -144,13 +149,27 @@ static int mmc_burn_image(size_t image_size)
         * MMC/eMMC boots from LBA-0
         */
        start_lba = IS_SD(mmc) ? 1 : 0;
+#ifdef CONFIG_BLK
+       blk_count = image_size / mmc->write_bl_len;
+       if (image_size % mmc->write_bl_len)
+               blk_count += 1;
+
+       blk_desc = mmc_get_blk_desc(mmc);
+       if (!blk_desc) {
+               printf("Error - failed to obtain block descriptor\n");
+               return -ENODEV;
+       }
+       blk_written = blk_dwrite(blk_desc, start_lba, blk_count,
+                                (void *)get_load_addr());
+#else
        blk_count = image_size / mmc->block_dev.blksz;
        if (image_size % mmc->block_dev.blksz)
                blk_count += 1;
 
        blk_written = mmc->block_dev.block_write(mmc_dev_num,
-                                               start_lba, blk_count,
-                                               (void *)get_load_addr());
+                                                start_lba, blk_count,
+                                                (void *)get_load_addr());
+#endif /* CONFIG_BLK */
        if (blk_written != blk_count) {
                printf("Error - written %#lx blocks\n", blk_written);
                return -ENOSPC;