Pārlūkot izejas kodu

Fix --keep flag and add --verbose

Matthias Vogelgesang 8 gadi atpakaļ
vecāks
revīzija
71ca711f60
1 mainītis faili ar 16 papildinājumiem un 4 dzēšanām
  1. 16 4
      ddrio.c

+ 16 - 4
ddrio.c

@@ -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);