亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? promise_ide.c

?? promise20265的驅動源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
  sysOutByte(baseAddress[4] + 0x001a,primary_mode|1);
DbgPrint(("setting secondary_mode: 0x%x set to 0x%x\n",baseAddress[4]+0x1b,secondary_mode|1,0,0,0,0));
  sysOutByte(baseAddress[4] + 0x001b,secondary_mode|1);

#if 0
// The statment below causes the promise controller to hang, unless a 
// printf preceeds it. Ouch. Why?????
// However,It does not seem to be necessary. So I am commenting it out
// enable port0 device ???? to enable port 1 write offset 0x50 data 0x4 ?????
// I do not have a spec I am puzzling linux driver
  status = pciConfigOutByte(
                BusNo,    /* bus number */
                DeviceNo, /* device number */
                FuncNo,   /* function number */
                0x50,     /* offset into the configuration space */
                0x02    /* data read from offset */
                );
#if PROMISE_DEBUG
    if (status != OK) {
      printf("pciConfigOutByte error\n");
    }
#endif /* PROMISE_DEBUG */

  if (status != OK)
     return status;  

#endif /* 0 */
}

#else
int
ataInitPromise()
{
 STATUS status;
 int    vector;
 //unsigned char udma_speed_flag;
 //unsigned char primary_mode;
 //unsigned char secondary_mode;
 int i;
 //UINT32 romAddress;

// struct timespec waittime;
// volatile_noncached int *marker = 0xc0000010 + 0x18100000;
// printf("here\n");
// waittime.tv_sec = 0;
// waittime.tv_nsec = 50000;
// *marker = 0xDEADBEEF;     

   DbgPrint(("IN Promise initilization!\n",0,0,0,0,0,0));
   //
   // find PROMISE ultra-100 ide option card
   // the logic here is that only one controller type can be 
   // present in the system. For LEAN_AND_MEAN, we only look 
   // for the 20265 (assumption here is that this is for the DVD
   // system that only contains a 20265)
   //
#if !(LEAN_AND_MEAN)
   status = pciFindDevice(
               PCI_VENDOR_ID_PROMISE,          /* vendor ID */
               PCI_DEVICE_ID_PROMISE_20262,    /* device ID */
               0,                              /* desired instance of device */
               &BusNo,                         /* bus number */
               &DeviceNo,                      /* device number */
               &FuncNo                         /* function number */
               );
   if (status != OK) {
       status = pciFindDevice(
                   PCI_VENDOR_ID_PROMISE,      /* vendor ID */
                   PCI_DEVICE_ID_PROMISE_20267,/* device ID */
                   0,                          /* desired instance of device */
                   &BusNo,                     /* bus number */
                   &DeviceNo,                  /* device number */
                   &FuncNo                     /* function number */
               );
   }
   if (status != OK)
#endif
   {
       status = pciFindDevice(
               PCI_VENDOR_ID_PROMISE,          /* vendor ID */
               PCI_DEVICE_ID_PROMISE_20265,    /* device ID */
               0,                              /* desired instance of device */
               &BusNo,                         /* bus number */
               &DeviceNo,                      /* device number */
               &FuncNo                         /* function number */
           );
   }
   if (status != OK) {
        DbgPrint(("ERROR: did not find promise card\n",0,0,0,0,0,0));
    return status;
  }

  DbgPrint(("Found promise card\n",0,0,0,0,0,0));

  /*  load up the base address registers */
  for(i=0; i<6; i++) {
    int offset = 0x10 + (i*4);

    status = pciConfigInLong(
                BusNo,             /* bus number */
                DeviceNo,          /* device number */
                FuncNo,            /* function number */
                offset,            /* offset into the configuration space */
                &baseAddress[i]
                );
    if (status != OK) {
      DbgPrint(("PCI 0x%x config failed\n", offset,0,0,0,0,0));
      return status;
    }
    /* clear IO bit (bit 0 in all config registers) bit 1 is reserved */
    baseAddress[i] &= ~3;
  }
  
  vector = sysPciIntPin(BusNo, DeviceNo );

  /*
  ** fixup ataresources from syslib.c
  */

  ataResources[0].resource.ioStart[0] = baseAddress[0];
  ataResources[0].resource.ioStart[1] = baseAddress[1] + 2;
  ataResources[1].resource.ioStart[0] = baseAddress[2];
  ataResources[1].resource.ioStart[1] = baseAddress[3] + 2;

  ataResources[0].intVector = vector;
  ataResources[1].intVector = vector;


  DbgPrint(("BAR[0]:0x%x\nBAR[1]:0x%x\n",baseAddress[0],baseAddress[1],0,0,0,0));

/******************************************/
/* reset drives                           */
/*****************************************/
#if 1
{
     int i,count;
     /* wait for reset, sysDelay is 6*63 cycles, and need to wait 6 milliseconds */
     count = (6000*sysGetCPUMHz())/(6*63);
     sysOutByte(0xC140 + 0x1F,0x10);
     for (i=0;i<count;i++) {
	  sysDelay();
     }
     sysOutByte(0xC140 + 0x1F,0x00);

     for (i=0;i<count;i++) {
	  sysDelay();
     }


}
#endif

/*****************************************/
/*enable burst mode */
/****************************************/
sysOutByte(baseAddress[4] + 0x1F,0x01);

/**********************************************************************/
/* allow byte alignment and byte count transfer length in PRD entries */
/**********************************************************************/

sysOutByte(baseAddress[4] + 0x1A,0x01); /* primary   channel */
sysOutByte(baseAddress[4] + 0x1B,0x01); /* secondary channel */
 
return status;  


}
#endif

