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

📄 init.c

📁 该文件是rt_linux
💻 C
📖 第 1 页 / 共 5 页
字号:
   SiS_Pr->SiS_Panel800x600   = Panel_800x600;   SiS_Pr->SiS_Panel1024x768  = Panel_1024x768;   SiS_Pr->SiS_Panel1280x1024 = Panel_1280x1024;   SiS_Pr->SiS_Panel1280x960  = Panel_1280x960;   SiS_Pr->SiS_Panel1600x1200 = Panel_1600x1200;   SiS_Pr->SiS_Panel1400x1050 = Panel_1400x1050;   SiS_Pr->SiS_Panel1152x768  = Panel_1152x768;   SiS_Pr->SiS_Panel1152x864  = Panel_1152x864;   SiS_Pr->SiS_Panel1280x768  = Panel_1280x768;   SiS_Pr->SiS_Panel1024x600  = Panel_1024x600;   SiS_Pr->SiS_PanelMax       = Panel_320x480;    /* TW: highest value */   SiS_Pr->SiS_PanelMinLVDS   = Panel_800x600;    /* TW: lowest value LVDS/LCDA */   SiS_Pr->SiS_PanelMin301    = Panel_1024x768;   /* TW: lowest value 301 */}#endif#ifdef LINUXBIOS/* -------------- SiSInit -----------------*//* TW: I degraded this for LINUXBIOS only, because we *     don't need this otherwise */BOOLEANSiSInit(SiS_Private *SiS_Pr, PSIS_HW_DEVICE_INFO HwDeviceExtension){   UCHAR  *ROMAddr  = HwDeviceExtension->pjVirtualRomBase;   ULONG   FBAddr   = (ULONG)HwDeviceExtension->pjVideoMemoryAddress;   USHORT  BaseAddr = (USHORT)HwDeviceExtension->ulIOAddress;   UCHAR   i, temp=0;   UCHAR   SR11;#ifdef LINUX_KERNEL   UCHAR   temp1;   ULONG   base;#endif   UCHAR   SR13=0, SR14=0, SR16=0   UCHAR   SR17=0, SR19=0, SR1A=0;#ifdef SIS300   UCHAR   SR18=0, SR12=0;#endif#ifdef SIS315H   UCHAR   CR37=0, CR38=0, CR79=0,   UCHAR   CR7A=0, CR7B=0, CR7C=0;   UCHAR   SR1B=0, SR15=0;   PSIS_DSReg pSR;   ULONG   Temp;#endif   UCHAR   VBIOSVersion[5];   if(FBAddr==0)    return (FALSE);   if(BaseAddr==0)  return (FALSE);   SiS_SetReg3((USHORT)(BaseAddr+0x12),  0x67);  /* Misc */#ifdef SIS315H   if(HwDeviceExtension->jChipType > SIS_315PRO) {     if(!HwDeviceExtension->bIntegratedMMEnabled)     	return (FALSE);   }#endif   SiS_MemoryCopy(VBIOSVersion,HwDeviceExtension->szVBIOSVer,4);   VBIOSVersion[4]= 0x00;   SiSDetermineROMUsage(SiS_Pr, HwDeviceExtension, ROMAddr);   /* TW: Init pointers */#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))     InitTo310Pointer(SiS_Pr, HwDeviceExtension);#endif#ifdef SIS300   if((HwDeviceExtension->jChipType == SIS_540) ||      (HwDeviceExtension->jChipType == SIS_630) ||      (HwDeviceExtension->jChipType == SIS_730) ||      (HwDeviceExtension->jChipType == SIS_300))     InitTo300Pointer(SiS_Pr, HwDeviceExtension);#endif   /* TW: Set SiS Register definitions */   SiSRegInit(SiS_Pr, BaseAddr);   /* TW: Determine LVDS/CH70xx/TRUMPION */   SiS_Set_LVDS_TRUMPION(SiS_Pr, HwDeviceExtension);   /* TW: Unlock registers */   SiS_SetReg1(SiS_Pr->SiS_P3c4,0x05,0x86);#ifdef LINUX_KERNEL#ifdef SIS300                                         	/* Set SR14 */   if((HwDeviceExtension->jChipType==SIS_540) ||      (HwDeviceExtension->jChipType==SIS_630) ||      (HwDeviceExtension->jChipType==SIS_730)) {     base=0x80000060;     OutPortLong(base,0xcf8);     temp1 = InPortLong(0xcfc);     temp1 >>= (16+8+4);     temp1 &= 0x07;     temp1++;     temp1 = 1 << temp1;     SR14 = temp1 - 1;     base = 0x80000064;     OutPortLong(base,0xcf8);     temp1 = InPortLong(0xcfc);     temp1 &= 0x00000020;     if(temp1) 	SR14 |= 0x80;     else      	SR14 |= 0x40;   }#endif#ifdef SIS315H                                          /* Set SR14 */   if(HwDeviceExtension->jChipType==SIS_550) {     base = 0x80000060;     OutPortLong(base,0xcf8);     temp1 = InPortLong(0xcfc);     temp1 >>= (16+8+4);     temp1 &= 0x07;     temp1++;     temp1 = 1 << temp1;     SR14 = temp1 - 1;     base = 0x80000064;     OutPortLong(base,0xcf8);     temp1 = InPortLong(0xcfc);     temp1 &= 0x00000020;     if(temp1)  SR14 |= 0x80;     else       SR14 |= 0x40;   }   if((HwDeviceExtension->jChipType == SIS_640) ||      /* Set SR14 */      (HwDeviceExtension->jChipType == SIS_740) ||      (HwDeviceExtension->jChipType == SIS_650)) {     base = 0x80000064;     OutPortLong(base,0xcf8);     temp1=InPortLong(0xcfc);     temp1 >>= 4;     temp1 &= 0x07;     if(temp1 > 2) {       temp = temp1;       switch(temp) {        case 3: temp1 = 0x07;  break;        case 4: temp1 = 0x0F;  break;        case 5: temp1 = 0x1F;  break;        case 6: temp1 = 0x05;  break;        case 7: temp1 = 0x17;  break;        case 8: break;        case 9: break;       }     }     SR14 = temp1;     base = 0x8000007C;     OutPortLong(base,0xcf8);     temp1 = InPortLong(0xcfc);     temp1 &= 0x00000020;     if(temp1)  SR14 |= 0x80;   }#endif#endif  /* Linux kernel */#ifdef SIS300   if((HwDeviceExtension->jChipType == SIS_540)||      (HwDeviceExtension->jChipType == SIS_630)||      (HwDeviceExtension->jChipType == SIS_730)) {     SR12 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x12);     SR13 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x13);     SR14 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x14);     SR16 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x16);     SR17 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x17);     SR18 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x18);     SR19 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x19);     SR1A = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x1A);   } else if(HwDeviceExtension->jChipType == SIS_300){     SR13 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x13);     SR14 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x14);   }#endif#ifdef SIS315H   if((HwDeviceExtension->jChipType == SIS_550) ||      (HwDeviceExtension->jChipType == SIS_640) ||      (HwDeviceExtension->jChipType == SIS_740) ||      (HwDeviceExtension->jChipType == SIS_650)) {     SR19 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x19);     SR19 = (SR19)||0x01;  /* TW: ??? || ??? */     if(SR19==0x00) {     	SR13 = 0x22;     	SR14 = 0x00;    	SR15 = 0x01;     	SR16 = 0x00;     	SR17 = 0x00;     	SR1A = 0x00;     	SR1B = 0x00;     	CR37 = 0x00;     	CR38 = 0x00;     	CR79 = 0x00;     	CR7A = 0x00;     	CR7B = 0x00;     	CR7C = 0x00;     } else {     	SR13 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x13);     	SR14 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x14);     	SR15 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x15);     	SR16 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x16);     	SR17 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x17);     	SR1A = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x1A);     	SR1B = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x1B);     	CR37 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3d4,0x37);  /* TW: Was 0x02 - why? */     	CR38 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3d4,0x38);     	CR79 = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3d4,0x79);     	CR7A = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3d4,0x7A);     	CR7B = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3d4,0x7B);     	CR7C = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3d4,0x7C);     }   }#endif   /* Reset extended registers */   for(i=0x06; i< 0x20; i++) SiS_SetReg1(SiS_Pr->SiS_P3c4,i,0);   for(i=0x21; i<=0x27; i++) SiS_SetReg1(SiS_Pr->SiS_P3c4,i,0);   for(i=0x31; i<=0x3D; i++) SiS_SetReg1(SiS_Pr->SiS_P3c4,i,0);#ifdef SIS300   if((HwDeviceExtension->jChipType == SIS_540) ||      (HwDeviceExtension->jChipType == SIS_630) ||      (HwDeviceExtension->jChipType == SIS_730) ||      (HwDeviceExtension->jChipType == SIS_300)) {     	for(i=0x38; i<=0x3F; i++) SiS_SetReg1(SiS_Pr->SiS_P3d4,i,0);   }#endif#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)) {   	for(i=0x12; i<=0x1B; i++) SiS_SetReg1(SiS_Pr->SiS_P3c4,i,0);   	for(i=0x79; i<=0x7C; i++) SiS_SetReg1(SiS_Pr->SiS_P3d4,i,0);   }#endif   /* Restore Extended Registers */#ifdef SIS300   if((HwDeviceExtension->jChipType == SIS_540) ||      (HwDeviceExtension->jChipType == SIS_630) ||      (HwDeviceExtension->jChipType == SIS_730)) {     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#ifdef SIS315H   if((HwDeviceExtension->jChipType == SIS_550) ||      (HwDeviceExtension->jChipType == SIS_640) ||      (HwDeviceExtension->jChipType == SIS_740) ||      (HwDeviceExtension->jChipType == SIS_650)) {     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x13,SR13);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x14,SR14);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x15,SR15);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x16,SR16);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x17,SR17);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x19,SR19);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x1A,SR1A);     SiS_SetReg1(SiS_Pr->SiS_P3c4,0x1B,SR1B);     SiS_SetReg1(SiS_Pr->SiS_P3d4,0x37,CR37);     SiS_SetReg1(SiS_Pr->SiS_P3d4,0x38,CR38);     SiS_SetReg1(SiS_Pr->SiS_P3d4,0x79,CR79);     SiS_SetReg1(SiS_Pr->SiS_P3d4,0x7A,CR7A);     SiS_SetReg1(SiS_Pr->SiS_P3d4,0x7B,CR7B);     SiS_SetReg1(SiS_Pr->SiS_P3d4,0x7C,CR7C);   }#endif#ifdef SIS300   if((HwDeviceExtension->jChipType==SIS_540) ||      (HwDeviceExtension->jChipType==SIS_630) ||      (HwDeviceExtension->jChipType==SIS_730)) {     	temp = (UCHAR)SR1A & 0x03;   } else if(HwDeviceExtension->jChipType==SIS_300) {        /* TW: Nothing */   }#endif#ifdef SIS315H   if((HwDeviceExtension->jChipType == SIS_315H )||      (HwDeviceExtension->jChipType == SIS_315PRO)) {      	if((*SiS_Pr->pSiS_SoftSetting & SoftDRAMType) == 0){          	temp = (UCHAR)SiS_GetReg1(SiS_Pr->SiS_P3c4,0x3A) & 0x03;        }

⌨️ 快捷键说明

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