diff options
author | Tom Rini | 2020-04-22 08:58:41 -0400 |
---|---|---|
committer | Tom Rini | 2020-04-22 08:58:41 -0400 |
commit | 2b63959e30f23ef3088dbed6626341c6d8371a66 (patch) | |
tree | 1ea89ae7672fbb34886d05c0f6eabfea4d0e00d3 /cmd | |
parent | 2f2031e647564be8121c05507fbec8e6c5bc0e63 (diff) | |
parent | 2448c34f9fc26d3c459e6e7b28c6357656bfa287 (diff) |
Merge tag 'mmc-2020-4-22' of https://gitlab.denx.de/u-boot/custodians/u-boot-mmc
- iproc_sdhci memory leak fix and enable R1B resp quirk
- more mmc cmds and several mmc updates from Heinirich
- Use bounce buffer for tmio sdhci
- Alignment check for tmio sdhci
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/Kconfig | 26 | ||||
-rw-r--r-- | cmd/mmc.c | 46 |
2 files changed, 61 insertions, 11 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig index 95a67e9d02c..6ce9e5521cd 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1060,21 +1060,34 @@ config CMD_MMC help MMC memory mapped support. +if CMD_MMC + +config CMD_BKOPS_ENABLE + bool "mmc bkops enable" + depends on CMD_MMC + default n + help + Enable command for setting manual background operations handshake + on a eMMC device. The feature is optionally available on eMMC devices + conforming to standard >= 4.41. + config CMD_MMC_RPMB bool "Enable support for RPMB in the mmc command" - depends on CMD_MMC + depends on SUPPORT_EMMC_RPMB help Enable the commands for reading, writing and programming the key for the Replay Protection Memory Block partition in eMMC. config CMD_MMC_SWRITE bool "mmc swrite" - depends on CMD_MMC && MMC_WRITE + depends on MMC_WRITE select IMAGE_SPARSE help Enable support for the "mmc swrite" command to write Android sparse images to eMMC. +endif + config CMD_MTD bool "mtd" depends on MTD @@ -1607,15 +1620,6 @@ config CMD_BSP option provides a way to control this. The commands that are enabled vary depending on the board. -config CMD_BKOPS_ENABLE - bool "mmc bkops enable" - depends on CMD_MMC - default n - help - Enable command for setting manual background operations handshake - on a eMMC device. The feature is optionally available on eMMC devices - conforming to standard >= 4.41. - config CMD_BLOCK_CACHE bool "blkcache - control and stats for block cache" depends on BLOCK_CACHE diff --git a/cmd/mmc.c b/cmd/mmc.c index 1860a3f2e5d..6142ec8e205 100644 --- a/cmd/mmc.c +++ b/cmd/mmc.c @@ -54,6 +54,8 @@ static void print_mmcinfo(struct mmc *mmc) if (!IS_SD(mmc) && mmc->version >= MMC_VERSION_4_41) { bool has_enh = (mmc->part_support & ENHNCD_SUPPORT) != 0; bool usr_enh = has_enh && (mmc->part_attr & EXT_CSD_ENH_USR); + u8 wp, ext_csd[MMC_MAX_BLOCK_LEN]; + int ret; #if CONFIG_IS_ENABLED(MMC_HW_PARTITIONING) puts("HC WP Group Size: "); @@ -90,6 +92,28 @@ static void print_mmcinfo(struct mmc *mmc) putc('\n'); } } + ret = mmc_send_ext_csd(mmc, ext_csd); + if (ret) + return; + wp = ext_csd[EXT_CSD_BOOT_WP_STATUS]; + for (i = 0; i < 2; ++i) { + printf("Boot area %d is ", i); + switch (wp & 3) { + case 0: + printf("not write protected\n"); + break; + case 1: + printf("power on protected\n"); + break; + case 2: + printf("permanently protected\n"); + break; + default: + printf("in reserved protection state\n"); + break; + } + wp >>= 2; + } } } static struct mmc *init_mmc_device(int dev, bool force_init) @@ -872,9 +896,30 @@ static int do_mmc_bkops_enable(cmd_tbl_t *cmdtp, int flag, } #endif +static int do_mmc_boot_wp(cmd_tbl_t *cmdtp, int flag, + int argc, char * const argv[]) +{ + int err; + struct mmc *mmc; + + mmc = init_mmc_device(curr_device, false); + if (!mmc) + return CMD_RET_FAILURE; + if (IS_SD(mmc)) { + printf("It is not an eMMC device\n"); + return CMD_RET_FAILURE; + } + err = mmc_boot_wp(mmc); + if (err) + return CMD_RET_FAILURE; + printf("boot areas protected\n"); + return CMD_RET_SUCCESS; +} + static cmd_tbl_t cmd_mmc[] = { U_BOOT_CMD_MKENT(info, 1, 0, do_mmcinfo, "", ""), U_BOOT_CMD_MKENT(read, 4, 1, do_mmc_read, "", ""), + U_BOOT_CMD_MKENT(wp, 1, 0, do_mmc_boot_wp, "", ""), #if CONFIG_IS_ENABLED(MMC_WRITE) U_BOOT_CMD_MKENT(write, 4, 0, do_mmc_write, "", ""), U_BOOT_CMD_MKENT(erase, 3, 0, do_mmc_erase, "", ""), @@ -944,6 +989,7 @@ U_BOOT_CMD( "mmc part - lists available partition on current mmc device\n" "mmc dev [dev] [part] - show or set current mmc device [partition]\n" "mmc list - lists available devices\n" + "mmc wp - power on write protect booot partitions\n" #if CONFIG_IS_ENABLED(MMC_HW_PARTITIONING) "mmc hwpartition [args...] - does hardware partitioning\n" " arguments (sizes in 512-byte blocks):\n" |