]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
bugfixes
authorhadaq <hadaq>
Tue, 11 Oct 2011 14:35:40 +0000 (14:35 +0000)
committerhadaq <hadaq>
Tue, 11 Oct 2011 14:35:40 +0000 (14:35 +0000)
libtrbnet/trbflash.c

index c52eddbece2ae809b0e6ec747b257b9da367bdac..85bf849df42735b12e3fb66e7188926667c858ec 100644 (file)
@@ -114,11 +114,10 @@ typedef struct {
   uint32_t compatibleManId[16];
   char allowedStringId[16][64];
   uint32_t numPages;
-  int sectorProtect;              /* single = 1, all = 1 */
 } FlashParam;
 
 static FlashParam flashParamRef;
-static const char trbflash_version[] = "$Revision: 2.33 $";
+static const char trbflash_version[] = "$Revision: 2.34 $";
 
 static uint32_t mdcFlashSelect = 1;
 
@@ -157,12 +156,11 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
   if (flashParam == NULL) return -1;
   
   flashParam->flashType = FLASH_INVALID;
-  flashParam->manId = 0x00;
+  flashParam->manId = 0xffffffff;
   flashParam->numPages = 0;
-  flashParam->sectorProtect = 0;
   for (i = 0; i < 16; i++) {
     flashParam->compatibleType[i] = FLASH_INVALID;
-    flashParam->compatibleManId[i] = 0x00;
+    flashParam->compatibleManId[i] = 0xffffffff;
     flashParam->allowedStringId[i][0] = '\0';
   }
       
@@ -173,7 +171,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x00461f;
     strcpy(flashParam->allowedStringId[0], "adcmv1");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
     
   case 0x3200:
@@ -181,7 +178,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x00471f;
     strcpy(flashParam->allowedStringId[0], "adcmv2");
     flashParam->numPages = 16384;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x3300:
@@ -190,7 +186,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x00471f;
     strcpy(flashParam->allowedStringId[0], "adcmv3");
     flashParam->numPages = 16384;
-    flashParam->sectorProtect = 1;
     break;
     
     /* MDC HUB */
@@ -199,7 +194,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "mdchub_fpga1234");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
     
   case 0x1250:
@@ -207,7 +201,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "mdchub_fpga5");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
     
     /* MDC OEP */
@@ -216,7 +209,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "mdc_oepb");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x2300:
@@ -225,7 +217,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "mdc_oepb");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
     
     /* SHOWER */
@@ -234,7 +225,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "shower_fpga1");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x4220:
@@ -242,7 +232,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "shower_fpga2");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x4230:
@@ -250,7 +239,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     flashParam->manId = 0x1520c2;
     strcpy(flashParam->allowedStringId[0], "adcmv3");
     flashParam->numPages = 8192;
-    flashParam->sectorProtect = 1;
     break;
     
     /* TRB3 */
@@ -260,7 +248,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     strcpy(flashParam->allowedStringId[0], "trb3_central");
     strcpy(flashParam->allowedStringId[1], "trb3_fpga5");
     flashParam->numPages = 32768;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x9100:
@@ -272,7 +259,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     strcpy(flashParam->allowedStringId[3], "trb3_fpga3");
     strcpy(flashParam->allowedStringId[4], "trb3_fpga4");
     flashParam->numPages = 32768;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x9110:
@@ -284,7 +270,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     strcpy(flashParam->allowedStringId[3], "trb3_fpga3");
     strcpy(flashParam->allowedStringId[4], "trb3_fpga4");
     flashParam->numPages = 32768;
-    flashParam->sectorProtect = 1;
     break;
   
   case 0x9120:
@@ -296,7 +281,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     strcpy(flashParam->allowedStringId[3], "trb3_fpga3");
     strcpy(flashParam->allowedStringId[4], "trb3_fpga4");
     flashParam->numPages = 32768;
-    flashParam->sectorProtect = 1;
     break;
 
   case 0x9130:
@@ -309,7 +293,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     strcpy(flashParam->allowedStringId[3], "trb3_fpga3");
     strcpy(flashParam->allowedStringId[4], "trb3_fpga4");
     flashParam->numPages = 32768;
