]> git.sur5r.net Git - u-boot/blobdiff - common/cmd_mmc.c
dm: x86: queensbay: Add an interrupt driver
[u-boot] / common / cmd_mmc.c
index 632ddae7a2f78fb9d2a07a9041b1f83d06286556..1c7156f19c5939867c30d52fdba0ffdcf3583c55 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <console.h>
 #include <mmc.h>
 
 static int curr_device = -1;
@@ -85,8 +86,12 @@ static void print_mmcinfo(struct mmc *mmc)
        printf("Tran Speed: %d\n", mmc->tran_speed);
        printf("Rd Block Len: %d\n", mmc->read_bl_len);
 
-       printf("%s version %d.%d\n", IS_SD(mmc) ? "SD" : "MMC",
-                       (mmc->version >> 8) & 0xf, mmc->version & 0xff);
+       printf("%s version %d.%d", IS_SD(mmc) ? "SD" : "MMC",
+                       EXTRACT_SDMMC_MAJOR_VERSION(mmc->version),
+                       EXTRACT_SDMMC_MINOR_VERSION(mmc->version));
+       if (EXTRACT_SDMMC_CHANGE_VERSION(mmc->version) != 0)
+               printf(".%d", EXTRACT_SDMMC_CHANGE_VERSION(mmc->version));
+       printf("\n");
 
        printf("High Capacity: %s\n", mmc->high_capacity ? "Yes" : "No");
        puts("Capacity: ");
@@ -106,7 +111,11 @@ static void print_mmcinfo(struct mmc *mmc)
                print_size(((u64)mmc->hc_wp_grp_size) << 9, "\n");
 
                puts("User Capacity: ");
-               print_size(mmc->capacity_user, usr_enh ? " ENH\n" : "\n");
+               print_size(mmc->capacity_user, usr_enh ? " ENH" : "");
+               if (mmc->wr_rel_set & EXT_CSD_WR_DATA_REL_USR)
+                       puts(" WRREL\n");
+               else
+                       putc('\n');
                if (usr_enh) {
                        puts("User Enhanced Start: ");
                        print_size(mmc->enh_user_start, "\n");
@@ -124,7 +133,11 @@ static void print_mmcinfo(struct mmc *mmc)
                        if (mmc->capacity_gp[i]) {
                                printf("GP%i Capacity: ", i+1);
                                print_size(mmc->capacity_gp[i],
-                                          is_enh ? " ENH\n" : "\n");
+                                          is_enh ? " ENH" : "");
+                               if (mmc->wr_rel_set & EXT_CSD_WR_DATA_REL_GP(i))
+                                       puts(" WRREL\n");
+                               else
+                                       putc('\n');
                        }
                }
        }
@@ -299,20 +312,14 @@ static int do_mmcrpmb(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_FAILURE;
        }
        /* Switch to the RPMB partition */
-       original_part = mmc->part_num;
-       if (mmc->part_num != MMC_PART_RPMB) {
-               if (mmc_switch_part(curr_device, MMC_PART_RPMB) != 0)
-                       return CMD_RET_FAILURE;
-               mmc->part_num = MMC_PART_RPMB;
-       }
+       original_part = mmc->block_dev.part_num;
+       if (mmc_select_hwpart(curr_device, MMC_PART_RPMB) != 0)
+               return CMD_RET_FAILURE;
        ret = cp->cmd(cmdtp, flag, argc, argv);
 
        /* Return to original partition */
-       if (mmc->part_num != original_part) {
-               if (mmc_switch_part(curr_device, original_part) != 0)
-                       return CMD_RET_FAILURE;
-               mmc->part_num = original_part;
-       }
+       if (mmc_select_hwpart(curr_device, original_part) != 0)
+               return CMD_RET_FAILURE;
        return ret;
 }
 #endif
@@ -338,7 +345,7 @@ static int do_mmc_read(cmd_tbl_t *cmdtp, int flag,
        printf("\nMMC read: dev # %d, block # %d, count %d ... ",
               curr_device, blk, cnt);
 
-       n = mmc->block_dev.block_read(curr_device, blk, cnt, addr);
+       n = mmc->block_dev.block_read(&mmc->block_dev, blk, cnt, addr);
        /* flush cache after read */
        flush_cache((ulong)addr, cnt * 512); /* FIXME */
        printf("%d blocks read: %s\n", n, (n == cnt) ? "OK" : "ERROR");
@@ -370,7 +377,7 @@ static int do_mmc_write(cmd_tbl_t *cmdtp, int flag,
                printf("Error: card is write protected!\n");
                return CMD_RET_FAILURE;
        }
-       n = mmc->block_dev.block_write(curr_device, blk, cnt, addr);
+       n = mmc->block_dev.block_write(&mmc->block_dev, blk, cnt, addr);
        printf("%d blocks written: %s\n", n, (n == cnt) ? "OK" : "ERROR");
 
        return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
@@ -398,7 +405,7 @@ static int do_mmc_erase(cmd_tbl_t *cmdtp, int flag,
                printf("Error: card is write protected!\n");
                return CMD_RET_FAILURE;
        }
-       n = mmc->block_dev.block_erase(curr_device, blk, cnt);
+       n = mmc->block_dev.block_erase(&mmc->block_dev, blk, cnt);
        printf("%d blocks erased: %s\n", n, (n == cnt) ? "OK" : "ERROR");
 
        return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
@@ -470,7 +477,7 @@ static int do_mmc_dev(cmd_tbl_t *cmdtp, int flag,
                printf("mmc%d is current device\n", curr_device);
        else
                printf("mmc%d(part %d) is current device\n",
-                      curr_device, mmc->part_num);
+                      curr_device, mmc->block_dev.hwpart);
 
        return CMD_RET_SUCCESS;
 }
@@ -734,7 +741,7 @@ static int do_mmc_rst_func(cmd_tbl_t *cmdtp, int flag,
        dev = simple_strtoul(argv[1], NULL, 10);
        enable = simple_strtoul(argv[2], NULL, 10);
 
-       if (enable > 2 || enable < 0) {
+       if (enable > 2) {
                puts("Invalid RST_n_ENABLE value\n");
                return CMD_RET_USAGE;
        }