From: drolevar@gmail.com
To: linux-mtd@lists.infradead.org
Cc: Andrij Abyzov <drolevar@gmail.com>
Subject: [PATCH v2] flashcp: Add option -A/--erase-all
Date: Mon, 21 Oct 2019 12:10:37 +0200 [thread overview]
Message-ID: <20191021101037.96187-1-drolevar@gmail.com> (raw)
From: Andrij Abyzov <drolevar@gmail.com>
Sometimes there's a need to erase the whole device when
programming an image, and not just the area under the
image itself.
Therefore, option -A/--erase-all has been added which
erases the whole device before writing the image.
Signed-off-by: Andrij Abyzov <drolevar@gmail.com>
---
misc-utils/flashcp.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/misc-utils/flashcp.c b/misc-utils/flashcp.c
index c46a5b4..b6ad2f9 100644
--- a/misc-utils/flashcp.c
+++ b/misc-utils/flashcp.c
@@ -66,6 +66,7 @@
#define FLAG_HELP 0x02
#define FLAG_FILENAME 0x04
#define FLAG_DEVICE 0x08
+#define FLAG_ERASE_ALL 0x10
/* error levels */
#define LOG_NORMAL 1
@@ -89,12 +90,13 @@ static NORETURN void showusage(bool error)
"\n"
"Flash Copy - Written by Abraham van der Merwe <abraham@2d3d.co.za>\n"
"\n"
- "usage: %1$s [ -v | --verbose ] <filename> <device>\n"
+ "usage: %1$s [ -v | --verbose | -A | --erase-all ] <filename> <device>\n"
" %1$s -h | --help\n"
" %1$s -V | --version\n"
"\n"
" -h | --help Show this help message\n"
" -v | --verbose Show progress reports\n"
+ " -A | --erase-all Erases the whole device regardless of the image size\n"
" -V | --version Show version information and exit\n"
" <filename> File which you want to copy to flash\n"
" <device> Flash device to write to (e.g. /dev/mtd0, /dev/mtd1, etc.)\n"
@@ -179,10 +181,11 @@ int main (int argc,char *argv[])
for (;;) {
int option_index = 0;
- static const char *short_options = "hvV";
+ static const char *short_options = "hvAV";
static const struct option long_options[] = {
{"help", no_argument, 0, 'h'},
{"verbose", no_argument, 0, 'v'},
+ {"erase-all", no_argument, 0, 'A'},
{"version", no_argument, 0, 'V'},
{0, 0, 0, 0},
};
@@ -202,6 +205,10 @@ int main (int argc,char *argv[])
flags |= FLAG_VERBOSE;
DEBUG("Got FLAG_VERBOSE\n");
break;
+ case 'A':
+ flags |= FLAG_ERASE_ALL;
+ DEBUG("Got FLAG_ERASE_ALL\n");
+ break;
case 'V':
common_print_version();
exit(EXIT_SUCCESS);
@@ -257,8 +264,16 @@ int main (int argc,char *argv[])
#warning "Check for smaller erase regions"
erase.start = 0;
- erase.length = (filestat.st_size + mtd.erasesize - 1) / mtd.erasesize;
- erase.length *= mtd.erasesize;
+
+ if (flags & FLAG_ERASE_ALL)
+ {
+ erase.length = mtd.size;
+ }
+ else
+ {
+ erase.length = (filestat.st_size + mtd.erasesize - 1) / mtd.erasesize;
+ erase.length *= mtd.erasesize;
+ }
if (flags & FLAG_VERBOSE)
{
--
2.20.1
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next reply other threads:[~2019-10-21 10:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-21 10:10 drolevar [this message]
2019-10-28 7:13 ` [PATCH v2] flashcp: Add option -A/--erase-all David Oberhollenzer
2019-10-22 8:18 aabyzov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191021101037.96187-1-drolevar@gmail.com \
--to=drolevar@gmail.com \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).