# HG changeset patch # User Michael Spacefalcon # Date 1402966387 0 # Node ID 0b8e5072abde64d08989a6cbe3629f4a7b191ce2 # Parent a212b4968b29d07c092903328c3ea0f5fe24ba29 fc-loadtool flash: reset to read mode added where appropriate diff -r a212b4968b29 -r 0b8e5072abde loadtools/flmain.c --- a/loadtools/flmain.c Tue Jun 17 00:33:05 2014 +0000 +++ b/loadtools/flmain.c Tue Jun 17 00:53:07 2014 +0000 @@ -200,6 +200,7 @@ extern int flashcmd_program_m0(); extern int flashcmd_program_srec(); extern int flashcmd_quickprog(); +extern int flashcmd_reset(); extern int flashcmd_sectors(); static struct cmdtab { @@ -216,6 +217,7 @@ {"program-m0", flashcmd_program_m0}, {"program-srec", flashcmd_program_srec}, {"quickprog", flashcmd_quickprog}, + {"reset", flashcmd_reset}, {"sectors", flashcmd_sectors}, {0, 0} }; diff -r a212b4968b29 -r 0b8e5072abde loadtools/flmisc.c --- a/loadtools/flmisc.c Tue Jun 17 00:33:05 2014 +0000 +++ b/loadtools/flmisc.c Tue Jun 17 00:53:07 2014 +0000 @@ -46,6 +46,9 @@ (u_long) bi->geom->total_size); return(-1); } + /* reset flash to read mode */ + if (bi->ops->reset_cmd(bi) < 0) + return(-1); sprintf(targ_start, "%lx", (u_long) bi->base_addr + offset); sprintf(targ_len, "%lx", len); targv[0] = "blankchk"; @@ -111,6 +114,9 @@ "internal bug: bad format in flashcmd_dump2file()\n"); return(-1); } + /* reset flash to read mode */ + if (bi->ops->reset_cmd(bi) < 0) + return(-1); return loadtool_memdump(bi->base_addr + offset, dumplen, argv[2], format); } @@ -212,3 +218,18 @@ return(-1); return tpinterf_pass_output(1); } + +flashcmd_reset(argc, argv, bank) + char **argv; +{ + struct flash_bank_info *bi; + + if (argc > 2) { + fprintf(stderr, "error: too many arguments\n"); + return(-1); + } + if (flash_get_cfi(bank) < 0) + return(-1); + bi = flash_bank_info + bank; + return bi->ops->reset_cmd(bi); +}