SiS_GetSysFlags(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo) 
SiS_GetSysFlags(struct SiS_Private *SiS_Pr) 
SiS_GetSysFlags(SiS_Private *SiS_Pr, PSIS_HW_INFO HwInfo){   unsigned char cr5f, temp1, temp2;   /* 661 and newer: NEVER write non-zero to SR11[7:4] */   /* (SR11 is used for DDC and in enable/disablebridge) */   SiS_Pr->SiS_SensibleSR11 = FALSE;   SiS_Pr->SiS_MyCR63 = 0x63;   if(HwInfo->jChipType >= SIS_330) {      SiS_Pr->SiS_MyCR63 = 0x53;      if(HwInfo->jChipType >= SIS_661) {         SiS_Pr->SiS_SensibleSR11 = TRUE;      }   }   /* You should use the macros, not these flags directly */   SiS_Pr->SiS_SysFlags = 0;   if(HwInfo->jChipType == SIS_650) {      cr5f = SiS_GetReg(SiS_Pr->SiS_P3d4,0x5f) & 0xf0;      SiS_SetRegAND(SiS_Pr->SiS_P3d4,0x5c,0x07);      temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x5c) & 0xf8;      SiS_SetRegOR(SiS_Pr->SiS_P3d4,0x5c,0xf8);      temp2 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x5c) & 0xf8;      if((!temp1) || (temp2)) {         switch(cr5f) {	    case 0x80:	    case 0x90:	    case 0xc0:	       SiS_Pr->SiS_SysFlags |= SF_IsM650;  break;	    case 0xa0:	    case 0xb0:	    case 0xe0:	       SiS_Pr->SiS_SysFlags |= SF_Is651;   break;	 }      } else {         switch(cr5f) {	    case 0x90:	       temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x5c) & 0xf8;	       switch(temp1) {	          case 0x00: SiS_Pr->SiS_SysFlags |= SF_IsM652; break;		  case 0x40: SiS_Pr->SiS_SysFlags |= SF_IsM653; break;		  default:   SiS_Pr->SiS_SysFlags |= SF_IsM650; break;	       }	       break;	    case 0xb0:	       SiS_Pr->SiS_SysFlags |= SF_Is652;  break;	    default:	       SiS_Pr->SiS_SysFlags |= SF_IsM650; break;	 }      }   }   if(HwInfo->jChipType == SIS_760) {      temp1 = SiS_GetReg(SiS_Pr->SiS_P3d4,0x78);      if(temp1 & 0x30) SiS_Pr->SiS_SysFlags |= SF_760LFB;   }}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/544393fe584d333480659a4bed30f5295355df11/init.c/clean/drivers/video/sis/init.c