]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - common/fb_mmc.c
mmc: tegra: priv struct and naming cleanup
[karo-tx-uboot.git] / common / fb_mmc.c
index 3dad0ea8e37d0050d8a86467f63412f64552904f..8d0524da78f39c5b829bc71813c7549007482ccb 100644 (file)
@@ -18,8 +18,6 @@
 #define CONFIG_FASTBOOT_GPT_NAME GPT_ENTRY_NAME
 #endif
 
-static char *response_str;
-
 struct fb_mmc_sparse {
        struct blk_desc *dev_desc;
 };
@@ -55,6 +53,12 @@ static lbaint_t fb_mmc_sparse_write(struct sparse_storage *info,
        return blk_dwrite(dev_desc, blk, blkcnt, buffer);
 }
 
+static lbaint_t fb_mmc_sparse_reserve(struct sparse_storage *info,
+               lbaint_t blk, lbaint_t blkcnt)
+{
+       return blkcnt;
+}
+
 static void write_raw_image(struct blk_desc *dev_desc, disk_partition_t *info,
                const char *part_name, void *buffer,
                unsigned int download_bytes)
@@ -68,7 +72,7 @@ static void write_raw_image(struct blk_desc *dev_desc, disk_partition_t *info,
 
        if (blkcnt > info->size) {
                error("too large for partition: '%s'\n", part_name);
-               fastboot_fail(response_str, "too large for partition");
+               fastboot_fail("too large for partition");
                return;
        }
 
@@ -77,28 +81,25 @@ static void write_raw_image(struct blk_desc *dev_desc, disk_partition_t *info,
        blks = blk_dwrite(dev_desc, info->start, blkcnt, buffer);
        if (blks != blkcnt) {
                error("failed writing to device %d\n", dev_desc->devnum);
-               fastboot_fail(response_str, "failed writing to device");
+               fastboot_fail("failed writing to device");
                return;
        }
 
        printf("........ wrote " LBAFU " bytes to '%s'\n", blkcnt * info->blksz,
               part_name);
-       fastboot_okay(response_str, "");
+       fastboot_okay("");
 }
 
 void fb_mmc_flash_write(const char *cmd, void *download_buffer,
-                       unsigned int download_bytes, char *response)
+                       unsigned int download_bytes)
 {
        struct blk_desc *dev_desc;
        disk_partition_t info;
 
-       /* initialize the response buffer */
-       response_str = response;
-
        dev_desc = blk_get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV);
        if (!dev_desc || dev_desc->type == DEV_TYPE_UNKNOWN) {
                error("invalid mmc device\n");
-               fastboot_fail(response_str, "invalid mmc device");
+               fastboot_fail("invalid mmc device");
                return;
        }
 
@@ -108,21 +109,21 @@ void fb_mmc_flash_write(const char *cmd, void *download_buffer,
                if (is_valid_gpt_buf(dev_desc, download_buffer)) {
                        printf("%s: invalid GPT - refusing to write to flash\n",
                               __func__);
-                       fastboot_fail(response_str, "invalid GPT partition");
+                       fastboot_fail("invalid GPT partition");
                        return;
                }
                if (write_mbr_and_gpt_partitions(dev_desc, download_buffer)) {
                        printf("%s: writing GPT partitions failed\n", __func__);
-                       fastboot_fail(response_str,
+                       fastboot_fail(
                                      "writing GPT partitions failed");
                        return;
                }
                printf("........ success\n");
-               fastboot_okay(response_str, "");
+               fastboot_okay("");
                return;
        } else if (part_get_info_efi_by_name_or_alias(dev_desc, cmd, &info)) {
                error("cannot find partition: '%s'\n", cmd);
-               fastboot_fail(response_str, "cannot find partition");
+               fastboot_fail("cannot find partition");
                return;
        }
 
@@ -136,20 +137,21 @@ void fb_mmc_flash_write(const char *cmd, void *download_buffer,
                sparse.start = info.start;
                sparse.size = info.size;
                sparse.write = fb_mmc_sparse_write;
+               sparse.reserve = fb_mmc_sparse_reserve;
 
                printf("Flashing sparse image at offset " LBAFU "\n",
                       sparse.start);
 
                sparse.priv = &sparse_priv;
                write_sparse_image(&sparse, cmd, download_buffer,
-                                  download_bytes, response_str);
+                                  download_bytes);
        } else {
                write_raw_image(dev_desc, &info, cmd, download_buffer,
                                download_bytes);
        }
 }
 
-void fb_mmc_erase(const char *cmd, char *response)
+void fb_mmc_erase(const char *cmd)
 {
        int ret;
        struct blk_desc *dev_desc;
@@ -159,24 +161,21 @@ void fb_mmc_erase(const char *cmd, char *response)
 
        if (mmc == NULL) {
                error("invalid mmc device");
-               fastboot_fail(response_str, "invalid mmc device");
+               fastboot_fail("invalid mmc device");
                return;
        }
 
-       /* initialize the response buffer */
-       response_str = response;
-
        dev_desc = blk_get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV);
        if (!dev_desc || dev_desc->type == DEV_TYPE_UNKNOWN) {
                error("invalid mmc device");
-               fastboot_fail(response_str, "invalid mmc device");
+               fastboot_fail("invalid mmc device");
                return;
        }
 
        ret = part_get_info_efi_by_name_or_alias(dev_desc, cmd, &info);
        if (ret) {
                error("cannot find partition: '%s'", cmd);
-               fastboot_fail(response_str, "cannot find partition");
+               fastboot_fail("cannot find partition");
                return;
        }
 
@@ -192,14 +191,14 @@ 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, blks_start, blks_size);
+       blks = blk_derase(dev_desc, blks_start, blks_size);
        if (blks != blks_size) {
                error("failed erasing from device %d", dev_desc->devnum);
-               fastboot_fail(response_str, "failed erasing from device");
+               fastboot_fail("failed erasing from device");
                return;
        }
 
        printf("........ erased " LBAFU " bytes from '%s'\n",
               blks_size * info.blksz, cmd);
-       fastboot_okay(response_str, "");
+       fastboot_okay("");
 }