📄 init.c
字号:
SiS_Pr->SiS_CHTVVCLKONTSC = SiS300_CHTVVCLKONTSC; SiS_Pr->SiS_CHTVVCLKUPAL = SiS300_CHTVVCLKUPAL; SiS_Pr->SiS_CHTVVCLKOPAL = SiS300_CHTVVCLKOPAL; SiS_Pr->SiS_CHTVVCLKUPALM = SiS300_CHTVVCLKUNTSC; /* not supported on 300 series */ SiS_Pr->SiS_CHTVVCLKOPALM = SiS300_CHTVVCLKONTSC; /* not supported on 300 series */ SiS_Pr->SiS_CHTVVCLKUPALN = SiS300_CHTVVCLKUPAL; /* not supported on 300 series */ SiS_Pr->SiS_CHTVVCLKOPALN = SiS300_CHTVVCLKOPAL; /* not supported on 300 series */ SiS_Pr->SiS_CHTVVCLKSOPAL = SiS300_CHTVVCLKSOPAL;}#endif#ifdef SIS315Hstatic voidInitTo310Pointer(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){ InitCommonPointer(SiS_Pr, HwInfo); SiS_StandTable[0x04].CRTC[4] = 0x2c; SiS_StandTable[0x05].CRTC[4] = 0x2c; SiS_StandTable[0x06].CRTC[4] = 0x55; SiS_StandTable[0x06].CRTC[5] = 0x81; SiS_StandTable[0x0d].CRTC[4] = 0x2c; SiS_StandTable[0x0e].CRTC[4] = 0x55; SiS_StandTable[0x0e].CRTC[5] = 0x81; SiS_StandTable[0x11].CRTC[4] = 0x55; SiS_StandTable[0x11].CRTC[5] = 0x81; SiS_StandTable[0x11].CRTC[16] = 0x82; SiS_StandTable[0x11].CRTC[17] = 0x84; SiS_StandTable[0x12].CRTC[4] = 0x55; SiS_StandTable[0x12].CRTC[5] = 0x81; SiS_StandTable[0x12].CRTC[16] = 0x82; SiS_StandTable[0x12].CRTC[17] = 0x84; SiS_StandTable[0x13].CRTC[5] = 0xb1; SiS_StandTable[0x17].CRTC[5] = 0xb1; SiS_StandTable[0x1a].CRTC[4] = 0x55; SiS_StandTable[0x1a].CRTC[5] = 0x81; SiS_StandTable[0x1a].CRTC[16] = 0xe9; SiS_StandTable[0x1a].CRTC[17] = 0x8b; SiS_StandTable[0x1b].CRTC[4] = 0x55; SiS_StandTable[0x1b].CRTC[5] = 0x81; SiS_StandTable[0x1b].CRTC[16] = 0xe9; SiS_StandTable[0x1b].CRTC[17] = 0x8b; SiS_StandTable[0x1c].CRTC[4] = 0x55; SiS_StandTable[0x1c].CRTC[5] = 0x81; SiS_Pr->SiS_SModeIDTable = SiS310_SModeIDTable; SiS_Pr->SiS_EModeIDTable = SiS310_EModeIDTable; SiS_Pr->SiS_RefIndex = (SiS_Ext2Struct *)SiS310_RefIndex; SiS_Pr->SiS_CRT1Table = SiS310_CRT1Table; if(HwInfo->jChipType >= SIS_760) { SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_760; /* 760 */ } else if(HwInfo->jChipType >= SIS_661) { SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_660; /* 661/741 */ } else if(HwInfo->jChipType == SIS_330) { SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_330; /* 330 */ } else if(HwInfo->jChipType > SIS_315PRO) { SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_650; /* 550, 650, 740 */ } else { SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_315; /* 315 */ } SiS_Pr->SiS_MCLKData_1 = SiS310_MCLKData_1; SiS_Pr->SiS_VCLKData = SiS310_VCLKData; SiS_Pr->SiS_VBVCLKData = SiS310_VBVCLKData; SiS_Pr->SiS_SR15 = SiS310_SR15;#ifndef LINUX_XF86 SiS_Pr->pSiS_SR07 = &SiS310_SR07; SiS_Pr->SiS_CR40 = SiS310_CR40; SiS_Pr->SiS_CR49 = SiS310_CR49; SiS_Pr->pSiS_SR1F = &SiS310_SR1F; SiS_Pr->pSiS_SR21 = &SiS310_SR21; SiS_Pr->pSiS_SR22 = &SiS310_SR22; SiS_Pr->pSiS_SR23 = &SiS310_SR23; SiS_Pr->pSiS_SR24 = &SiS310_SR24; SiS_Pr->SiS_SR25 = SiS310_SR25; SiS_Pr->pSiS_SR31 = &SiS310_SR31; SiS_Pr->pSiS_SR32 = &SiS310_SR32; SiS_Pr->pSiS_SR33 = &SiS310_SR33; SiS_Pr->pSiS_CRT2Data_1_2 = &SiS310_CRT2Data_1_2; SiS_Pr->pSiS_CRT2Data_4_D = &SiS310_CRT2Data_4_D; SiS_Pr->pSiS_CRT2Data_4_E = &SiS310_CRT2Data_4_E; SiS_Pr->pSiS_CRT2Data_4_10 = &SiS310_CRT2Data_4_10; SiS_Pr->pSiS_RGBSenseData = &SiS310_RGBSenseData; SiS_Pr->pSiS_VideoSenseData = &SiS310_VideoSenseData; SiS_Pr->pSiS_YCSenseData = &SiS310_YCSenseData; SiS_Pr->pSiS_RGBSenseData2 = &SiS310_RGBSenseData2; SiS_Pr->pSiS_VideoSenseData2 = &SiS310_VideoSenseData2; SiS_Pr->pSiS_YCSenseData2 = &SiS310_YCSenseData2;#endif SiS_Pr->SiS_PanelDelayTbl = SiS310_PanelDelayTbl; SiS_Pr->SiS_PanelDelayTblLVDS = SiS310_PanelDelayTblLVDS; SiS_Pr->SiS_St2LCD1024x768Data = SiS310_St2LCD1024x768Data; SiS_Pr->SiS_ExtLCD1024x768Data = SiS310_ExtLCD1024x768Data; SiS_Pr->SiS_St2LCD1280x1024Data = SiS310_St2LCD1280x1024Data; SiS_Pr->SiS_ExtLCD1280x1024Data = SiS310_ExtLCD1280x1024Data; SiS_Pr->SiS_CRT2Part2_1024x768_1 = SiS310_CRT2Part2_1024x768_1; SiS_Pr->SiS_PanelType00_1 = SiS310_PanelType00_1; SiS_Pr->SiS_PanelType01_1 = SiS310_PanelType01_1; SiS_Pr->SiS_PanelType02_1 = SiS310_PanelType02_1; SiS_Pr->SiS_PanelType03_1 = SiS310_PanelType03_1; SiS_Pr->SiS_PanelType04_1 = SiS310_PanelType04_1; SiS_Pr->SiS_PanelType05_1 = SiS310_PanelType05_1; SiS_Pr->SiS_PanelType06_1 = SiS310_PanelType06_1; SiS_Pr->SiS_PanelType07_1 = SiS310_PanelType07_1; SiS_Pr->SiS_PanelType08_1 = SiS310_PanelType08_1; SiS_Pr->SiS_PanelType09_1 = SiS310_PanelType09_1; SiS_Pr->SiS_PanelType0a_1 = SiS310_PanelType0a_1; SiS_Pr->SiS_PanelType0b_1 = SiS310_PanelType0b_1; SiS_Pr->SiS_PanelType0c_1 = SiS310_PanelType0c_1; SiS_Pr->SiS_PanelType0d_1 = SiS310_PanelType0d_1; SiS_Pr->SiS_PanelType0e_1 = SiS310_PanelType0e_1; SiS_Pr->SiS_PanelType0f_1 = SiS310_PanelType0f_1; SiS_Pr->SiS_PanelType00_2 = SiS310_PanelType00_2; SiS_Pr->SiS_PanelType01_2 = SiS310_PanelType01_2; SiS_Pr->SiS_PanelType02_2 = SiS310_PanelType02_2; SiS_Pr->SiS_PanelType03_2 = SiS310_PanelType03_2; SiS_Pr->SiS_PanelType04_2 = SiS310_PanelType04_2; SiS_Pr->SiS_PanelType05_2 = SiS310_PanelType05_2; SiS_Pr->SiS_PanelType06_2 = SiS310_PanelType06_2; SiS_Pr->SiS_PanelType07_2 = SiS310_PanelType07_2; SiS_Pr->SiS_PanelType08_2 = SiS310_PanelType08_2; SiS_Pr->SiS_PanelType09_2 = SiS310_PanelType09_2; SiS_Pr->SiS_PanelType0a_2 = SiS310_PanelType0a_2; SiS_Pr->SiS_PanelType0b_2 = SiS310_PanelType0b_2; SiS_Pr->SiS_PanelType0c_2 = SiS310_PanelType0c_2; SiS_Pr->SiS_PanelType0d_2 = SiS310_PanelType0d_2; SiS_Pr->SiS_PanelType0e_2 = SiS310_PanelType0e_2; SiS_Pr->SiS_PanelType0f_2 = SiS310_PanelType0f_2; SiS_Pr->SiS_PanelTypeNS_1 = SiS310_PanelTypeNS_1; SiS_Pr->SiS_PanelTypeNS_2 = SiS310_PanelTypeNS_2; SiS_Pr->SiS_CHTVUPALData = SiS310_CHTVUPALData; SiS_Pr->SiS_CHTVOPALData = SiS310_CHTVOPALData; SiS_Pr->SiS_CHTVUPALMData = SiS310_CHTVUPALMData; SiS_Pr->SiS_CHTVOPALMData = SiS310_CHTVOPALMData; SiS_Pr->SiS_CHTVUPALNData = SiS310_CHTVUPALNData; SiS_Pr->SiS_CHTVOPALNData = SiS310_CHTVOPALNData; SiS_Pr->SiS_CHTVSOPALData = SiS310_CHTVSOPALData; SiS_Pr->SiS_LVDSCRT1800x600_1 = SiS310_LVDSCRT1800x600_1; SiS_Pr->SiS_LVDSCRT11024x768_1 = SiS310_LVDSCRT11024x768_1; SiS_Pr->SiS_LVDSCRT11280x1024_1 = SiS310_LVDSCRT11280x1024_1; SiS_Pr->SiS_LVDSCRT11400x1050_1 = SiS310_LVDSCRT11400x1050_1; SiS_Pr->SiS_LVDSCRT11600x1200_1 = SiS310_LVDSCRT11600x1200_1; SiS_Pr->SiS_LVDSCRT1800x600_1_H = SiS310_LVDSCRT1800x600_1_H; SiS_Pr->SiS_LVDSCRT11024x768_1_H = SiS310_LVDSCRT11024x768_1_H; SiS_Pr->SiS_LVDSCRT11280x1024_1_H = SiS310_LVDSCRT11280x1024_1_H; SiS_Pr->SiS_LVDSCRT11400x1050_1_H = SiS310_LVDSCRT11400x1050_1_H; SiS_Pr->SiS_LVDSCRT11600x1200_1_H = SiS310_LVDSCRT11600x1200_1_H; SiS_Pr->SiS_LVDSCRT1800x600_2 = SiS310_LVDSCRT1800x600_2; SiS_Pr->SiS_LVDSCRT11024x768_2 = SiS310_LVDSCRT11024x768_2; SiS_Pr->SiS_LVDSCRT11280x1024_2 = SiS310_LVDSCRT11280x1024_2; SiS_Pr->SiS_LVDSCRT11400x1050_2 = SiS310_LVDSCRT11400x1050_2; SiS_Pr->SiS_LVDSCRT11600x1200_2 = SiS310_LVDSCRT11600x1200_2; SiS_Pr->SiS_LVDSCRT1800x600_2_H = SiS310_LVDSCRT1800x600_2_H; SiS_Pr->SiS_LVDSCRT11024x768_2_H = SiS310_LVDSCRT11024x768_2_H; SiS_Pr->SiS_LVDSCRT11280x1024_2_H = SiS310_LVDSCRT11280x1024_2_H; SiS_Pr->SiS_LVDSCRT11400x1050_2_H = SiS310_LVDSCRT11400x1050_2_H; SiS_Pr->SiS_LVDSCRT11600x1200_2_H = SiS310_LVDSCRT11600x1200_2_H; SiS_Pr->SiS_LVDSCRT1XXXxXXX_1 = SiS310_LVDSCRT1XXXxXXX_1; SiS_Pr->SiS_LVDSCRT1XXXxXXX_1_H = SiS310_LVDSCRT1XXXxXXX_1_H; SiS_Pr->SiS_CHTVCRT1UNTSC = SiS310_CHTVCRT1UNTSC; SiS_Pr->SiS_CHTVCRT1ONTSC = SiS310_CHTVCRT1ONTSC; SiS_Pr->SiS_CHTVCRT1UPAL = SiS310_CHTVCRT1UPAL; SiS_Pr->SiS_CHTVCRT1OPAL = SiS310_CHTVCRT1OPAL; SiS_Pr->SiS_CHTVCRT1SOPAL = SiS310_CHTVCRT1OPAL; SiS_Pr->SiS_CHTVReg_UNTSC = SiS310_CHTVReg_UNTSC; SiS_Pr->SiS_CHTVReg_ONTSC = SiS310_CHTVReg_ONTSC; SiS_Pr->SiS_CHTVReg_UPAL = SiS310_CHTVReg_UPAL; SiS_Pr->SiS_CHTVReg_OPAL = SiS310_CHTVReg_OPAL; SiS_Pr->SiS_CHTVReg_UPALM = SiS310_CHTVReg_UPALM; SiS_Pr->SiS_CHTVReg_OPALM = SiS310_CHTVReg_OPALM; SiS_Pr->SiS_CHTVReg_UPALN = SiS310_CHTVReg_UPALN; SiS_Pr->SiS_CHTVReg_OPALN = SiS310_CHTVReg_OPALN; SiS_Pr->SiS_CHTVReg_SOPAL = SiS310_CHTVReg_OPAL; SiS_Pr->SiS_CHTVVCLKUNTSC = SiS310_CHTVVCLKUNTSC; SiS_Pr->SiS_CHTVVCLKONTSC = SiS310_CHTVVCLKONTSC; SiS_Pr->SiS_CHTVVCLKUPAL = SiS310_CHTVVCLKUPAL; SiS_Pr->SiS_CHTVVCLKOPAL = SiS310_CHTVVCLKOPAL; SiS_Pr->SiS_CHTVVCLKUPALM = SiS310_CHTVVCLKUPALM; SiS_Pr->SiS_CHTVVCLKOPALM = SiS310_CHTVVCLKOPALM; SiS_Pr->SiS_CHTVVCLKUPALN = SiS310_CHTVVCLKUPALN; SiS_Pr->SiS_CHTVVCLKOPALN = SiS310_CHTVVCLKOPALN; SiS_Pr->SiS_CHTVVCLKSOPAL = SiS310_CHTVVCLKOPAL;}#endifstatic voidSiSInitPtr(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){ switch(HwInfo->jChipType) {#ifdef SIS315H case SIS_315H: case SIS_315: case SIS_315PRO: case SIS_550: case SIS_650: case SIS_740: case SIS_330: case SIS_661: case SIS_741: case SIS_660: case SIS_760: InitTo310Pointer(SiS_Pr, HwInfo); break;#endif#ifdef SIS300 case SIS_300: case SIS_540: case SIS_630: case SIS_730: InitTo300Pointer(SiS_Pr, HwInfo); break;#endif default: break; }}/*********************************************//* HELPER: Get ModeID *//*********************************************/USHORTSiS_GetModeID(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth, BOOLEAN FSTN, int LCDwidth, int LCDheight){ USHORT ModeIndex = 0; switch(HDisplay) { case 320: if(VDisplay == 200) ModeIndex = ModeIndex_320x200[Depth]; else if(VDisplay == 240) { if(FSTN) ModeIndex = ModeIndex_320x240_FSTN[Depth]; else ModeIndex = ModeIndex_320x240[Depth]; } break; case 400: if(VDisplay == 300) ModeIndex = ModeIndex_400x300[Depth]; break; case 512: if(VDisplay == 384) ModeIndex = ModeIndex_512x384[Depth]; break; case 640: if(VDisplay == 480) ModeIndex = ModeIndex_640x480[Depth]; else if(VDisplay == 400) ModeIndex = ModeIndex_640x400[Depth]; break; case 720: if(VDisplay == 480) ModeIndex = ModeIndex_720x480[Depth]; else if(VDisplay == 576) ModeIndex = ModeIndex_720x576[Depth]; break; case 768: if(VDisplay == 576) ModeIndex = ModeIndex_768x576[Depth]; break; case 800: if(VDisplay == 600) ModeIndex = ModeIndex_800x600[Depth]; else if(VDisplay == 480) ModeIndex = ModeIndex_800x480[Depth]; break; case 848: if(VDisplay == 480) ModeIndex = ModeIndex_848x480[Depth]; break; case 856: if(VDisplay == 480) ModeIndex = ModeIndex_856x480[Depth]; break; case 960: if(VGAEngine == SIS_315_VGA) { if(VDisplay == 540) ModeIndex = ModeIndex_960x540[Depth]; } break; case 1024: if(VDisplay == 768) ModeIndex = ModeIndex_1024x768[Depth]; else if(VDisplay == 576) ModeIndex = ModeIndex_1024x576[Depth]; else if((!(VBFlags & CRT1_LCDA)) && (VGAEngine == SIS_300_VGA)) { if(VDisplay == 600) ModeIndex = ModeIndex_1024x600[Depth]; } break; case 1152: if(VDisplay == 864) ModeIndex = ModeIndex_1152x864[Depth]; if((!(VBFlags & CRT1_LCDA)) && (VGAEngine == SIS_300_VGA)) { if(VDisplay == 768) ModeIndex = ModeIndex_1152x768[Depth]; } break; case 1280: if(VDisplay == 1024) ModeIndex = ModeIndex_1280x1024[Depth]; else if(VDisplay == 800) { if(VGAEngine == SIS_315_VGA) { if((VBFlags & CRT1_LCDA) && (LCDwidth == 1280) && (LCDheight == 800)) { ModeIndex = ModeIndex_1280x800[Depth]; } else if(!(VBFlags & CRT1_LCDA)) { ModeIndex = ModeIndex_1280x800[Depth]; } } } else if(VDisplay == 720) { if((VBFlags & CRT1_LCDA) && (LCDwidth == 1280) && (LCDheight == 720)) { ModeIndex = ModeIndex_1280x720[Depth]; } else if(!(VBFlags & CRT1_LCDA)) { ModeIndex = ModeIndex_1280x720[Depth]; } } else if(!(VBFlags & CRT1_LCDA)) { if(VDisplay == 960) ModeIndex = ModeIndex_1280x960[Depth]; else if(VDisplay == 768) { if(VGAEngine == SIS_300_VGA) { ModeIndex = ModeIndex_300_1280x768[Depth]; } else { ModeIndex = ModeIndex_310_1280x768[Depth]; } } } break; case 1360: if(VDisplay == 768) ModeIndex = ModeIndex_1360x768[Depth]; if(!(VBFlags & CRT1_LCDA)) { if(VGAEngine == SIS_300_VGA) { if(VDisplay == 1024) ModeIndex = ModeIndex_300_1360x1024[Depth]; } } break; case 1400: if(VGAEngine == SIS_315_VGA) { if(VDisplay == 1050) { if((VBFlags & CRT1_LCDA) && (((LCDwidth == 1400) && (LCDheight == 1050)) || ((LCDwidth == 1600) && (LCDheight == 1200)))) { ModeIndex = ModeIndex_1400x1050[Depth]; } else if(!(VBFlags & CRT1_LCDA)) { ModeIndex = ModeIndex_1400x1050[Depth]; } } } break; case 1600: if(VDisplay == 1200) ModeIndex = ModeIndex_1600x1200[Depth]; break; case 1680: if(VGAEngine == SIS_315_VGA) { if(VDisplay == 1050) ModeIndex = ModeIndex_1680x1050[Depth]; } break; case 1920: if(!(VBFlags & CRT1_LCDA)) { if(VGAEngine == SIS_315_VGA) { if(VDisplay == 1080) ModeIndex = ModeIndex_1920x1080[Depth]; } if(VDisplay == 1440) ModeIndex = ModeIndex_1920x1440[Depth]; } break; case 2048: if(!(VBFlags & CRT1_LCDA)) { if(VDisplay == 1536) { if(VGAEngine == SIS_300_VGA) { ModeIndex = ModeIndex_300_2048x1536[Depth]; } else { ModeIndex = ModeIndex_310_2048x1536[Depth]; } } } break; } return(ModeIndex);}USHORTSiS_GetModeID_LCD(int VGAEngine, ULONG VBFlags, int HDisplay, int VDisplay, int Depth, BOOLEAN FSTN, USHORT CustomT, int LCDwidth, int LCDheight){ USHORT ModeIndex = 0; if(VBFlags & (VB_LVDS | VB_30xBDH)) { switch(HDisplay) { case 320: if(CustomT != CUT_PANEL848) { if(VDisplay == 200) ModeIndex = ModeIndex_320x200[Depth]; else if(VDisplay == 240) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -