diff options
author | Christian Löhle <CLoehle@hyperstone.com> | 2022-10-15 11:19:31 +0000 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2022-10-24 18:59:46 +0200 |
commit | 34577b2378d6b931fec71e7a8422ee7f4e26173c (patch) | |
tree | 617913004fb318404d5f3e20789b7068c3df8e72 | |
parent | d939fb5c0fc9a06d5766fe426f6512f784a23010 (diff) | |
download | mmc-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.c | 2 | ||||
-rw-r--r-- | mmc_cmds.c | 10 |
2 files changed, 8 insertions, 4 deletions
@@ -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 }, @@ -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); |