#if PROMISE_DEBUG
void ataPrintSpeed(char speed)
{
  logMsg("Configured drive for \n",0,0,0,0,0,0);
  switch(speed) {      
    case ATA_DMA_ULTRA_W_0:
        logMsg("ultra DMA mode 0\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_ULTRA_W_1:
        logMsg("ultra DMA mode 1\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_ULTRA_W_2:
        logMsg("ultra DMA mode 2\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_ULTRA_W_3:
        logMsg("ultra DMA mode 3\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_ULTRA_W_4:
        logMsg("ultra DMA mode 4\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_MULTI_W_0:
        logMsg("multiword DMA mode 0\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_MULTI_W_1:
        logMsg("multiword DMA mode 1\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_MULTI_W_2:
        logMsg("multiword DMA mode 2\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_SINGLE_W_0:
        logMsg("singleword DMA mode 0\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_SINGLE_W_1:
        logMsg("singleword DMA mode 1\n",0,0,0,0,0,0);
        break;
    case ATA_DMA_SINGLE_W_2:
        logMsg("singleword DMA mode 2\n",0,0,0,0,0,0);
        break;
    default:
        logMsg("unknown speed\n",0,0,0,0,0,0);
  }
}
#endif
void promiseideAtaInit(int ctrl)
{
  ATA_CTRL *pCtrl        = &ataCtrl[ctrl];
  //  ATA_DRIVE *pDrive;
  int drive;
  char dev_name[5];




  for (drive = 0; drive < pCtrl->drives; drive++)
    {
      //pDrive = &pCtrl->drive[drive];
      //if (pDrive->okDma) {
	//config_chipset_for_dma(ctrl,drive);
      //}
      sprintf(&dev_name[0], "dev%d:", drive);

      /* mount the drive, assuming that the drive has 
       * been previously formated using a call to AtaFormat
       */
#ifdef FORMAT_IDE
      printf("formating %s\n", &dev_name[0]);
      AtaFormat(ctrl, drive, &dev_name[0]);
#else
      AtaMount(ctrl, drive, &dev_name[0]);
#endif
    }

}


int tune_chipset (int ctrl, int drive)
{


	int			err = 0;
	unsigned char		drive_pci, AP, BP, CP, DP;
	unsigned char		TA = 0, TB = 0, TC = 0;
	int dn                = ctrl*2+1;
	ATA_CTRL *pCtrl       = &ataCtrl[ctrl];
	ATA_DRIVE *pDrive     = &pCtrl->drive[drive];
	STATUS                  status;

	switch (dn) {
		case 0: drive_pci = 0x60; break;
		case 1: drive_pci = 0x64; break;
		case 2: drive_pci = 0x68; break;
		case 3: drive_pci = 0x6c; break;
		default: return ERROR;
	}

       
	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci,&AP);
      
	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x01,&BP);
       
	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x02,&CP);
       
	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x03,&DP);
    


	if (pDrive->okDma) {
	     if ((BP & 0xF0) && (CP & 0x0F)) {
		  /* clear DMA modes of upper 842 bits of B Register */
		  /* clear PIO forced mode upper 1 bit of B Register */
		  status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci|0x01,BP & ~0xF0);
		  
		  status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x01,&BP);
		     
		     
		  /* clear DMA modes of lower 8421 bits of C Register */
		  status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci|0x02,CP & ~0x0f);
		  
		  status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x02,&CP);
		  
	     }
	}

	if ((AP & 0x0F) || (BP & 0x07)) {
	     /* clear PIO modes of lower 8421 bits of A Register */
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci,AP & ~0x0F);
	     
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci,AP);
	     
	     
			/* clear PIO modes of lower 421 bits of B Register */
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci| 0x01,BP & ~0x07);
	     
	     status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x1,&BP);
		

	     status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci,&AP);
	     status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x1,&BP);
		
		
	}

	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci,&AP);
      
	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x01,&BP);
       
	status = pciConfigInByte(BusNo,DeviceNo,FuncNo,drive_pci|0x02,&CP);
	

	
	if (pDrive->okDma) {
	     switch(pDrive->rwDma) {

		/* case XFER_UDMA_6: */
	     case ATA_DMA_ULTRA_W_5:
	     case ATA_DMA_ULTRA_W_4:	TB = 0x20; TC = 0x01; break;	/* speed 8 == UDMA mode 4 */
	     case ATA_DMA_ULTRA_W_3:	TB = 0x40; TC = 0x02; break;	/* speed 7 == UDMA mode 3 */
	     case ATA_DMA_ULTRA_W_2:	TB = 0x20; TC = 0x01; break;	/* speed 6 == UDMA mode 2 */
	     case ATA_DMA_ULTRA_W_1:	TB = 0x40; TC = 0x02; break;	/* speed 5 == UDMA mode 1 */
	     case ATA_DMA_ULTRA_W_0:	TB = 0x60; TC = 0x03; break;	/* speed 4 == UDMA mode 0 */
	     case ATA_DMA_MULTI_2:	TB = 0x60; TC = 0x03; break;	/* speed 4 == MDMA mode 2 */
	     case ATA_DMA_MULTI_1:	TB = 0x60; TC = 0x04; break;	/* speed 3 == MDMA mode 1 */
	     case ATA_DMA_MULTI_0:	TB = 0x60; TC = 0x05; break;	/* speed 2 == MDMA mode 0 */
	    
	     }
	}
	switch(pDrive->rwMode) {
	case ATA_PIO_4:	TA = 0x01; TB |= 0x04; break;
	case ATA_PIO_3:	TA = 0x02; TB |= 0x06; break;
	case ATA_PIO_2:	TA = 0x03; TB |= 0x08; break;
	case ATA_PIO_1:	TA = 0x05; TB |= 0x0C; break;
	case ATA_PIO_0:
	default:		TA = 0x09; TB = 0x13; break;
	}
	


        if (pDrive->okDma) {
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci|0x1,BP|TB);
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci|0x2,CP|TC);
	} else {
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci,AP|TA);
	     status = pciConfigOutByte(BusNo,DeviceNo,FuncNo,drive_pci|0x1,BP|TB);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区电影| 国产麻豆欧美日韩一区| 国产精品久久久一区麻豆最新章节| 精品视频全国免费看| 99久久精品一区| 高清av一区二区| 麻豆视频观看网址久久| 视频一区二区国产| 亚洲欧美在线高清| 国产精品视频第一区| 久久噜噜亚洲综合| 精品国产精品网麻豆系列| 555www色欧美视频| 欧美精品精品一区| 精品视频1区2区3区| 欧美另类一区二区三区| 在线欧美一区二区| 欧美亚洲综合另类| 欧美日韩精品一二三区| 在线观看日韩毛片| 欧美日韩精品免费| 91麻豆精品久久久久蜜臀| 91.com视频| 欧美一区二区三区系列电影| 日韩免费成人网| 久久九九全国免费| 夜色激情一区二区| 国产精品蜜臀av| 中文字幕久久午夜不卡| 日本不卡中文字幕| 亚洲精品你懂的| 亚洲一区二区三区三| 91精品国产综合久久香蕉麻豆| 欧美高清激情brazzers| 精品国产一区a| 久久综合色综合88| 亚洲精品美国一| 日本在线不卡视频一二三区| 国产成人小视频| 欧美自拍丝袜亚洲| 久久综合资源网| 椎名由奈av一区二区三区| 日韩av一级电影| 91亚洲精品一区二区乱码| 成人性生交大片免费看在线播放 | 久久99精品久久只有精品| 国产精品色在线| 国产精品久久久久久福利一牛影视| 亚洲国产成人在线| 大白屁股一区二区视频| 综合精品久久久| 亚洲精品乱码久久久久久黑人| 夜夜爽夜夜爽精品视频| 蜜桃传媒麻豆第一区在线观看| 国产福利视频一区二区三区| 色天天综合色天天久久| 日韩欧美一区二区三区在线| 欧美激情中文字幕| 青青草成人在线观看| 成人av影视在线观看| 91精品国产色综合久久| 国产精品欧美一区二区三区| 视频一区免费在线观看| 国产aⅴ综合色| 日韩午夜在线影院| 亚洲综合男人的天堂| 国产成人三级在线观看| 日韩一二三区不卡| 色哟哟在线观看一区二区三区| 在线视频一区二区三| 久久一区二区三区国产精品| 亚洲午夜视频在线| 99在线精品观看| 久久精品在线免费观看| 久久国产精品区| 欧美在线视频日韩| 亚洲欧洲国产日本综合| 国产经典欧美精品| xf在线a精品一区二区视频网站| 日韩av电影天堂| 日韩欧美一区在线| 精品一区二区三区在线播放视频| 欧美高清视频不卡网| 亚洲18色成人| 欧美性大战久久久久久久| 成人欧美一区二区三区白人| 国产suv一区二区三区88区| 日韩三区在线观看| 免费精品视频在线| 欧美zozozo| 国产成人免费视频精品含羞草妖精| 欧美精品一区二区三区视频 | 在线视频国内自拍亚洲视频| 亚洲一区视频在线观看视频| 色诱视频网站一区| 亚洲一区二区av电影| 在线一区二区三区做爰视频网站| 香蕉乱码成人久久天堂爱免费| 91精品国产综合久久福利软件| 精品伊人久久久久7777人| 久久久久99精品一区| 成人黄色av电影| 亚洲国产你懂的| 欧美一级二级在线观看| 国产一区二区三区四区五区入口| 中文字幕av资源一区| 色哟哟日韩精品| 日韩电影在线观看网站| 久久综合狠狠综合久久激情| 99re这里只有精品视频首页| 玉米视频成人免费看| 日韩一二三四区| 不卡的av网站| 五月婷婷久久丁香| 欧美国产一区在线| 91成人在线观看喷潮| 国产乱人伦偷精品视频不卡| 一区二区免费看| 久久久精品国产免大香伊| 欧美日韩国产成人在线91| 高清国产午夜精品久久久久久| 亚洲最大色网站| 久久久久久久久久久久久夜| 欧美特级限制片免费在线观看| 韩国一区二区在线观看| 亚洲天堂2016| 亚洲精品一区二区精华| 91国产精品成人| 成人精品国产福利| 免费人成在线不卡| 午夜视频在线观看一区二区| 韩国三级中文字幕hd久久精品| 亚洲午夜久久久久久久久电影院| 久久久av毛片精品| 欧美一区2区视频在线观看| 欧美日韩精品欧美日韩精品一| 91蜜桃在线免费视频| 国产成人精品aa毛片| 蜜臂av日日欢夜夜爽一区| 天天操天天综合网| 亚洲精品视频在线| 亚洲区小说区图片区qvod| 久久九九久久九九| 精品毛片乱码1区2区3区| 91精品国产综合久久久久久漫画| 色综合久久久久综合| youjizz久久| 波多野结衣亚洲| 国产成人在线观看免费网站| 久久9热精品视频| 国产制服丝袜一区| 国产精品一线二线三线| 国产成人在线影院 | 一区二区三区中文在线| 亚洲黄色小说网站| 一区二区三区精品在线观看| 亚洲人亚洲人成电影网站色| 亚洲婷婷综合色高清在线| 一区二区三区不卡在线观看 | 欧洲精品一区二区三区在线观看| 91传媒视频在线播放| 欧美日韩成人在线一区| 欧美一区二区网站| 日韩欧美国产三级| 久久精品视频在线看| 国产精品免费视频观看| 亚洲男同性视频| 香蕉成人伊视频在线观看| 国产一区二区三区四区五区入口| 大胆亚洲人体视频| 欧美手机在线视频| 精品国一区二区三区| 国产精品美女久久久久av爽李琼| 亚洲欧美日韩小说| 免费人成精品欧美精品| 国产伦精品一区二区三区视频青涩| 波多野结衣一区二区三区 | 久久精品国产精品亚洲精品| 高清不卡在线观看| 欧美性猛交xxxxxx富婆| 精品国产露脸精彩对白 | 欧美一区二区啪啪| 国产精品污网站| 日韩国产欧美视频| av在线一区二区| 日韩精品最新网址| 亚洲成人av一区| 成人小视频在线观看| 717成人午夜免费福利电影| 国产精品美女久久久久久2018| 午夜在线电影亚洲一区| 91蜜桃视频在线| 久久伊人中文字幕| 无码av中文一区二区三区桃花岛| 成人性生交大片免费看在线播放| 欧美成人精精品一区二区频| 亚洲影视资源网| 高清不卡一二三区| 久久久久久久久久久久电影| 视频一区视频二区中文字幕|