|
@@ -32,6 +32,7 @@ typedef struct {
|
|
|
const char *input;
|
|
|
const char *output;
|
|
|
bool keep;
|
|
|
+ bool verbose;
|
|
|
size_t size;
|
|
|
enum {
|
|
|
COPY_UINT64 = 0,
|
|
@@ -46,6 +47,7 @@ usage (void)
|
|
|
printf ("Usage: ddr [OPTION] [FILE]\n"
|
|
|
"Options:\n"
|
|
|
" -h, --help Show this help message and exit\n"
|
|
|
+ " -v, --verbose Be more verbose\n"
|
|
|
" -k, --keep-data Keep data and don't reset DMA\n"
|
|
|
" -o, --output Output filename\n"
|
|
|
" -i, --input Input filename\n"
|
|
@@ -58,6 +60,7 @@ parse_options (int argc, char *const *argv, Options *opts)
|
|
|
{
|
|
|
enum {
|
|
|
OPT_HELP = 'h',
|
|
|
+ OPT_VERBOSE = 'v',
|
|
|
OPT_KEEP = 'k',
|
|
|
OPT_INPUT = 'i',
|
|
|
OPT_OUTPUT = 'o',
|
|
@@ -67,6 +70,7 @@ parse_options (int argc, char *const *argv, Options *opts)
|
|
|
|
|
|
static struct option long_options[] = {
|
|
|
{ "help", no_argument, 0, OPT_HELP },
|
|
|
+ { "verbose", no_argument, 0, OPT_VERBOSE },
|
|
|
{ "keep", no_argument, 0, OPT_KEEP },
|
|
|
{ "input", required_argument, 0, OPT_INPUT },
|
|
|
{ "output", required_argument, 0, OPT_OUTPUT },
|
|
@@ -85,11 +89,14 @@ parse_options (int argc, char *const *argv, Options *opts)
|
|
|
|
|
|
memset (opts, 0, sizeof (Options));
|
|
|
|
|
|
- while ((ret = getopt_long (argc, argv, "i:o:s:c:kh", long_options, &index)) != -1) {
|
|
|
+ while ((ret = getopt_long (argc, argv, "i:o:s:c:khv", long_options, &index)) != -1) {
|
|
|
switch (ret) {
|
|
|
case OPT_HELP:
|
|
|
usage ();
|
|
|
exit (0);
|
|
|
+ case OPT_VERBOSE:
|
|
|
+ opts->verbose = true;
|
|
|
+ break;
|
|
|
case OPT_KEEP:
|
|
|
opts->keep = true;
|
|
|
break;
|
|
@@ -288,11 +295,16 @@ main (int argc, char const* argv[])
|
|
|
WR32_sleep (HF_REG_DEBUG_COMPLETER_RESET, 1);
|
|
|
WR32_sleep (HF_REG_DEBUG_COMPLETER_RESET, 0);
|
|
|
|
|
|
- if (!opts.keep)
|
|
|
- reset_ddr_data (pci, bar, &opts);
|
|
|
+ if (opts.input != NULL) {
|
|
|
+ if (!opts.keep) {
|
|
|
+ if (opts.verbose)
|
|
|
+ printf ("Reset DDR and data\n");
|
|
|
+
|
|
|
+ reset_ddr_data (pci, bar, &opts);
|
|
|
+ }
|
|
|
|
|
|
- if (opts.input != NULL)
|
|
|
write_to_ddr (pci, bar, &opts);
|
|
|
+ }
|
|
|
|
|
|
if (opts.output != NULL)
|
|
|
read_from_ddr (pci, bar, &opts);
|