]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
added -D decimal output display option to trbcmd
authorLudwig Maier <lmaier@bia.e12.ph.tum.de>
Fri, 29 Nov 2013 20:27:56 +0000 (21:27 +0100)
committerLudwig Maier <lmaier@bia.e12.ph.tum.de>
Fri, 29 Nov 2013 20:27:56 +0000 (21:27 +0100)
libtrbnet/trbcmd.c
pexor/kernel-module/pexor_trb.c

index c0b8265e2f320be70ebe81a7fe19e9d3604b4985..ab462bb532a1f74886c7e47fd57b7c4ebf8d8576 100644 (file)
@@ -29,6 +29,7 @@ extern int optind, opterr, optopt;
 #endif
 
 static int hexMode = HEXMODE;
+static int decMode = 0;
 
 static const char trbcmd_version[] = "Revision " TRBCMD_VERSION;
 
@@ -96,7 +97,7 @@ static void logError(int type, const char* format, ...)
 void usage(const char *progName)
 {
   fprintf(stdout, "Usage: %s [-h] [-f script-file] [-n number] [-s time] "
-          "[-d level] [-H] [-V] <COMMAND>\n", progName);
+          "[-d level] [-H] [-D] [-V] <COMMAND>\n", progName);
   fprintf(stdout, "Options:\n");
   fprintf(stdout, "  -h    give this help\n");
   fprintf(stdout, "  -f    execute commands given in script-file\n");
@@ -110,6 +111,8 @@ void usage(const char *progName)
   fprintf(stdout,
           "  -H    hex-mode: all arguments will be interpreted "
           "as hexadecimal-numbers\n");
+  fprintf(stdout,
+          "  -D    dec-mode: display register values as decimal numbers\n");
   fprintf(stdout, "  -V    version number\n");
   fprintf(stdout, "\nCommands:\n");
   fprintf(stdout, "   r <trbaddress> <register>                        -> "
@@ -198,16 +201,17 @@ int start(int argc, char **argv)
   int i;
 
 #ifdef PEXOR
-  const char optString[] = "+hf:n:d:s:HVD";
+  const char optString[] = "+hf:n:d:s:HDMV";
   pexor_dma = 1;
 #else
-  const char optString[] = "+hf:n:d:s:HV";
+  const char optString[] = "+hf:n:d:s:HDV";
 #endif
-
+  
   trb_debug = 0;
   for (i = 0; i < CMD_MAX_ARGS; i++) {
     cmd[i][0] = 0;
   }
+  
   /* Parse Arguments */
   optind = 1;
   while ((opt = getopt(argc, argv, optString)) != -1) {
@@ -233,13 +237,16 @@ int start(int argc, char **argv)
     case 'H':
       hexMode = 1;
       break;
+    case 'D':
+      decMode = 1;
+      break;
     case 'V':
       printf("%s %s, using libtrbnet %s\n",
              basename(argv[0]), trbcmd_version, trbnet_version);
       return 0;
       break;
 #ifdef PEXOR
-    case 'D':
+    case 'M':
       pexor_dma = 0;
       break;
 #endif
@@ -365,7 +372,9 @@ int start(int argc, char **argv)
           return -1;
         } else {
           for (i = 0; i < status; i += 2) {
-            fprintf(stdout, "0x%04x  0x%08x\n", buffer[i], buffer[i + 1]);
+            fprintf(stdout, 
+                    (decMode == 0 ? "0x%04x  0x%08x\n" : "0x%04x  %d\n"),  
+                    buffer[i], buffer[i + 1]);
           }
 
           /* Check Status-Bits */
@@ -406,7 +415,10 @@ int start(int argc, char **argv)
           return -1;
         } else {
           for (i = 0; i < status; i += 3) {
-            fprintf(stdout, "0x%04x  0x%08x 0x%04x\n",
+            fprintf(stdout, 
+                    (decMode == 0 
+                     ? "0x%04x  0x%08x 0x%04x\n" 
+                     : "0x%04x  %d %d\n"),
                     buffer[i], buffer[i + 1], buffer[i + 2]);
           }
 
@@ -499,7 +511,8 @@ int start(int argc, char **argv)
             len = (*p >> 16) & 0xffff;
             fprintf(stdout, "H: 0x%04x  0x%04x\n", (*p++) & 0xffff, len);
             for (i = 0; (i < len) && (p < end); i++) {
-              fprintf(stdout, "0x%04x  0x%08x\n",
+              fprintf(stdout, 
+                      (decMode == 0 ? "0x%04x  0x%08x\n" : "0x%04x  %d\n"),
                       (option == 0 ? reg_address + i : i),
                       *p++);
             }
@@ -559,7 +572,10 @@ int start(int argc, char **argv)
             len = (*p >> 16) & 0xffff;
             fprintf(stdout, "H: 0x%04x  0x%04x\n", (*p++) & 0xffff, len);
             for (i = 0; (i < len) && ((p + 1) < end); i++) {
-              fprintf(stdout, "0x%04x  0x%08x  0x%04x\n",
+              fprintf(stdout, 
+                      (decMode == 0 
+                       ? "0x%04x  0x%08x  0x%04x\n"
+                       : "0x%04x  %d  %d\n"),
                       (option == 0 ? reg_address + i : i),
                       *p, *(p + 1));
               p += 2;
index 3818b6d1dd0f6a00b44b4081c9bb71ba5d3cb107..f8d7fa29c23da1e5297b1041e1d59860ad292d0c 100644 (file)
@@ -1434,13 +1434,18 @@ int pexor_ioctl_trbnet_request(struct pexor_privdata* priv,
           /* reset DMA */
           iowrite32_mb(PEXOR_TRB_DMA_RESET, priv->pexor.dma_control_stat);
           udelay(1000);
-          /* do we need to flush the fifo-buffer, no libtrbnet takes care */
+          
+          /* sync current sg-entry back to CPU */
+          dma_sync_single_for_cpu(priv->class_dev,
+                                  sg_dma_address(&priv->dma.sglist[sg_ctr]),
+                                  sg_dma_len(&priv->dma.sglist[sg_ctr]),
+                                  DMA_FROM_DEVICE);
           status = -201;
           goto OUT_IOCTL;
         }
       }
       
-      /* sync current sg-entry to CPU */
+      /* sync current sg-entry back to CPU */
       dma_sync_single_for_cpu(priv->class_dev,
                               sg_dma_address(&priv->dma.sglist[sg_ctr]),
                               sg_dma_len(&priv->dma.sglist[sg_ctr]),