⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 该文件是rt_linux
💻 C
📖 第 1 页 / 共 5 页
字号:
   }   if((HwDeviceExtension->jChipType == SIS_550) ||      (HwDeviceExtension->jChipType == SIS_640) ||      (HwDeviceExtension->jChipType == SIS_740) ||      (HwDeviceExtension->jChipType == SIS_650)) {        if((*SiS_Pr->pSiS_SoftSetting & SoftDRAMType) == 0){          	temp = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x13) & 0x07;        }   }#endif   SiS_Pr->SiS_RAMType = temp;   SiS_SetMemoryClock(SiS_Pr, ROMAddr, HwDeviceExtension);   /* Set default register contents */   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x07,*SiS_Pr->pSiS_SR07); 		/* DAC speed */   if((HwDeviceExtension->jChipType != SIS_540) &&      (HwDeviceExtension->jChipType != SIS_630) &&      (HwDeviceExtension->jChipType != SIS_730)){     	for(i=0x15;i<0x1C;i++) {       	    SiS_SetReg1(SiS_Pr->SiS_P3c4,i,SiS_Pr->SiS_SR15[i-0x15][SiS_Pr->SiS_RAMType]);     	}   }#ifdef SIS315H   if ((HwDeviceExtension->jChipType == SIS_315H ) ||       (HwDeviceExtension->jChipType == SIS_315PRO)) {     	for(i=0x40;i<=0x44;i++) {       	    SiS_SetReg1(SiS_Pr->SiS_P3d4,i,SiS_Pr->SiS_CR40[i-0x40][SiS_Pr->SiS_RAMType]);     	}     	SiS_SetReg1(SiS_Pr->SiS_P3d4,0x48,0x23);     	SiS_SetReg1(SiS_Pr->SiS_P3d4,0x49,SiS_Pr->SiS_CR49[0]);    /*  SiS_SetReg1(SiS_Pr->SiS_P3c4,0x25,SiS_Pr->SiS_SR25[0]);  */   }#endif   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x1F,*SiS_Pr->pSiS_SR1F); 	/* DAC pedestal */   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x20,0xA0);   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x23,*SiS_Pr->pSiS_SR23);   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x24,*SiS_Pr->pSiS_SR24);   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x25,SiS_Pr->SiS_SR25[0]);#ifdef SIS300   if(HwDeviceExtension->jChipType == SIS_300) {     	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x21,0x84);     	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x22,0x00);   }#endif   SR11 = 0x0F;   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x11,SR11);		/* Power Management & DDC port */   SiS_UnLockCRT2(SiS_Pr, HwDeviceExtension, BaseAddr);   SiS_SetReg1(SiS_Pr->SiS_Part1Port,0x00,0x00);   SiS_SetReg1(SiS_Pr->SiS_Part1Port,0x02,*SiS_Pr->pSiS_CRT2Data_1_2);#ifdef SIS315H   if((HwDeviceExtension->jChipType == SIS_315H) ||      (HwDeviceExtension->jChipType == SIS_315PRO) ||      (HwDeviceExtension->jChipType == SIS_550) ||      (HwDeviceExtension->jChipType == SIS_640) ||      (HwDeviceExtension->jChipType == SIS_740) ||      (HwDeviceExtension->jChipType == SIS_650))     	SiS_SetReg1(SiS_Pr->SiS_Part1Port,0x2E,0x08);    /* use VB */#endif   temp = *SiS_Pr->pSiS_SR32;   if(SiS_BridgeIsOn(SiS_Pr, BaseAddr)) {     	temp &= 0xEF;   }   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x32,temp);#ifdef SIS315H   if((HwDeviceExtension->jChipType == SIS_315H) ||      (HwDeviceExtension->jChipType == SIS_315PRO)) {     HwDeviceExtension->pQueryVGAConfigSpace(HwDeviceExtension,0x50,0,&Temp);     Temp >>= 20;     Temp &= 0xF;     if (Temp != 1) {     	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x25,SiS_Pr->SiS_SR25[1]);     	SiS_SetReg1(SiS_Pr->SiS_P3d4,0x49,SiS_Pr->SiS_CR49[1]);     }     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x27,0x1F);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x31,*SiS_Pr->pSiS_SR31);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x32,*SiS_Pr->pSiS_SR32);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x33,*SiS_Pr->pSiS_SR33);   }#endif   if (SiS_BridgeIsOn(SiS_Pr, BaseAddr) == 0) {     	if(SiS_Pr->SiS_IF_DEF_LVDS == 0) {       		SiS_SetReg1(SiS_Pr->SiS_Part2Port,0x00,0x1C);       		SiS_SetReg1(SiS_Pr->SiS_Part4Port,0x0D,*SiS_Pr->pSiS_CRT2Data_4_D);       		SiS_SetReg1(SiS_Pr->SiS_Part4Port,0x0E,*SiS_Pr->pSiS_CRT2Data_4_E);       		SiS_SetReg1(SiS_Pr->SiS_Part4Port,0x10,*SiS_Pr->pSiS_CRT2Data_4_10);       		SiS_SetReg1(SiS_Pr->SiS_Part4Port,0x0F,0x3F);     	}     	SiS_LockCRT2(SiS_Pr, HwDeviceExtension, BaseAddr);   }   SiS_SetReg1(SiS_Pr->SiS_P3d4,0x83,0x00);#ifdef SIS315H   if ((HwDeviceExtension->jChipType==SIS_315H) ||       (HwDeviceExtension->jChipType==SIS_315PRO)) {       	if (HwDeviceExtension->bSkipDramSizing==TRUE) {         	SiS_SetDRAMModeRegister(SiS_Pr, ROMAddr,HwDeviceExtension);         	pSR = HwDeviceExtension->pSR;         	if (pSR!=NULL) {           		while (pSR->jIdx!=0xFF) {             			SiS_SetReg1(SiS_Pr->SiS_P3c4,pSR->jIdx,pSR->jVal);             			pSR++;           		}         	}       } else SiS_SetDRAMSize_310(SiS_Pr, HwDeviceExtension);   }#endif#ifdef SIS315H   if((HwDeviceExtension->jChipType==SIS_550)){       /* SetDRAMConfig begin *//*     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x12,SR12);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,SR13);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,SR14);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x16,SR16);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x17,SR17);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x18,SR18);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x19,SR19);       SiS_SetReg1(SiS_Pr->SiS_P3c4,0x1A,SR1A);   */       /* SetDRAMConfig end */   }#endif#ifdef SIS300   if(HwDeviceExtension->jChipType == SIS_300) {       	if (HwDeviceExtension->bSkipDramSizing == TRUE) {/*       	SiS_SetDRAMModeRegister(ROMAddr,HwDeviceExtension);         	temp = (HwDeviceExtension->pSR)->jVal;         	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,temp);         	temp = (HwDeviceExtension->pSR)->jVal;         	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,temp);   */       } else {#ifdef TC         	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,SR13);         	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,SR14);         	SiS_SetRegANDOR(SiS_Pr->SiS_P3c4,0x15,0xFF,0x04);#else         	SiS_SetDRAMSize_300(SiS_Pr, HwDeviceExtension);         	SiS_SetDRAMSize_300(SiS_Pr, HwDeviceExtension);#endif       }   }   if((HwDeviceExtension->jChipType==SIS_540)||      (HwDeviceExtension->jChipType==SIS_630)||      (HwDeviceExtension->jChipType==SIS_730)) {#if 0     	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x12,SR12);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,SR13);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,SR14);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x16,SR16);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x17,SR17);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x18,SR18);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x19,SR19);       	SiS_SetReg1(SiS_Pr->SiS_P3c4,0x1A,SR1A);#endif   }/* SetDRAMSize end */#endif /* SIS300 */   /* Set default Ext2Regs */#if 0   AGP=1;   temp=(UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x3A);   temp &= 0x30;   if(temp == 0x30) AGP=0;   if(AGP == 0) *SiS_Pr->pSiS_SR21 &= 0xEF;   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x21,*SiS_Pr->pSiS_SR21);   if(AGP == 1) *SiS_Pr->pSiS_SR22 &= 0x20;   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x22,*SiS_Pr->pSiS_SR22);#endif   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x21,*SiS_Pr->pSiS_SR21);   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x22,*SiS_Pr->pSiS_SR22);#if 0   SiS_SetReg3(SiS_Pr->SiS_P3c6,0xff);   SiS_ClearDAC(SiS_Pr, SiS_Pr->SiS_P3c8);#endif#ifdef LINUXBIOS   /* TW: This is not needed for our purposes */   SiS_DetectMonitor(SiS_Pr, HwDeviceExtension,BaseAddr);    /* Sense CRT1 */   SiS_GetSenseStatus(SiS_Pr, HwDeviceExtension,ROMAddr);    /* Sense CRT2 */#endif   return(TRUE);}voidSiS_Set_LVDS_TRUMPION(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension){  USHORT temp = 0;#ifdef SiS300  if((HwDeviceExtension->jChipType == SIS_540) ||     (HwDeviceExtension->jChipType == SIS_630) ||     (HwDeviceExtension->jChipType == SIS_730)) {        /* TW: Read POWER_ON_TRAP and copy to CR37 */    	temp = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x1A);    	temp = (temp & 0xE0) >> 4;   	SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x37,0xF1,temp);  }#endif#ifdef SIS315H  if((HwDeviceExtension->jChipType == SIS_640) ||     (HwDeviceExtension->jChipType == SIS_740) ||     (HwDeviceExtension->jChipType == SIS_650)) {#if 0 /* TW: This is not required */        /* TW: Read POWER_ON_TRAP and copy to CR37 */    	temp = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x1A);    	temp = (temp & 0xE0) >> 4;   	SiS_SetRegANDOR(SiS_Pr->SiS_P3d4,0x37,0xF1,temp);#endif  }#endif   SiSSetLVDSetc(SiS_Pr, HwDeviceExtension, 0);}/* ===============  SiS 300 dram sizing begin  =============== */#ifdef SIS300voidSiS_SetDRAMSize_300(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension){   ULONG   FBAddr = (ULONG)HwDeviceExtension->pjVideoMemoryAddress;   USHORT  SR13, SR14=0, buswidth, Done;   SHORT   i, j, k;   USHORT  data, TotalCapacity, PhysicalAdrOtherPage=0;   ULONG   Addr;   UCHAR   temp;   int     PseudoRankCapacity, PseudoTotalCapacity, PseudoAdrPinCount;   int     RankCapacity, AdrPinCount, BankNumHigh, BankNumMid, MB2Bank;   int     PageCapacity, PhysicalAdrHigh, PhysicalAdrHalfPage;   SiSSetMode(SiS_Pr, HwDeviceExtension, 0x2e);   SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x01,0x20);        /* Turn OFF Display  */   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,0x00);   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,0xBF);   buswidth = SiS_ChkBUSWidth_300(SiS_Pr, FBAddr);   MB2Bank = 16;   Done = 0;   for(i=6; i>=0; i--) {      if(Done == 1) break;      PseudoRankCapacity = 1 << i;      for(j=4; j>=1; j--) {         if(Done == 1) break;         PseudoTotalCapacity = PseudoRankCapacity * j;         PseudoAdrPinCount = 15 - j;         if(PseudoTotalCapacity <= 64) {            for(k=0; k<=16; k++) {               if(Done == 1) break;               RankCapacity = buswidth * SiS_DRAMType[k][3];               AdrPinCount = SiS_DRAMType[k][2] + SiS_DRAMType[k][0];               if(RankCapacity == PseudoRankCapacity)                 if(AdrPinCount <= PseudoAdrPinCount) {                    if(j == 3) {             /* Rank No */                       BankNumHigh = RankCapacity * MB2Bank * 3 - 1;                       BankNumMid = RankCapacity * MB2Bank * 1 - 1;                    } else {                       BankNumHigh = RankCapacity * MB2Bank * j - 1;                       BankNumMid = RankCapacity * MB2Bank * j / 2 - 1;                    }                    PageCapacity = (1 << SiS_DRAMType[k][1]) * buswidth * 4;                    PhysicalAdrHigh = BankNumHigh;                    PhysicalAdrHalfPage = (PageCapacity / 2 + PhysicalAdrHigh) % PageCapacity;                    PhysicalAdrOtherPage = PageCapacity * SiS_DRAMType[k][2] + PhysicalAdrHigh;                    /* Write data */                    /*Test*/                    SiS_SetRegAND(SiS_Pr->SiS_P3c4,0x15,0xFB);                    SiS_SetRegOR(SiS_Pr->SiS_P3c4,0x15,0x04);                    /*/Test*/                    TotalCapacity = SiS_DRAMType[k][3] * buswidth;                    SR13 = SiS_DRAMType[k][4];                    if(buswidth == 4) SR14 = (TotalCapacity - 1) | 0x80;                    if(buswidth == 2) SR14 = (TotalCapacity - 1) | 0x40;                    if(buswidth == 1) SR14 = (TotalCapacity - 1) | 0x00;                    SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,SR13);                    SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,SR14);                    Addr = FBAddr + (BankNumHigh) * 64 * 1024 + PhysicalAdrHigh;                    *((USHORT *)(Addr)) = (USHORT)PhysicalAdrHigh;                    Addr = FBAddr + (BankNumMid) * 64 * 1024 + PhysicalAdrHigh;                    *((USHORT *)(Addr)) = (USHORT)BankNumMid;                    Addr = FBAddr + (BankNumHigh) * 64 * 1024 + PhysicalAdrHalfPage;                    *((USHORT *)(Addr)) = (USHORT)PhysicalAdrHalfPage;                    Addr = FBAddr + (BankNumHigh) * 64 * 1024 + PhysicalAdrOtherPage;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -