common/memsize.c: Simplify RAM size detection
[oweals/u-boot.git] / common / fb_mmc.c
index e4fbd8dfa7562749d306e45e2b9426328ecb57cc..6e742dac56f7884ebd866ab35730412b4e255b15 100644 (file)
@@ -13,6 +13,7 @@
 #include <part.h>
 #include <sparse_format.h>
 #include <mmc.h>
+#include <div64.h>
 
 #ifndef CONFIG_FASTBOOT_GPT_NAME
 #define CONFIG_FASTBOOT_GPT_NAME GPT_ENTRY_NAME
@@ -57,7 +58,7 @@ static int fb_mmc_sparse_write(struct sparse_storage *storage,
        block_dev_desc_t *dev_desc = sparse->dev_desc;
        int ret;
 
-       ret = dev_desc->block_write(dev_desc->dev, offset, size, data);
+       ret = dev_desc->block_write(dev_desc, offset, size, data);
        if (!ret)
                return -EIO;
 
@@ -73,7 +74,7 @@ static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t *info,
 
        /* determine number of blocks to write */
        blkcnt = ((download_bytes + (info->blksz - 1)) & ~(info->blksz - 1));
-       blkcnt = blkcnt / info->blksz;
+       blkcnt = lldiv(blkcnt, info->blksz);
 
        if (blkcnt > info->size) {
                error("too large for partition: '%s'\n", part_name);
@@ -83,8 +84,7 @@ static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t *info,
 
        puts("Flashing Raw Image\n");
 
-       blks = dev_desc->block_write(dev_desc->dev, info->start, blkcnt,
-                                    buffer);
+       blks = dev_desc->block_write(dev_desc, info->start, blkcnt, buffer);
        if (blks != blkcnt) {
                error("failed writing to device %d\n", dev_desc->dev);
                fastboot_fail(response_str, "failed writing to device");
@@ -205,7 +205,7 @@ void fb_mmc_erase(const char *cmd, char *response)
        printf("Erasing blocks " LBAFU " to " LBAFU " due to alignment\n",
               blks_start, blks_start + blks_size);
 
-       blks = dev_desc->block_erase(dev_desc->dev, blks_start, blks_size);
+       blks = dev_desc->block_erase(dev_desc, blks_start, blks_size);
        if (blks != blks_size) {
                error("failed erasing from device %d", dev_desc->dev);
                fastboot_fail(response_str, "failed erasing from device");