void Checkversion(void)
{
	u16 boardid;

#if defined(CONFIG_MACH_PICASSO) || defined(CONFIG_MACH_ACER_MAYA)
	switch(get_sku_id()){
		case BOARD_PICASSO_3G:
			printk( KERN_ERR "%s: this is 3G SKU\n",DRIVER_NAME);
			boardid = BoardID();
			if(boardid == 0xfefe)
			{
				Boardversion = NOTPVT;
				printk( KERN_ERR "%s: EC firmware is not supported, now set NOTPVT\n",
					DRIVER_NAME);
			} else {
				if(boardid == 2)
				{
					printk( KERN_ERR "%s: this is not after PVT\n",DRIVER_NAME);
					Boardversion = NOTPVT;
				} else if (boardid > 2) {
					Boardversion = PVT_AFTER;
				}
			}
			break;
		case BOARD_PICASSO_WIFI:
			printk( KERN_ERR "%s: this is WIFI SKU\n",DRIVER_NAME);
			Boardversion = WIFISKU;
			break;
		default:
			printk( KERN_ERR "%s: this is NOTPVT\n",DRIVER_NAME);
			Boardversion = NOTPVT;
			break;
	}
#endif

#if defined CONFIG_MACH_VANGOGH
	switch(get_sku_id()){
		case BOARD_VANGOGH_3G:
                        pr_info("%s: this is 3G SKU\n",DRIVER_NAME);
			Boardversion = VANGOGH3GSKU;
			break;
		case BOARD_VANGOGH_WIFI:
			printk( KERN_ERR "%s: this is WIFI SKU\n",DRIVER_NAME);
			Boardversion = WIFISKU;
			break;
		default:
                        printk( KERN_ERR "%s: this is not WIFI OR 3G SKU\n",DRIVER_NAME);
			Boardversion = NOWIFIOR3G;
			break;
        }

#endif

}
Beispiel #2
0
int FinalTest(int crateNum, uint32_t slotMask, uint32_t testMask, int skip)
{

  int updateDB = 1;
  lprintf("*** Starting Final Test ****************\n");

  JsonNode *ftDocs[16];
  char comments[1000];
  memset(comments,'\0',1000);
  int errors;
  // initialize the crate
  errors = CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0);
  if (errors){
    lprintf("Problem initializing the crate, exiting final test\n");
    return -1;
  }

  errors = MTCInit(1); 
  if (errors){
    lprintf("Problem intializing the mtcd, exiting final test\n");
  }

  lprintf("----------------------------------------\n");
  lprintf("If any boards could not initialize properly, type \"quit\" now "
      "to exit the test.\n Otherwise hit enter to continue.\n");
  contConnection->GetInput(comments,1000);
  if (strncmp("quit",comments,4) == 0){
    lprintf("Exiting final test\n");
    lprintf("****************************************\n");
    return 0;
  }

  for (int i=0;i<16;i++){
    if ((0x1<<i) & slotMask){
      GetNewID(finalTestIDs[crateNum][i]);
      ftDocs[i] = json_mkobject();
    }
  }

  lprintf("Now starting board_id\n");
  BoardID(crateNum,slotMask);
  lprintf("----------------------------------------\n");

  if (!skip && updateDB){
    for (int i=0;i<16;i++){
      if ((0x1<<i) & slotMask){
        lprintf("Please enter any comments for slot %i motherboard now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"fec_comments",json_mkstring(comments));
        lprintf("Has this slot been refurbished? (y/n)\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"refurbished",json_mkbool(comments[0] == 'y'));
        lprintf("Has this slot been cleaned? (y/n)\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"cleaned",json_mkbool(comments[0] == 'y'));
        lprintf("Time to measure resistance across analog outs and cmos address lines. For the cmos address lines"
            "it's easier if you do it during the fifo mod\n");
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"analog_out_res",json_mkstring(comments));
        lprintf("Please enter any comments for slot %i db 0 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db0_comments",json_mkstring(comments));
        lprintf("Please enter any comments for slot %i db 1 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db1_comments",json_mkstring(comments));
        lprintf("Please enter any comments for slot %i db 2 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db2_comments",json_mkstring(comments));
        lprintf("Please enter any comments for slot %i db 3 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db3_comments",json_mkstring(comments));
        lprintf("Please enter dark matter measurements for slot %i db 0 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db0_dark_matter",json_mkstring(comments));
        lprintf("Please enter dark matter measurements for slot %i db 1 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db1_dark_matter",json_mkstring(comments));
        lprintf("Please enter dark matter measurements for slot %i db 2 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db2_dark_matter",json_mkstring(comments));
        lprintf("Please enter dark matter measurements for slot %i db 3 now.\n",i);
        contConnection->GetInput(comments);
        json_append_member(ftDocs[i],"db3_dark_matter",json_mkstring(comments));
      }
    }


    lprintf("Enter N100 DC offset\n");
    contConnection->GetInput(comments);
    for (int i=0;i<16;i++){
      if ((0x1<<i) & slotMask){
        json_append_member(ftDocs[i],"dc_offset_n100",json_mkstring(comments));
      }
    }
    lprintf("Enter N20 DC offset\n");
    contConnection->GetInput(comments);
    for (int i=0;i<16;i++){
      if ((0x1<<i) & slotMask){
        json_append_member(ftDocs[i],"dc_offset_n20",json_mkstring(comments));
      }
    }
    lprintf("Enter esum hi DC offset\n");
    contConnection->GetInput(comments);
    for (int i=0;i<16;i++){
      if ((0x1<<i) & slotMask){
        json_append_member(ftDocs[i],"dc_offset_esumhi",json_mkstring(comments));
      }
    }
    lprintf("Enter esum lo DC offset\n");
    contConnection->GetInput(comments);
    for (int i=0;i<16;i++){
      if ((0x1<<i) & slotMask){
        json_append_member(ftDocs[i],"dc_offset_esumlo",json_mkstring(comments));
      }
    }

    lprintf("Thank you. Please hit enter to continue with the rest of final test. This may take a while.\n");
    contConnection->GetInput(comments);
  }

  // update the database
  if (updateDB){
  for (int i=0;i<16;i++){
    if ((0x1<<i) & slotMask){
      json_append_member(ftDocs[i],"type",json_mkstring("final_test"));
      PostDebugDocWithID(crateNum, i, finalTestIDs[crateNum][i], ftDocs[i]);
    }
  }
  }

  lprintf("----------------------------------------\n");

  int testCounter = 0;

  if ((0x1<<testCounter) & testMask)
    FECTest(crateNum,slotMask,updateDB,1);
  testCounter++;

  if ((0x1<<testCounter) & testMask)
    VMon(crateNum,slotMask,updateDB,1);
  testCounter++;
  if ((0x1<<testCounter) & testMask)
    CGTTest(crateNum,slotMask,0xFFFFFFFF,updateDB,1);
  testCounter++;
  CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0);
  if ((0x1<<testCounter) & testMask)
    PedRun(crateNum,slotMask,0xFFFFFFFF,0,DEFAULT_GT_DELAY,DEFAULT_PED_WIDTH,50,1000,300,updateDB,0,1);
  testCounter++;
  CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0);
  MTCInit(1);
  if ((0x1<<testCounter) & testMask)
    CrateCBal(crateNum,slotMask,0xFFFFFFFF,updateDB,1);
  testCounter++;

  lprintf("----------------------------------------\n");

  // load cbal values now
  CrateInit(crateNum,slotMask,0,1,0,0,0,0,0,0,0);

  if ((0x1<<testCounter) & testMask)
    PedRun(crateNum,slotMask,0xFFFFFFFF,0,DEFAULT_GT_DELAY,DEFAULT_PED_WIDTH,50,1000,300,updateDB,1,1);
  testCounter++;

  if ((0x1<<testCounter) & testMask)
    ChinjScan(crateNum,slotMask,0xFFFFFFFF,0,DEFAULT_GT_DELAY,DEFAULT_PED_WIDTH,10,5000,400,1,1,updateDB,1);
  testCounter++;
  if ((0x1<<testCounter) & testMask)
    SetTTot(crateNum,slotMask,400,updateDB,1);
  testCounter++;

  // load cbal and ttot values now
  CrateInit(crateNum,slotMask,0,1,0,1,0,0,0,0,0);

  if ((0x1<<testCounter) & testMask)
    GetTTot(crateNum,slotMask,390,updateDB,1);
  testCounter++;
  if ((0x1<<testCounter) & testMask)
    DiscCheck(crateNum,slotMask,500000,updateDB,1);
  testCounter++;
  uint32_t slotMasks[MAX_XL3_CON];
  for (int ic=0;ic<MAX_XL3_CON;ic++)
    slotMasks[ic] = slotMask;
  if ((0x1<<testCounter) & testMask)
    GTValidTest((0x1)<<crateNum,slotMasks,0xFFFFFFFF,400,0,0,updateDB,0,1);
  testCounter++;

  CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0);
  
  if ((0x1<<testCounter) & testMask)
    ZDisc(crateNum,slotMask,10000,0,updateDB,0,1,0);
  testCounter++;

  MTCInit(0);
  CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0);

  if ((0x1<<testCounter) & testMask)
    MbStabilityTest(crateNum,slotMask,50,updateDB,1);
  testCounter++;
  if ((0x1<<testCounter) & testMask)
    FifoTest(crateNum,slotMask,updateDB,1);
  testCounter++;

  // load alternate xilinx
  CrateInit(crateNum,slotMask,2,0,0,0,0,0,0,0,0);

  if ((0x1<<testCounter) & testMask)
    CaldTest(crateNum,slotMask,3500,750,200,1,updateDB,1);
  testCounter++;

  for (int i=0;i<16;i++){
    if ((0x1<<i) & slotMask){
      CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0); 
      if ((0x1<<testCounter) & testMask)
        MemTest(crateNum,i,updateDB,1);
    }
  }
  testCounter++;

  CrateInit(crateNum,slotMask,1,0,0,0,0,0,0,0,0);

  if ((0x1<<testCounter) & testMask){
    lprintf("Ready for see_refl test. Hit enter to enable triggers and continue or quit to skip and finish.\n\a");

    contConnection->GetInput(comments);
    if (strncmp("quit",comments,4) != 0){
      SeeReflection(crateNum,slotMask,0xFFFFFFFF,255,1000,updateDB,0,1);
    }
  }

  CrateInit(crateNum,slotMask,0,0,0,0,0,0,0,0);

  lprintf("----------------------------------------\n");
  lprintf("Final Test finished!\n");
  lprintf("****************************************\n");
  return 0;
}