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

📄 init301.c

📁 microwindows移植到S3C44B0的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
     switch (PanelIndex)     {     	case  0: PanelDesPtr = LVDS1024x768Des_1;   break;     	case  1: PanelDesPtr = LVDS1280x1024Des_1;  break;     	case  2: PanelDesPtr = LVDS1280x960Des_1;   break;     	case  3: PanelDesPtr = LVDS1024x768Des_2;   break;     	case  4: PanelDesPtr = LVDS1280x1024Des_2;  break;     	case  5: PanelDesPtr = LVDS1280x960Des_2;   break;     }  } else {     SiS_GetLVDSDesPtr(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex,                       &PanelIndex,&ResIndex);#ifdef LINUX_KERNEL     if (PanelIndex < 32)	/* >=32 = TV */         printk(KERN_INFO "sisfb: LVDS-LCD panel type %d (Resindex %d)\n", PanelIndex, ResIndex);#endif     switch (PanelIndex)     {     	case  0: PanelDesPtr = SiS_PanelType00_1;   break;     	case  1: PanelDesPtr = SiS_PanelType01_1;   break;     	case  2: PanelDesPtr = SiS_PanelType02_1;   break;     	case  3: PanelDesPtr = SiS_PanelType03_1;   break;     	case  4: PanelDesPtr = SiS_PanelType04_1;   break;     	case  5: PanelDesPtr = SiS_PanelType05_1;   break;     	case  6: PanelDesPtr = SiS_PanelType06_1;   break;     	case  7: PanelDesPtr = SiS_PanelType07_1;   break;     	case  8: PanelDesPtr = SiS_PanelType08_1;   break;     	case  9: PanelDesPtr = SiS_PanelType09_1;   break;     	case 10: PanelDesPtr = SiS_PanelType0a_1;   break;     	case 11: PanelDesPtr = SiS_PanelType0b_1;   break;     	case 12: PanelDesPtr = SiS_PanelType0c_1;   break;	/* TW: Clevo 2202   */     	case 13: PanelDesPtr = SiS_PanelType0d_1;   break;     	case 14: PanelDesPtr = SiS_PanelType0e_1;   break;	/* TW: Uniwill N271S2 */     	case 15: PanelDesPtr = SiS_PanelType0f_1;   break;     	case 16: PanelDesPtr = SiS_PanelType00_2;   break;     	case 17: PanelDesPtr = SiS_PanelType01_2;   break;     	case 18: PanelDesPtr = SiS_PanelType02_2;   break;     	case 19: PanelDesPtr = SiS_PanelType03_2;   break;     	case 20: PanelDesPtr = SiS_PanelType04_2;   break;     	case 21: PanelDesPtr = SiS_PanelType05_2;   break;     	case 22: PanelDesPtr = SiS_PanelType06_2;   break;     	case 23: PanelDesPtr = SiS_PanelType07_2;   break;     	case 24: PanelDesPtr = SiS_PanelType08_2;   break;     	case 25: PanelDesPtr = SiS_PanelType09_2;   break;     	case 26: PanelDesPtr = SiS_PanelType0a_2;   break;     	case 27: PanelDesPtr = SiS_PanelType0b_2;   break;     	case 28: PanelDesPtr = SiS_PanelType0c_2;   break;     	case 29: PanelDesPtr = SiS_PanelType0d_2;   break;     	case 30: PanelDesPtr = SiS_PanelType0e_2;   break;     	case 31: PanelDesPtr = SiS_PanelType0f_2;   break;     	case 32: PanelDesPtr = SiS_CHTVUNTSCDesData;   break;     	case 33: PanelDesPtr = SiS_CHTVONTSCDesData;   break;     	case 34: PanelDesPtr = SiS_CHTVUPALDesData;    break;     	case 35: PanelDesPtr = SiS_CHTVOPALDesData;    break;     }  }  SiS_LCDHDES = (PanelDesPtr+ResIndex)->LCDHDES;  SiS_LCDVDES = (PanelDesPtr+ResIndex)->LCDVDES;  if(SiS_LCDInfo&LCDNonExpanding){    if(SiS_LCDResInfo>=Panel1024x768){      if(ModeNo<=0x13){        modeflag = SiS_SModeIDTable[ModeIdIndex].St_ModeFlag;        if(!(modeflag&HalfDCLK)) {          SiS_LCDHDES=320;        }      }    }  }  return;}voidSiS_GetLVDSDesPtr(ULONG ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,                  USHORT RefreshRateTableIndex,USHORT *PanelIndex,		  USHORT *ResIndex){  USHORT tempbx,tempal;  tempbx=0;  if(SiS_IF_DEF_CH7005==1) {    if(!(SiS_VBInfo&SetCRT2ToLCD)) {      tempbx=32;      if(SiS_VBInfo&SetPALTV) tempbx=tempbx+2;      if(SiS_VBInfo&SetCHTVOverScan) tempbx=tempbx+1;    }  }   if(SiS_VBInfo&SetCRT2ToLCD) {    tempbx=SiS_LCDTypeInfo;    if(SiS_LCDInfo&LCDNonExpanding){      tempbx=tempbx+16;    }  }  if(ModeNo<=0x13){    	tempal = SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC;  }else{    	tempal = SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC;  }  tempal=tempal&0x1F;  *PanelIndex=tempbx;  *ResIndex=tempal;}/*301b*/voidSiS_GetLVDSDesPtrA(ULONG ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,                   USHORT RefreshRateTableIndex,USHORT *PanelIndex,		   USHORT *ResIndex){  USHORT tempbx=0,tempal;  tempbx=SiS_LCDResInfo-Panel1024x768;  if(SiS_LCDInfo&LCDNonExpanding){      tempbx=tempbx+3;  }  if(ModeNo<=0x13){    	tempal = SiS_SModeIDTable[ModeIdIndex].St_CRT2CRTC;  } else {    	tempal = SiS_RefIndex[RefreshRateTableIndex].Ext_CRT2CRTC;  }  tempal=tempal&0x1F;  *PanelIndex=tempbx;  *ResIndex=tempal;}/*end 301b*/voidSiS_SetCRT2ModeRegs(USHORT BaseAddr,USHORT ModeNo,                    PSIS_HW_DEVICE_INFO HwDeviceExtension){  USHORT i,j;  USHORT tempcl,tempah;  SiS_SetReg1(SiS_Part1Port,0x03,0x00);   /*fix write part1 index 0  BTDRAM bit Bug*/  /*301b*/  if( (SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV))  				&& (SiS_VBInfo&SetCRT2ToLCDA) ) {	/* TW:   1. for 301B/302B/301LV/302LV (on some of which	 *          IF_DEF_LVDS seems to be 1 as well)	 */      SiS_SetRegANDOR(SiS_Part1Port,0x00,~0x050,0x40); /* FUNCTION CONTROL */      SiS_SetRegAND(SiS_Part1Port,0x2E,0xF7);      SiS_SetRegANDOR(SiS_Part1Port,0x13,0xFB,0x04);      SiS_SetRegANDOR(SiS_Part1Port,0x2c,0xCF,0x30);      SiS_SetRegANDOR(SiS_Part4Port,0x21,0x3F,0xC0);      SiS_SetRegANDOR(SiS_Part4Port,0x23,0x7F,0x00);  /*end 301b*/  } else {    for(i=0,j=4;i<3;i++,j++) SiS_SetReg1(SiS_Part1Port,j,0);    tempcl=SiS_ModeType;    if(HwDeviceExtension->jChipType < SIS_315H) {      /* ---- 300 series ---- */      if(ModeNo>0x13){        tempcl=tempcl-ModeVGA;        if((tempcl>0)||(tempcl==0)){           tempah=((0x010>>tempcl)|0x080);        }      } else {        tempah=0x080;      }      if(SiS_VBInfo&SetInSlaveMode){         tempah=(tempah^0x0A0);      }    } else {    /* ---- 310 series ---- */      if(ModeNo>0x13) {        tempcl=tempcl-ModeVGA;        if((tempcl>0)||(tempcl==0)){           tempah=(0x008>>tempcl);           if (tempah==0) tempah=1;              tempah |= 0x040;        }      } else {       tempah=0x040;      }        if(SiS_VBInfo&SetInSlaveMode){          tempah=(tempah^0x050);      }    }    if(SiS_VBInfo&CRT2DisplayFlag){      	tempah=0;    }    SiS_SetReg1(SiS_Part1Port,0x00,tempah);  /* FUNCTION CONTROL */    if(SiS_IF_DEF_LVDS==0) {    /* ifdef 301*/	/* TW:   2. for 301 */    	tempah=0x01;    	if(!(SiS_VBInfo&SetInSlaveMode)) {      		tempah=(tempah|0x02);    	}    	if(!(SiS_VBInfo&SetCRT2ToRAMDAC)) {      		tempah=(tempah^0x05);      		if(!(SiS_VBInfo&SetCRT2ToLCD)) {        		tempah=(tempah^0x01);      		}    	}    	tempcl=tempah;     /* 05/03/01 ynlai for TV display bug */    	if(HwDeviceExtension->jChipType < SIS_315H) {      		/* 300 series */      		tempah=(tempah<<5)&0xFF;      		if(SiS_VBInfo&CRT2DisplayFlag){        		tempah=0;      		}      		SiS_SetReg1(SiS_Part1Port,0x01,tempah);      		tempah=tempah>>5;    	} else {      		/* 310 series */      		if(SiS_VBInfo&CRT2DisplayFlag){        		tempah=0;      		}      		tempah = (SiS_GetReg1(SiS_Part1Port,0x2E)&0xF8)|tempah;      		SiS_SetReg1(SiS_Part1Port,0x2E,tempah);      		tempah=tempcl;    	}    	if((SiS_ModeType==ModeVGA)&&(!(SiS_VBInfo&SetInSlaveMode))){      		tempah=tempah|0x010;    	}           	if(SiS_LCDResInfo==Panel1024x768)         	tempah=tempah|0x080;      	if((SiS_LCDResInfo==Panel1280x1024)||(SiS_LCDResInfo==Panel1280x960)){      		tempah=tempah|0x080;    	}    	if(SiS_VBInfo&SetCRT2ToTV){      		if(SiS_VBInfo&SetInSlaveMode){        		if(SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV)) {   /*301b*/          			if(SiS_SetFlag&TVSimuMode)                			tempah=tempah|0x020;        		} else          			tempah=tempah|0x020;      		}    	}    	SiS_SetRegANDOR(SiS_Part4Port,0x0D,~0x0BF,tempah);    	tempah=0;    	if(SiS_VBInfo&SetCRT2ToTV) {      		if(SiS_VBInfo&SetInSlaveMode) {       			if(SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV)) { /*301b*/           		{            			SiS_SetFlag=SiS_SetFlag|RPLLDIV2XO;            			tempah=tempah|0x40;          		}       			} else {        			if(!(SiS_SetFlag&TVSimuMode)) {          				if(!(SiS_VBInfo&SetCRT2ToHiVisionTV)) {            					SiS_SetFlag=SiS_SetFlag|RPLLDIV2XO;            					tempah=tempah|0x40;          				}        			}      			}     		}      		else {        		SiS_SetFlag=SiS_SetFlag|RPLLDIV2XO;        		tempah=tempah|0x40;      		}    	}    	if(SiS_LCDResInfo==Panel1280x1024) tempah=tempah|0x80;    	if(SiS_LCDResInfo==Panel1280x960) tempah=tempah|0x80;    	SiS_SetReg1(SiS_Part4Port,0x0C,tempah);    } else {    	/* TW: 3. for LVDS, _not_ 301B/302B/301LV/302LV */    	tempah=0;    	if((!(SiS_VBInfo&SetInSlaveMode)) &&          	    (ModeNo!=0x2e)&&(ModeNo!=0x30)&&(ModeNo!=0x38)&&(ModeNo!=0x3A)) {      			tempah=tempah|0x02;    	}    	SiS_SetRegANDOR(SiS_Part1Port,0x2e,0xF0,tempah); /* <------------------- */    }  }  /*301b*/  if( (SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV)) 				&& (!(SiS_VBInfo&SetCRT2ToLCDA))){      if(SiS_IsDualEdge(BaseAddr))         SiS_SetRegANDOR(SiS_Part1Port,0x13,0xFB,0x00);      else         SiS_SetRegANDOR(SiS_Part1Port,0x13,0xFF,0x00);      if(SiS_IsDualEdge(BaseAddr))         SiS_SetRegANDOR(SiS_Part1Port,0x2c,0xCF,0x00);      else         SiS_SetRegANDOR(SiS_Part1Port,0x2c,0xFF,0x00);      if(SiS_IsDualEdge(BaseAddr))         SiS_SetRegANDOR(SiS_Part4Port,0x21,0x3F,0x00);      else         SiS_SetRegANDOR(SiS_Part4Port,0x21,0xFF,0x00);      if(SiS_IsDualEdge(BaseAddr))         SiS_SetRegANDOR(SiS_Part4Port,0x23,0xFF,0x80);       else         SiS_SetRegANDOR(SiS_Part4Port,0x23,0xFF,0x00);       }  /*end 301b*/}voidSiS_GetCRT2Data(ULONG ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,                USHORT RefreshRateTableIndex){  if(SiS_IF_DEF_LVDS==0) { /* 301  */     if(SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV)) {        if(SiS_VBInfo&SetCRT2ToLCDA)          SiS_GetCRT2DataLVDS(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex);        else          SiS_GetCRT2Data301(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex);     } else     	SiS_GetCRT2Data301(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex);     return;  } else {  /* LVDS */     SiS_GetCRT2DataLVDS(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex);     return;  }}voidSiS_GetCRT2DataLVDS(ULONG ROMAddr,USHORT ModeNo,USHORT ModeIdIndex,                    USHORT RefreshRateTableIndex){   USHORT tempax,tempbx;   USHORT CRT2Index,ResIndex;   SiS_LVDSDataStruct *LVDSData=NULL;   SiS_GetCRT2ResInfo(ROMAddr,ModeNo,ModeIdIndex);   /*301b*/   if((SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV))   	 && (SiS_VBInfo&SetCRT2ToLCDA)) {      SiS_GetCRT2PtrA(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex,                      &CRT2Index,&ResIndex);      switch (CRT2Index) {      	case  0:  LVDSData=SiS_LVDS1024x768Data_1;    break;      	case  1:  LVDSData=SiS_LVDS1280x1024Data_1;   break;      	case  2:  LVDSData=SiS_LVDS1280x1024Data_1;   break;    	/*  case  2:  LVDSData=SiS_LVDS1280x960Data_1;  break;*/      	case  3:  LVDSData=SiS_LVDS1024x768Data_2;    break;      	case  4:  LVDSData=SiS_LVDS1280x1024Data_2;   break;      	case  5:  LVDSData=SiS_LVDS1280x1024Data_2;   break;    	/*  case  5:  LVDSData=SiS_LVDS1280x960Data_2;  break; */       }       } else {      SiS_GetCRT2Ptr(ROMAddr,ModeNo,ModeIdIndex,RefreshRateTableIndex,&CRT2Index,&ResIndex);      switch (CRT2Index) {      	case  0:  LVDSData=SiS_LVDS800x600Data_1;    break;      	case  1:  LVDSData=SiS_LVDS1024x768Data_1;   break;      	case  2:  LVDSData=SiS_LVDS1280x1024Data_1;  break;      	case  3:  LVDSData=SiS_LVDS800x600Data_2;    break;      	case  4:  LVDSData=SiS_LVDS1024x768Data_2;   break;      	case  5:  LVDSData=SiS_LVDS1280x1024Data_2;  break;      	case  6:  LVDSData=SiS_LVDS640x480Data_1;    break;      	case  7:  LVDSData=SiS_CHTVUNTSCData;        break;      	case  8:  LVDSData=SiS_CHTVONTSCData;        break;      	case  9:  LVDSData=SiS_CHTVUPALData;         break;      	case 10:  LVDSData=SiS_CHTVOPALData;         break;      	case 11:  LVDSData=SiS_LVDS320x480Data_1;    break;     }   }   SiS_VGAHT = (LVDSData+ResIndex)->VGAHT;   SiS_VGAVT = (LVDSData+ResIndex)->VGAVT;   SiS_HT = (LVDSData+ResIndex)->LCDHT;   SiS_VT = (LVDSData+ResIndex)->LCDVT;  /*301b*/ /* TW: I have NOT added LVDS check here */  if( (SiS_IF_DEF_LVDS==0) &&      (SiS_VBType&(VB_SIS301B|VB_SIS302B|VB_SIS301LV|VB_SIS302LV))) {/*for test*/    if(!(SiS_LCDInfo&LCDNonExpanding)){         if(SiS_LCDResInfo==Panel1024x768){           tempax=1024;           tempbx=768;         } else {           tempax=1280;           tempbx=1024;         }         SiS_HDE=tempax;         SiS_VDE=tempbx;    }  } else {

⌨️ 快捷键说明

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