summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Löhle <CLoehle@hyperstone.com>2022-10-15 11:19:31 +0000
committerUlf Hansson <ulf.hansson@linaro.org>2022-10-24 18:59:46 +0200
commit34577b2378d6b931fec71e7a8422ee7f4e26173c (patch)
tree617913004fb318404d5f3e20789b7068c3df8e72
parentd939fb5c0fc9a06d5766fe426f6512f784a23010 (diff)
downloadmmc-utils-34577b2378d6b931fec71e7a8422ee7f4e26173c.tar.gz
mmc-utils: Allow for custom sanitize timeout
Some cards with certain preconditioning require a higher timeout when sanitizing. Let the user set the maximum timeout. Signed-off-by: Christian Loehle <cloehle@hyperstone.com> Reviewed-by: Avri Altman <avri.altman@wdc.com> Link: https://lore.kernel.org/r/4ddb5a5510d74645b2724d274c96ab02@hyperstone.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-rw-r--r--mmc.c2
-rw-r--r--mmc_cmds.c10
2 files changed, 8 insertions, 4 deletions
diff --git a/mmc.c b/mmc.c
index 6c56387..4c09b79 100644
--- a/mmc.c
+++ b/mmc.c
@@ -150,7 +150,7 @@ static struct Command commands[] = {
NULL
},
{ do_sanitize, -1,
- "sanitize", "<device>\n"
+ "sanitize", "<device> [timeout_ms]\n"
"Send Sanitize command to the <device>.\nThis will delete the unmapped memory region of the device.",
NULL
},
diff --git a/mmc_cmds.c b/mmc_cmds.c
index 3337ded..9e0571f 100644
--- a/mmc_cmds.c
+++ b/mmc_cmds.c
@@ -1986,12 +1986,16 @@ int do_sanitize(int nargs, char **argv)
{
int fd, ret;
char *device;
+ unsigned int timeout = 0;
- if (nargs != 2) {
- fprintf(stderr, "Usage: mmc sanitize </path/to/mmcblkX>\n");
+ if (nargs != 2 && nargs != 3) {
+ fprintf(stderr, "Usage: mmc sanitize </path/to/mmcblkX> [timeout_in_ms]\n");
exit(1);
}
+ if (nargs == 3)
+ timeout = strtol(argv[2], NULL, 10);
+
device = argv[1];
fd = open(device, O_RDWR);
@@ -2000,7 +2004,7 @@ int do_sanitize(int nargs, char **argv)
exit(1);
}
- ret = write_extcsd_value(fd, EXT_CSD_SANITIZE_START, 1, 0);
+ ret = write_extcsd_value(fd, EXT_CSD_SANITIZE_START, 1, timeout);
if (ret) {
fprintf(stderr, "Could not write 0x%02x to EXT_CSD[%d] in %s\n",
1, EXT_CSD_SANITIZE_START, device);