-    flashParam->sectorProtect = 1;
     break;
 
   case 0x9140:
@@ -321,7 +304,6 @@ static int setFlashParam(FlashParam* flashParam, uint16_t hardwareId)
     strcpy(flashParam->allowedStringId[3], "trb3_fpga3");
     strcpy(flashParam->allowedStringId[4], "trb3_fpga4");
     flashParam->numPages = 32768;
-    flashParam->sectorProtect = 1;
     break;
  
   default:
@@ -468,7 +450,7 @@ static int checkStatus(uint16_t trb_address)
 
   ret = 0;
   for (i = 0; i < status; i += 2) {
-    if ((flashParamRef.manId == 0x01461f) || 
+    if ((flashParamRef.manId == 0x00461f) || 
         (flashParamRef.manId == 0x00471f)) {
       /* Check EPE Bit (ADCM and SHOWER) */
       if (((trbBuffer[i + 1] >> 5) & 0x01) == 1) {
@@ -560,8 +542,8 @@ static int initTransfer(uint16_t trb_address)
     
     /* Check here for flash group compatibility */
     do {
-      if (( flashParam.flashType == flashParamRef.flashType) || 
-          ( flashParam.flashType == flashParamRef.compatibleType[j])) {
+      if ((flashParam.flashType == flashParamRef.flashType) || 
+          (flashParam.flashType == flashParamRef.compatibleType[j])) {
         match = 1;
         break;
       }
@@ -606,7 +588,7 @@ static int initTransfer(uint16_t trb_address)
         break;
       }
       j++;
-    } while (flashParamRef.compatibleManId[j] != 0x00);
+    } while (flashParamRef.compatibleManId[j] != 0xffffffff);
     
     if (match == 0) {
       fprintf(logFile,
@@ -630,7 +612,7 @@ static int initTransfer(uint16_t trb_address)
   fprintf(stderr, "Found %d Endpoint(s) of group %s\n",
           counter, FlashTypeStr[flashParamRef.flashType]);
   
-  return 0;
+  return counter;
 }
 
 static int readPage(uint16_t trb_address, uint32_t pageNumber,
@@ -845,7 +827,7 @@ static int programImageBuffer(uint16_t trb_address,
 
     if ((mode != PMODE_VERIFY) && 
         ((bytesWritten > 0) || (writeInfoPage == 1))) {
-      if ((flashParamRef.manId == 0x01461f) ||
+      if ((flashParamRef.manId == 0x00461f) ||
           (flashParamRef.manId == 0x00471f)) {
         /* Enable writing */
         if (sendCommand(trb_address, 0x06 << 24, 0) == -1) {
@@ -869,7 +851,7 @@ static int programImageBuffer(uint16_t trb_address,
         return -1;
       }
       
-      if ((flashParamRef.manId == 0x01461f) ||
+      if ((flashParamRef.manId == 0x00461f) ||
           (flashParamRef.manId == 0x00471f)) {
         /* Unprotect sector */
         if (sendCommand(trb_address, 0x39 << 24 | (BLOCK_SIZE * block), 3)
@@ -933,7 +915,7 @@ static int programImageBuffer(uint16_t trb_address,
         }
       }
 
-      if ((flashParamRef.manId == 0x01461f) ||
+      if ((flashParamRef.manId == 0x00461f) ||
           (flashParamRef.manId == 0x00471f)) {
         /* Enable writing */
         if (sendCommand(trb_address, 0x06 << 24, 0x00) == -1) {
@@ -1444,6 +1426,7 @@ int main(int argc, char **argv)
     char *imageFileName;
     FILE *imageFile = NULL;
     unsigned int page;
+    int status = 0;
 
     if (argc - optind != 3) {
       usage(basename(argv[0]));
@@ -1465,7 +1448,8 @@ int main(int argc, char **argv)
       }
     }
 
-    if (initTransfer(trb_address) == -1) {
+    status = initTransfer(trb_address);
+    if (status |= 1)  {
       fprintf(stderr, "InitTransfer failed, aborting\n");
       exit(EXIT_FAILURE);
     }