arm: socfpga: Enable all FPGA config support for Arria 10
[platform/kernel/u-boot.git] / drivers / dfu / dfu_mmc.c
index 5a9fb4a..926ccbd 100644 (file)
@@ -20,23 +20,6 @@ static unsigned char *dfu_file_buf;
 static long dfu_file_buf_len;
 static long dfu_file_buf_filled;
 
-static int mmc_access_part(struct dfu_entity *dfu, struct mmc *mmc, int part)
-{
-       int ret;
-
-       if (part == mmc->part_num)
-               return 0;
-
-       ret = mmc_switch_part(dfu->data.mmc.dev_num, part);
-       if (ret) {
-               error("Cannot switch to partition %d\n", part);
-               return ret;
-       }
-       mmc->part_num = part;
-
-       return 0;
-}
-
 static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
                        u64 offset, void *buf, long *len)
 {
@@ -66,8 +49,10 @@ static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
        }
 
        if (dfu->data.mmc.hw_partition >= 0) {
-               part_num_bkp = mmc->part_num;
-               ret = mmc_access_part(dfu, mmc, dfu->data.mmc.hw_partition);
+               part_num_bkp = mmc_get_blk_desc(mmc)->hwpart;
+               ret = blk_select_hwpart_devnum(IF_TYPE_MMC,
+                                              dfu->data.mmc.dev_num,
+                                              dfu->data.mmc.hw_partition);
                if (ret)
                        return ret;
        }
@@ -77,12 +62,11 @@ static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
              dfu->data.mmc.dev_num, blk_start, blk_count, buf);
        switch (op) {
        case DFU_OP_READ:
-               n = mmc->block_dev.block_read(dfu->data.mmc.dev_num, blk_start,
-                                             blk_count, buf);
+               n = blk_dread(mmc_get_blk_desc(mmc), blk_start, blk_count, buf);
                break;
        case DFU_OP_WRITE:
-               n = mmc->block_dev.block_write(dfu->data.mmc.dev_num, blk_start,
-                                              blk_count, buf);
+               n = blk_dwrite(mmc_get_blk_desc(mmc), blk_start, blk_count,
+                              buf);
                break;
        default:
                error("Operation not supported\n");
@@ -91,12 +75,16 @@ static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
        if (n != blk_count) {
                error("MMC operation failed");
                if (dfu->data.mmc.hw_partition >= 0)
-                       mmc_access_part(dfu, mmc, part_num_bkp);
+                       blk_select_hwpart_devnum(IF_TYPE_MMC,
+                                                dfu->data.mmc.dev_num,
+                                                part_num_bkp);
                return -EIO;
        }
 
        if (dfu->data.mmc.hw_partition >= 0) {
-               ret = mmc_access_part(dfu, mmc, part_num_bkp);
+               ret = blk_select_hwpart_devnum(IF_TYPE_MMC,
+                                              dfu->data.mmc.dev_num,
+                                              part_num_bkp);
                if (ret)
                        return ret;
        }
@@ -367,11 +355,11 @@ int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s)
 
        } else if (!strcmp(entity_type, "part")) {
                disk_partition_t partinfo;
-               block_dev_desc_t *blk_dev = &mmc->block_dev;
+               struct blk_desc *blk_dev = mmc_get_blk_desc(mmc);
                int mmcdev = second_arg;
                int mmcpart = third_arg;
 
-               if (get_partition_info(blk_dev, mmcpart, &partinfo) != 0) {
+               if (part_get_info(blk_dev, mmcpart, &partinfo) != 0) {
                        error("Couldn't find part #%d on mmc device #%d\n",
                              mmcpart, mmcdev);
                        return -ENODEV;