
Hi,
On 3/30/20 2:24 PM, Heinrich Schuchardt wrote:
Boot partitions of eMMC devices can be power on or permanently write protected. Let the 'mmc info' command display the protection state.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
cmd/mmc.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
diff --git a/cmd/mmc.c b/cmd/mmc.c index 6f3cb85cc0..d62c85e439 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;
Is it really needed to call mmc_send_ext_csd() at here. ext_csd register value was already read somewhere.
Best Regards, Jaehoon Chung
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) -- 2.25.1