Lines Matching refs:pXGI

478 static void xgiSaveUnlockExtRegisterLock(XGIPtr pXGI, unsigned char *reg1,
480 static void xgiRestoreExtRegisterLock(XGIPtr pXGI, unsigned char reg1,
530 XGIPtr pXGI = xnfcalloc(sizeof(XGIRec), 1);
533 memset(pXGI, 0, sizeof(XGIRec));
535 pScrn->driverPrivate = pXGI;
536 pXGI->pScrn = pScrn;
545 XGIPtr pXGI = XGIPTR(pScrn);
549 if (!pXGI)
552 pXGIEnt = ENTITY_PRIVATE(pXGI);
554 if (!IS_SECOND_HEAD(pXGI)) {
562 pXGIEnt->BIOS = pXGI->BIOS = NULL;
565 pXGIEnt->XGI_Pr = pXGI->XGI_Pr = NULL;
568 pXGIEnt->RenderAccelArray = pXGI->RenderAccelArray = NULL;
571 pXGI->BIOS = NULL;
572 pXGI->XGI_Pr = NULL;
573 pXGI->RenderAccelArray = NULL;
577 if (pXGI->BIOS)
578 xfree(pXGI->BIOS);
579 pXGI->BIOS = NULL;
580 if (pXGI->XGI_Pr)
581 xfree(pXGI->XGI_Pr);
582 pXGI->XGI_Pr = NULL;
583 if (pXGI->RenderAccelArray)
584 xfree(pXGI->RenderAccelArray);
585 pXGI->RenderAccelArray = NULL;
589 if (pXGI->MetaModes)
590 xfree(pXGI->MetaModes);
591 pXGI->MetaModes = NULL;
593 if (pXGI->CRT1Modes) {
594 if (pXGI->CRT1Modes != pScrn->modes) {
605 pScrn->currentMode = pXGI->CRT1CurrentMode;
606 pScrn->modes = pXGI->CRT1Modes;
607 pXGI->CRT1CurrentMode = NULL;
608 pXGI->CRT1Modes = NULL;
612 if (pXGI->pVbe)
613 vbeFree(pXGI->pVbe);
614 pXGI->pVbe = NULL;
634 XGIPtr pXGI = XGIPTR(pScrn);
644 PVB_DEVICE_INFO pVBInfo = pXGI->XGI_Pr;
645 PXGI_HW_DEVICE_INFO pHwDevInfo = &pXGI->xgi_HwDevExt;
655 if (IS_DUAL_HEAD(pXGI)) {
656 if (IS_SECOND_HEAD(pXGI))
663 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
672 pXGI->Blank = FALSE;
679 sr11 = (pXGI->LCDon & 0x0C);
689 pXGI->Blank = TRUE;
706 pXGI->Blank = TRUE;
723 pXGI->Blank = TRUE;
745 if ((!(pXGI->VBFlags & CRT1_LCDA))
746 || (pXGI->XGI_Pr->VBType & VB_XGI301C)) {
748 if (!pXGI->CRT1off) {
756 && ((!(pXGI->VBFlags & CRT1_LCDA))
757 || (pXGI->XGI_Pr->VBType & VB_XGI301C))) {
886 XGIPtr pXGI;
903 pXGI = XGIGetRec(pScrn);
904 if (pXGI == NULL) {
908 pXGI->PciInfo = dev;
1043 XGIPtr pXGI = XGIPTR(pScrn);
1124 pXGI->maxxfbmem) || (mode->HDisplay > 4088)
1138 pXGI->AtLeastOneNonClone = TRUE;
1209 XGIPtr pXGI = XGIPTR(pScrn);
1216 pXGI->AtLeastOneNonClone = FALSE;
1252 XGIPtr pXGI = XGIPTR(pScrn);
1263 pXGI->AtLeastOneNonClone = FALSE;
1410 XGIPtr pXGI = XGIPTR(pScrn1);
1488 else if (pXGI->MergedFBXDPI) {
1491 pScrn1->xDpi = pXGI->MergedFBXDPI;
1492 pScrn1->yDpi = pXGI->MergedFBYDPI;
1549 XGIFreeCRT2Structs(XGIPtr pXGI)
1551 if (pXGI->CRT2pScrn) {
1552 if (pXGI->CRT2pScrn->modes) {
1553 while (pXGI->CRT2pScrn->modes)
1554 xf86DeleteMode(&pXGI->CRT2pScrn->modes,
1555 pXGI->CRT2pScrn->modes);
1557 if (pXGI->CRT2pScrn->monitor) {
1558 if (pXGI->CRT2pScrn->monitor->Modes) {
1559 while (pXGI->CRT2pScrn->monitor->Modes)
1560 xf86DeleteMode(&pXGI->CRT2pScrn->monitor->Modes,
1561 pXGI->CRT2pScrn->monitor->Modes);
1563 if (pXGI->CRT2pScrn->monitor->DDC)
1564 xfree(pXGI->CRT2pScrn->monitor->DDC);
1565 xfree(pXGI->CRT2pScrn->monitor);
1567 xfree(pXGI->CRT2pScrn);
1568 pXGI->CRT2pScrn = NULL;
1577 XGIPtr pXGI = XGIPTR(pScrn);
1609 PXGI_HW_DEVICE_INFO pHwDevInfo = &pXGI->xgi_HwDevExt;
1623 pInt = xf86InitInt10(pXGI->pEnt->index);
1727 XGIPtr pXGI = XGIPTR(pScrn);
1729 if(IS_DUAL_HEAD(pXGI))
1731 if(IS_SECOND_HEAD(pXGI))
1742 else if(pXGI->CRT1off)
2177 XGIPtr pXGI = XGIPTR(pScrn);
2186 if(pXGI->IgnoreDDC)
2190 XGIPowerSaving(pXGI->XGI_Pr, 0x00);
2207 pXGI->pVbe = NULL;
2211 if (IS_DUAL_HEAD(pXGI) && (!didddc2) && !IS_SECOND_HEAD(pXGI))
2216 if ((pXGI->CRT1off) || (pXGI->VBFlags & CRT1_LCDA))
2228 if (pXGI->xgi_HwDevExt.jChipType == XG27)
2300 if (pXGI->xgi_HwDevExt.jChipType == XG21) /* CRT1 -DVI */
2329 /* if((pXGI->xgi_HwDevExt.jChipType == XG27) && (PowerSavingStatus == 0x07))
2332 if((pXGI->xgi_HwDevExt.jChipType == XG21) && (PowerSavingStatus == 0x03))
2336 XGIPowerSaving(pXGI->XGI_Pr, PowerSavingStatus);
2341 if (pXGI->xgi_HwDevExt.jChipType == XG27)
2344 pXGI->CRT1Range.loH = 1000;
2345 pXGI->CRT1Range.loV = 1000;
2346 pXGI->CRT1Range.hiH = 0;
2347 pXGI->CRT1Range.hiV = 0;
2348 XGIGetMonitorRangeByDDC(&(pXGI->CRT1Range), pMonitorCRT1);
2351 XGIGetMonitorRangeByDDC(&(pXGI->CRT1Range), pMonitorDVI);
2356 pXGI->CRT1Range.loV = 1000;
2357 pXGI->CRT1Range.loH = 1000;
2358 pXGI->CRT1Range.hiH = 0;
2359 pXGI->CRT1Range.hiV = 0;
2360 XGIGetMonitorRangeByDDC(&(pXGI->CRT1Range), pMonitorDVI);
2363 pXGI->CRT1Range.loH = 0;
2364 pXGI->CRT1Range.loV = 0;
2365 pXGI->CRT1Range.hiH = 1000;
2366 pXGI->CRT1Range.hiV = 1000;
2371 pXGI->CRT2Range.loV = 1000;
2372 pXGI->CRT2Range.loH = 1000;
2373 pXGI->CRT2Range.hiH = 0;
2374 pXGI->CRT2Range.hiV = 0;
2375 XGIGetMonitorRangeByDDC(&(pXGI->CRT2Range), pMonitorCRT2);
2378 pXGI->CRT2Range.loH = 0;
2379 pXGI->CRT2Range.loV = 0;
2380 pXGI->CRT2Range.hiH = 1000;
2381 pXGI->CRT2Range.hiV = 1000;
2387 pXGI->CRT1Range.loH = 1000;
2388 pXGI->CRT1Range.loV = 1000;
2389 pXGI->CRT1Range.hiH = 0;
2390 pXGI->CRT1Range.hiV = 0;
2391 XGIGetMonitorRangeByDDC(&(pXGI->CRT1Range), pMonitor);
2394 pXGI->CRT1Range.loH = 0;
2395 pXGI->CRT1Range.loV = 0;
2396 pXGI->CRT1Range.hiH = 1000;
2397 pXGI->CRT1Range.hiV = 1000;
2401 pXGI->CRT2Range.loV = 1000;
2402 pXGI->CRT2Range.loH = 1000;
2403 pXGI->CRT2Range.hiH = 0;
2404 pXGI->CRT2Range.hiV = 0;
2405 XGIGetMonitorRangeByDDC(&(pXGI->CRT2Range), pMonitorDVI);
2408 pXGI->CRT2Range.loH = 0;
2409 pXGI->CRT2Range.loV = 0;
2410 pXGI->CRT2Range.hiH = 1000;
2411 pXGI->CRT2Range.hiV = 1000;
2416 /* if (pXGI->xgi_HwDevExt.jChipType == XG21) { */
2417 if ((pXGI->xgi_HwDevExt.jChipType == XG21) || (pXGI->xgi_HwDevExt.jChipType == XG27) ) {
2419 if (pXGI->CRT1Range.loH < pXGI->CRT2Range.loH) {
2420 pXGI->CRT1Range.loH = pXGI->CRT2Range.loH;
2422 if (pXGI->CRT1Range.loV < pXGI->CRT2Range.loV) {
2423 pXGI->CRT1Range.loV = pXGI->CRT2Range.loV;
2425 if (pXGI->CRT1Range.hiH > pXGI->CRT2Range.hiH) {
2426 pXGI->CRT1Range.hiH = pXGI->CRT2Range.hiH;
2428 if (pXGI->CRT1Range.hiV > pXGI->CRT2Range.hiV) {
2429 pXGI->CRT1Range.hiV = pXGI->CRT2Range.hiV;
2434 XGISyncDDCMonitorRange(pScrn->monitor, &pXGI->CRT1Range);
2444 if (pXGI->MergedFB) {
2445 pXGI->CRT2pScrn->monitor = xalloc(sizeof(MonRec));
2446 if (pXGI->CRT2pScrn->monitor) {
2448 memcpy(pXGI->CRT2pScrn->monitor, pScrn->monitor, sizeof(MonRec));
2449 pXGI->CRT2pScrn->monitor->DDC = NULL;
2450 pXGI->CRT2pScrn->monitor->Modes = NULL;
2461 if (!pXGI->CRT2pScrn->monitor->Modes)
2462 pXGI->CRT2pScrn->monitor->Modes = newm;
2471 if ((pMonitor = XGIInternalDDC(pXGI->CRT2pScrn, 1))) {
2475 xf86SetDDCproperties(pXGI->CRT2pScrn, pMonitor);
2477 pXGI->CRT2pScrn->monitor->DDC = pMonitor;
2480 if (!pXGI->CRT2HSync) {
2481 pXGI->CRT2pScrn->monitor->nHsync = 0;
2483 if (!pXGI->CRT2VRefresh) {
2484 pXGI->CRT2pScrn->monitor->nVrefresh = 0;
2496 if (pXGI->CRT2pScrn)
2497 xfree(pXGI->CRT2pScrn);
2498 pXGI->CRT2pScrn = NULL;
2499 pXGI->MergedFB = FALSE;
2505 if (pXGI->MergedFB) {
2634 XGIPtr pXGI;
2713 pXGI = XGIGetRec(pScrn);
2714 if (pXGI == NULL) {
2715 XGIErrorLog(pScrn, "Could not allocate memory for pXGI private\n");
2719 pXGI->IODBase = pScrn->domainIOBase;
2723 pXGI->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
2724 if (pXGI->pEnt->location.type != BUS_PCI) {
2735 pXGI->entityPrivate = pXGIEnt;
2749 pXGI->PciInfo = xf86GetPciInfoForEntity(pXGI->pEnt->index);
2750 pXGI->PciTag = pciTag(pXGI->PciInfo->bus, pXGI->PciInfo->device,
2751 pXGI->PciInfo->func);
2754 pXGI->Primary = xf86IsPrimaryPci(pXGI->PciInfo);
2757 (pXGI->Primary ? "primary" : "secondary"));
2759 if (pXGI->Primary) {
2761 VGAHWPTR(pScrn)->MapPhys = pXGI->PciInfo->ioBase[2] + 0xf2000000;
2777 (void *)(intptr_t)pXGI->PciInfo->regions[2].base_addr, VGAHWPTR(pScrn)->Base);
2779 (void *)(intptr_t)pXGI->PciInfo->ioBase[2], VGAHWPTR(pScrn)->Base);
2789 VGAHWPTR(pScrn)->PIOOffset = pXGI->IODBase - 0x380 +
2791 (pXGI->PciInfo->regions[2].base_addr & 0xFFFC)
2793 (pXGI->PciInfo->ioBase[2] & 0xFFFC)
2797 pXGI->pInt = NULL;
2798 if (!pXGI->Primary) {
2808 pXGI->pInt = xf86InitInt10(pXGI->pEnt->index);
2818 xf86SetOperatingState(resVgaMem, pXGI->pEnt->index, ResUnusedOpr);
2833 if (pXGI->pInt)
2834 xf86FreeInt10(pXGI->pInt);
2851 if (pXGI->pEnt->device->chipset && *pXGI->pEnt->device->chipset) {
2853 pScrn->chipset = pXGI->pEnt->device->chipset;
2854 pXGI->Chipset = xf86StringToToken(XGIChipsets, pScrn->chipset);
2857 else if (pXGI->pEnt->device->chipID >= 0) {
2859 pXGI->Chipset = pXGI->pEnt->device->chipID;
2861 (char *) xf86TokenToString(XGIChipsets, pXGI->Chipset);
2865 pXGI->Chipset);
2870 pXGI->Chipset = DEVICE_ID(pXGI->PciInfo);
2872 (char *) xf86TokenToString(XGIChipsets, pXGI->Chipset);
2874 if (pXGI->pEnt->device->chipRev >= 0) {
2875 pXGI->ChipRev = pXGI->pEnt->device->chipRev;
2877 pXGI->ChipRev);
2880 pXGI->ChipRev = CHIP_REVISION(pXGI->PciInfo);
2882 pXGI->xgi_HwDevExt.jChipRevision = pXGI->ChipRev;
2893 pXGI->Chipset);
2898 if (pXGI->pInt)
2899 xf86FreeInt10(pXGI->pInt);
2904 if (pXGI->Chipset < 0) {
2911 if (pXGI->pInt)
2912 xf86FreeInt10(pXGI->pInt);
2918 pXGI->ChipFlags = 0;
2919 pXGI->XGI_SD_Flags = 0;
2921 switch (pXGI->Chipset) {
2925 pXGI->xgi_HwDevExt.jChipType = XG40;
2926 pXGI->myCR63 = 0x63;
2927 pXGI->mmioSize = 64;
2931 pXGI->xgi_HwDevExt.jChipType = XG27;
2932 pXGI->myCR63 = 0x63;
2933 pXGI->mmioSize = 64;
2940 if (pXGI->pInt) {
2941 xf86FreeInt10(pXGI->pInt);
2950 if((pXGI->Chipset != PCI_CHIP_XGIXG20)&&(pXGI->Chipset != PCI_CHIP_XGIXG21)&&( pXGI->Chipset != PCI_CHIP_XGIXG27 ))
2970 pXGI->CursorSize = 4096;
2985 pXGI->SecondHead = FALSE;
2989 pXGI->DualHeadMode = TRUE;
2997 pXGI->SecondHead = TRUE;
2999 pXGI->DualHeadMode = TRUE;
3004 pXGI->SecondHead = FALSE;
3005 pXGI->DualHeadMode = FALSE;
3011 pXGI->SecondHead = FALSE;
3012 pXGI->DualHeadMode = FALSE;
3017 pXGI->XGI_Pr = NULL;
3019 pXGI->XGI_Pr = pXGIEnt->XGI_Pr;
3022 if (!pXGI->XGI_Pr) {
3023 if (!(pXGI->XGI_Pr = xnfcalloc(sizeof(VB_DEVICE_INFO), 1))) {
3029 if (pXGI->pInt)
3030 xf86FreeInt10(pXGI->pInt);
3036 pXGIEnt->XGI_Pr = pXGI->XGI_Pr;
3038 memset(pXGI->XGI_Pr, 0, sizeof(VB_DEVICE_INFO));
3043 pXGI->RelIO = (XGIIOADDRESS)(((IOADDRESS)VGAHWPTR(pScrn)->Base & 0xFFFFFFFC) + pXGI->IODBase);
3046 pXGI->RelIO = (XGIIOADDRESS) (pXGI->IODBase |
3048 (pXGI->PciInfo->regions[2].base_addr & 0xFFFC)
3050 (pXGI->PciInfo->ioBase[2] & 0xFFFC)
3055 pXGI->xgi_HwDevExt.pjIOAddress = (XGIIOADDRESS) (pXGI->RelIO + 0x30);
3057 (unsigned long) pXGI->RelIO);
3058 ErrorF("xgi_driver.c-pXGI->xgi_HwDevExt.pjIOAddress=0x%lx...\n", pXGI->xgi_HwDevExt.pjIOAddress);
3066 if (pXGI->pInt)
3067 xf86FreeInt10(pXGI->pInt);
3090 if (pXGI->pInt)
3091 xf86FreeInt10(pXGI->pInt);
3117 if (pXGI->pInt)
3118 xf86FreeInt10(pXGI->pInt);
3151 if (pXGI->pInt)
3152 xf86FreeInt10(pXGI->pInt);
3160 pXGI->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
3161 pXGI->CurrentLayout.depth = pScrn->depth;
3170 if (pXGI->pInt)
3171 xf86FreeInt10(pXGI->pInt);
3186 if (pXGI->pInt)
3187 xf86FreeInt10(pXGI->pInt);
3194 if ((IS_DUAL_HEAD(pXGI)) && (pScrn->bitsPerPixel == 8)) {
3199 if (pXGI->pInt)
3200 xf86FreeInt10(pXGI->pInt);
3218 if (pXGI->pInt)
3219 xf86FreeInt10(pXGI->pInt);
3236 xgiSaveUnlockExtRegisterLock(pXGI, &srlockReg, &crlockReg);
3239 pXGI->xgi_HwDevExt.pjVirtualRomBase = NULL;
3240 pXGI->BIOS = NULL;
3241 pXGI->xgi_HwDevExt.UseROM = FALSE;
3248 if ((pXGI->MergedFB) && (pScrn->bitsPerPixel == 8)) {
3251 pXGI->MergedFB = pXGI->MergedFBAuto = FALSE;
3261 pXGI->FbAddress = pXGI->PciInfo->regions[0].base_addr & 0xFFFFFFF0;
3263 if (pXGI->pEnt->device->MemBase != 0) {
3268 pXGI->FbAddress = pXGI->pEnt->device->MemBase;
3272 pXGI->FbAddress = pXGI->PciInfo->memBase[0] & 0xFFFFFFF0;
3276 pXGI->realFbAddress = pXGI->FbAddress;
3280 IS_DUAL_HEAD(pXGI) ? "Global l" : "L",
3281 (unsigned long) pXGI->FbAddress);
3284 pXGI->IOAddress = pXGI->PciInfo->regions[1].base_addr & 0xFFFFFFF0;
3286 if (pXGI->pEnt->device->IOBase != 0) {
3291 pXGI->IOAddress = pXGI->pEnt->device->IOBase;
3295 pXGI->IOAddress = pXGI->PciInfo->memBase[1] & 0xFFFFFFF0;
3301 (unsigned long) pXGI->IOAddress, pXGI->mmioSize);
3302 pXGI->xgi_HwDevExt.bIntegratedMMEnabled = TRUE;
3306 if (xf86RegisterResources(pXGI->pEnt->index, NULL, ResExclusive)) {
3313 if (pXGI->pInt)
3314 xf86FreeInt10(pXGI->pInt);
3315 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
3322 if (pXGI->pEnt->device->videoRam != 0) {
3330 pXGI->FbMapSize = pXGI->availMem = pScrn->videoRam * 1024;
3331 pXGI->xgi_HwDevExt.ulVideoMemorySize = pScrn->videoRam * 1024;
3332 pXGI->xgi_HwDevExt.bSkipDramSizing = TRUE;
3345 if (pXGI->TurboQueue) {
3348 pXGI->TurboQueue = FALSE;
3352 pXGI->availMem -= (pXGI->TurboQueue) ? (64 * 1024) : pXGI->CursorSize;
3362 if (IS_DUAL_HEAD(pXGI)) {
3363 if (pXGI->maxxfbmem) {
3368 pXGI->availMem &= 0xFFFFE000;
3369 pXGI->maxxfbmem = pXGI->availMem;
3371 else if (pXGI->maxxfbmem) {
3372 if (pXGI->maxxfbmem > pXGI->availMem) {
3373 if (pXGI->xgifbMem) {
3374 pXGI->maxxfbmem = pXGI->xgifbMem * 1024;
3381 pXGI->maxxfbmem = pXGI->availMem;
3384 else if (pXGI->xgifbMem) {
3385 if (pXGI->maxxfbmem > pXGI->xgifbMem * 1024) {
3388 pXGI->maxxfbmem = pXGI->xgifbMem * 1024;
3392 else if (pXGI->xgifbMem) {
3393 pXGI->maxxfbmem = pXGI->xgifbMem * 1024;
3396 pXGI->maxxfbmem = pXGI->availMem;
3399 pXGI->maxxfbmem / 1024);
3401 pXGI->CRT1off = -1;
3413 if (pXGI->ForceCRT1Type == CRT1_LCDA) {
3415 (pXGI->XGI_Pr->
3420 pXGI->ForceCRT1Type = CRT1_VGA;
3422 else if (!(pXGI->VBFlags & CRT2_LCD)) {
3426 pXGI->ForceCRT1Type = CRT1_VGA;
3431 pXGI->XGI_SD_Flags |= XGI_SD_ADDLSUPFLAG;
3433 if (pXGI->XGI_Pr->VBType & VB_XGIVB) {
3434 pXGI->XGI_SD_Flags |= XGI_SD_SUPPORTTV;
3438 if (pXGI->XGI_Pr->VBType & (VB_XGI301 | VB_XGI301B | VB_XGI302B)) {
3439 pXGI->XGI_SD_Flags |= XGI_SD_SUPPORTHIVISION;
3444 pXGI->XGI_SD_Flags |= XGI_SD_SUPPORTYPBPRAR;
3453 PDEBUG(ErrorF("3496 pXGI->VBFlags =%x\n", pXGI->VBFlags));
3455 if (!(pXGI->XGI_SD_Flags & XGI_SD_SUPPORTYPBPR)) {
3456 if ((pXGI->ForceTVType != -1) && (pXGI->ForceTVType & TV_YPBPR)) {
3457 pXGI->ForceTVType = -1;
3463 if (!(pXGI->XGI_SD_Flags & XGI_SD_SUPPORTHIVISION)) {
3464 if ((pXGI->ForceTVType != -1) && (pXGI->ForceTVType & TV_HIVISION)) {
3465 pXGI->ForceTVType = -1;
3471 if (pXGI->XGI_Pr->VBType & VB_XGIVB) {
3472 pXGI->XGI_SD_Flags |= (XGI_SD_SUPPORTPALMN | XGI_SD_SUPPORTNTSCJ);
3474 if (pXGI->XGI_Pr->VBType & VB_XGIVB) {
3475 pXGI->XGI_SD_Flags |= XGI_SD_SUPPORTTVPOS;
3477 if (pXGI->XGI_Pr->
3479 pXGI->XGI_SD_Flags |= (XGI_SD_SUPPORTSCART | XGI_SD_SUPPORTVGA2);
3482 if ((pXGI->XGI_Pr->
3484 && (pXGI->VBFlags & CRT2_LCD)) {
3485 pXGI->XGI_SD_Flags |= XGI_SD_SUPPORTLCDA;
3488 pXGI->VBFlags |= pXGI->ForceCRT1Type;
3491 xf86DrvMsg(0, X_INFO, "SDFlags %lx\n", pXGI->XGI_SD_Flags);
3495 if (!IS_DUAL_HEAD(pXGI) || IS_SECOND_HEAD(pXGI)) {
3496 xf86DrvMsg(pScrn->scrnIndex, pXGI->CRT1gammaGiven ? X_CONFIG : X_INFO,
3498 pXGI->CRT1gamma ? "enabled" : "disabled");
3502 if (pXGI->XGI_Pr->VBType & VB_XGIVB) {
3503 if (pXGI->ForceTVType != -1) {
3504 pXGI->VBFlags &= ~(TV_INTERFACE);
3505 pXGI->VBFlags |= pXGI->ForceTVType;
3506 if (pXGI->VBFlags & TV_YPBPR) {
3507 pXGI->VBFlags &= ~(TV_STANDARD);
3508 pXGI->VBFlags &= ~(TV_YPBPRAR);
3509 pXGI->VBFlags |= pXGI->ForceYPbPrType;
3510 pXGI->VBFlags |= pXGI->ForceYPbPrAR;
3522 if (((pXGI->XGI_Pr->VBType & VB_XGIVB) == 0)
3523 || ((pXGI->VBFlags & (CRT2_VGA | CRT2_LCD | CRT2_TV)) == 0)
3525 && (pXGI->XGI_Pr->VBType & VB_XGI301LV302LV))
3526 || (pXGI->VBFlags & CRT1_LCDA)) {
3527 pXGI->CRT1off = 0;
3532 if ((pXGI->NonDefaultPAL != -1) || (pXGI->NonDefaultNTSC != -1)) {
3533 if (!(pXGI->XGI_Pr->VBType & VB_XGIVB)) {
3536 pXGI->NonDefaultPAL = pXGI->NonDefaultNTSC = -1;
3537 pXGI->VBFlags &= ~(TV_PALN | TV_PALM | TV_NTSCJ);
3538 pXGI->XGI_SD_Flags &=
3548 if (pXGI->MergedFB) {
3549 pXGI->CRT2pScrn = xalloc(sizeof(ScrnInfoRec));
3550 if (!pXGI->CRT2pScrn) {
3554 pXGI->MergedFB = FALSE;
3557 memcpy(pXGI->CRT2pScrn, pScrn, sizeof(ScrnInfoRec));
3561 PDEBUG(ErrorF("3674 pXGI->VBFlags =%x\n", pXGI->VBFlags));
3569 if (pXGI->VBFlags & DISPTYPE_DISP2) {
3570 if (pXGI->CRT1off) { /* CRT2 only ------------------------------- */
3571 if (IS_DUAL_HEAD(pXGI)) {
3578 if (pXGI->pInt)
3579 xf86FreeInt10(pXGI->pInt);
3580 pXGI->pInt = NULL;
3581 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
3586 if (pXGI->MergedFB) {
3587 if (pXGI->MergedFBAuto) {
3594 if (pXGI->CRT2pScrn)
3595 xfree(pXGI->CRT2pScrn);
3596 pXGI->CRT2pScrn = NULL;
3597 pXGI->MergedFB = FALSE;
3600 pXGI->VBFlags |= VB_DISPMODE_SINGLE;
3603 else if (IS_DUAL_HEAD(pXGI)) {
3604 pXGI->VBFlags |= (VB_DISPMODE_DUAL | DISPTYPE_CRT1);
3609 pXGI->VBFlags |= (VB_DISPMODE_MIRROR | DISPTYPE_CRT1);
3612 if (IS_DUAL_HEAD(pXGI)) {
3618 if (pXGI->pInt)
3619 xf86FreeInt10(pXGI->pInt);
3620 pXGI->pInt = NULL;
3621 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
3627 if (pXGI->MergedFB) {
3628 if (pXGI->MergedFBAuto) {
3635 if (pXGI->CRT2pScrn)
3636 xfree(pXGI->CRT2pScrn);
3637 pXGI->CRT2pScrn = NULL;
3638 pXGI->MergedFB = FALSE;
3641 PDEBUG(ErrorF("3782 pXGI->VBFlags =%x\n", pXGI->VBFlags));
3642 pXGI->VBFlags |= (VB_DISPMODE_SINGLE | DISPTYPE_CRT1);
3651 pXGI->VBFlags_backup = pXGI->VBFlags;
3654 if (!IS_DUAL_HEAD(pXGI) || !IS_SECOND_HEAD(pXGI)) {
3663 if (IS_DUAL_HEAD(pXGI)) {
3664 if (!IS_SECOND_HEAD(pXGI)) {
3667 pXGI->maxxfbmem /= 2;
3669 pXGI->dhmOffset = 0;
3671 pXGIEnt->masterFbAddress = pXGI->FbAddress;
3672 pXGIEnt->masterFbSize = pXGI->maxxfbmem;
3673 pXGIEnt->slaveFbAddress = pXGI->FbAddress + pXGI->maxxfbmem;
3674 pXGIEnt->slaveFbSize = pXGI->maxxfbmem;
3677 pXGI->maxxfbmem / 1024, pXGI->FbAddress);
3682 pXGI->maxxfbmem /= 2;
3684 pXGI->FbAddress += pXGI->maxxfbmem;
3686 pXGI->dhmOffset = pXGI->availMem - pXGI->maxxfbmem;
3689 pXGI->maxxfbmem / 1024, pXGI->FbAddress);
3693 pXGI->dhmOffset = 0;
3707 pXGI->pVbe = VBEExtendedInit(pXGI->pInt, pXGI->pEnt->index,
3709 if (!pXGI->pVbe) {
3756 pXGI->MinClock = 5000;
3759 pXGI->MinClock / 1000);
3766 if (pXGI->pEnt->device->dacSpeeds[0]) {
3770 speed = pXGI->pEnt->device->dacSpeeds[DAC_BPP8];
3773 speed = pXGI->pEnt->device->dacSpeeds[DAC_BPP16];
3776 speed = pXGI->pEnt->device->dacSpeeds[DAC_BPP24];
3779 speed = pXGI->pEnt->device->dacSpeeds[DAC_BPP32];
3783 pXGI->MaxClock = pXGI->pEnt->device->dacSpeeds[0];
3785 pXGI->MaxClock = speed;
3789 pXGI->MaxClock / 1000);
3797 clockRanges->minClock = pXGI->MinClock;
3798 clockRanges->maxClock = pXGI->MaxClock;
3812 pXGI->CheckForCRT2 = FALSE;
3826 pXGI->maxxfbmem, LOOKUP_BEST_REFRESH);
3834 if (pXGI->pInt)
3835 xf86FreeInt10(pXGI->pInt);
3836 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
3846 if (memreq > pXGI->maxxfbmem) {
3849 memreq / 1024, pXGI->maxxfbmem / 1024);
3854 if (pXGI->pInt)
3855 xf86FreeInt10(pXGI->pInt);
3856 pXGI->pInt = NULL;
3857 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
3861 else if (pXGI->loadDRI && !IS_DUAL_HEAD(pXGI))
3863 pXGI->maxxfbmem = memreq;
3864 pXGI->DRIheapstart = pXGI->DRIheapend = 0;
3866 if (pXGI->maxxfbmem == pXGI->availMem) {
3869 pXGI->loadDRI = FALSE;
3872 pXGI->DRIheapstart = pXGI->maxxfbmem;
3873 pXGI->DRIheapend = pXGI->availMem;
3883 if (IS_DUAL_HEAD(pXGI) && !IS_SECOND_HEAD(pXGI))
3919 if (pXGI->pInt)
3920 xf86FreeInt10(pXGI->pInt);
3921 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
3932 pXGI->CurrentLayout.mode = pScrn->currentMode;
3933 pXGI->CurrentLayout.displayWidth = pScrn->displayWidth;
3936 if (pXGI->MergedFB) {
3946 if (pXGI->MergedFB) {
3954 clockRanges->minClock = pXGI->MinClock;
3966 if ((pXGI->XGI_Pr->
3969 if (!(pXGI->VBFlags & (CRT2_LCD | CRT2_VGA)))
3971 if (pXGI->VBFlags & CRT2_LCD)
3973 if (pXGI->VBFlags & CRT2_TV)
3982 if (pXGI->MergedFB) {
3984 pXGI->CheckForCRT2 = TRUE;
3985 i = xf86ValidateModes(pXGI->CRT2pScrn,
3986 pXGI->CRT2pScrn->monitor->Modes,
3987 pXGI->CRT2pScrn->display->modes, clockRanges,
3989 pXGI->CRT2pScrn->bitsPerPixel * 8, 128, 4096,
3992 pXGI->maxxfbmem, LOOKUP_BEST_REFRESH);
3993 pXGI->CheckForCRT2 = FALSE;
3998 XGIFreeCRT2Structs(pXGI);
3999 pXGI->MergedFB = FALSE;
4004 if (pXGI->MergedFB) {
4006 if ((p = first = pXGI->CRT2pScrn->modes)) {
4013 xf86PruneDriverModes(pXGI->CRT2pScrn);
4015 if (i == 0 || pXGI->CRT2pScrn->modes == NULL) {
4018 XGIFreeCRT2Structs(pXGI);
4019 pXGI->MergedFB = FALSE;
4024 if (pXGI->MergedFB) {
4026 xf86SetCrtcForModes(pXGI->CRT2pScrn, INTERLACE_HALVE_V);
4030 xf86PrintModes(pXGI->CRT2pScrn);
4032 pXGI->CRT1Modes = pScrn->modes;
4033 pXGI->CRT1CurrentMode = pScrn->currentMode;
4038 pScrn->modes = XGIGenerateModeList(pScrn, pXGI->MetaModes,
4039 pXGI->CRT1Modes,
4040 pXGI->CRT2pScrn->modes,
4041 pXGI->CRT2Position);
4048 XGIFreeCRT2Structs(pXGI);
4049 pScrn->modes = pXGI->CRT1Modes;
4050 pXGI->CRT1Modes = NULL;
4051 pXGI->MergedFB = FALSE;
4057 if (pXGI->MergedFB) {
4069 pXGI->CurrentLayout.mode = pScrn->currentMode;
4070 pXGI->CurrentLayout.displayWidth = pScrn->displayWidth;
4077 if (pXGI->MergedFB) {
4078 XGIMergedFBSetDpi(pScrn, pXGI->CRT2pScrn, pXGI->CRT2Position);
4108 if (pXGI->pInt)
4109 xf86FreeInt10(pXGI->pInt);
4110 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
4122 if (pXGI->pInt)
4123 xf86FreeInt10(pXGI->pInt);
4124 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
4132 if (!pXGI->NoAccel)
4137 if(!(pXGI->useEXA))
4145 if (pXGI->pInt)
4146 xf86FreeInt10(pXGI->pInt);
4147 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
4158 if(pXGI->useEXA)
4172 if (pXGI->ShadowFB) {
4179 if (pXGI->pInt)
4180 xf86FreeInt10(pXGI->pInt);
4181 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
4192 if(pXGI->loadDRI) {
4199 if (!IS_DUAL_HEAD(pXGI))
4208 if (pXGI->pVbe) {
4209 vbeFree(pXGI->pVbe);
4210 pXGI->pVbe = NULL;
4217 xgiRestoreExtRegisterLock(pXGI, srlockReg, crlockReg);
4219 if (pXGI->pInt)
4220 xf86FreeInt10(pXGI->pInt);
4221 pXGI->pInt = NULL;
4223 if (IS_DUAL_HEAD(pXGI)) {
4224 pXGI->XGI_SD_Flags |= XGI_SD_ISDUALHEAD;
4225 if (IS_SECOND_HEAD(pXGI))
4226 pXGI->XGI_SD_Flags |= XGI_SD_ISDHSECONDHEAD;
4228 pXGI->XGI_SD_Flags &= ~(XGI_SD_SUPPORTXVGAMMA1);
4231 pXGI->XGI_SD_Flags |= XGI_SD_ISDHXINERAMA;
4232 pXGI->XGI_SD_Flags &= ~(XGI_SD_SUPPORTXVGAMMA1);
4238 if (pXGI->MergedFB)
4239 pXGI->XGI_SD_Flags |= XGI_SD_ISMERGEDFB;
4242 if (pXGI->enablexgictrl)
4243 pXGI->XGI_SD_Flags |= XGI_SD_ENABLED;
4256 XGIPtr pXGI = XGIPTR(pScrn);;
4264 err = pci_device_map_region(pXGI->PciInfo, i, TRUE);
4272 pXGI->FbBase = pXGI->PciInfo->regions[0].memory;
4273 pXGI->IOBase = pXGI->PciInfo->regions[1].memory;
4289 pXGI->IOBase = xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
4290 pXGI->PciTag, pXGI->IOAddress, 0x10000);
4291 if (pXGI->IOBase == NULL)
4299 pXGI->IOBaseDense = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO,
4300 pXGI->PciTag, pXGI->IOAddress, 0x10000);
4302 if (pXGI->IOBaseDense == NULL)
4306 pXGI->FbBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
4307 pXGI->PciTag,
4308 (unsigned long) pXGI->FbAddress,
4309 pXGI->FbMapSize);
4311 PDEBUG(ErrorF("pXGI->FbBase = 0x%08lx\n", (ULONG) (pXGI->FbBase)));
4313 if (pXGI->FbBase == NULL)
4328 XGIPtr pXGI = XGIPTR(pScrn);
4329 XGIEntPtr pXGIEnt = ENTITY_PRIVATE(pXGI);
4335 if (IS_DUAL_HEAD(pXGI)) {
4340 pci_device_unmap_region(pXGI->PciInfo, 1);
4343 (pXGI->mmioSize * 1024));
4349 pXGI->IOBase = NULL;
4361 (pXGI->mmioSize * 1024));
4366 pXGI->IOBaseDense = NULL;
4374 pci_device_unmap_region(pXGI->PciInfo, 0);
4377 pXGI->FbMapSize);
4384 pXGI->FbBase = NULL;
4389 pci_device_unmap_region(pXGI->PciInfo, 0);
4390 pci_device_unmap_region(pXGI->PciInfo, 1);
4392 xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pXGI->IOBase,
4393 (pXGI->mmioSize * 1024));
4394 xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pXGI->FbBase,
4395 pXGI->FbMapSize);
4397 pXGI->IOBase = NULL;
4398 pXGI->FbBase = NULL;
4404 xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pXGI->IOBaseDense,
4405 (pXGI->mmioSize * 1024));
4406 pXGI->IOBaseDense = NULL;
4420 XGIPtr pXGI;
4426 pXGI = XGIPTR(pScrn);
4429 if (IS_DUAL_HEAD(pXGI) && IS_SECOND_HEAD(pXGI))
4433 xgiReg = &pXGI->SavedReg;
4437 xgiSaveUnlockExtRegisterLock(pXGI, &xgiReg->xgiRegs3C4[0x05],
4440 (*pXGI->XGISave) (pScrn, xgiReg);
4458 XGIPtr pXGI = XGIPTR(pScrn);
4479 if(pXGI->TargetRefreshRate)
4480 mode->VRefresh = pXGI->TargetRefreshRate;
4482 if((pScrn->monitor->DDC == NULL) && (pXGI->Non_DDC_DefaultMode))
4484 mode->HDisplay = pXGI->Non_DDC_DefaultResolutionX;
4485 mode->VDisplay = pXGI->Non_DDC_DefaultResolutionY;
4486 mode->VRefresh = pXGI->Non_DDC_DefaultRefreshRate;
4497 Volari_SetDefaultIdleWait(pXGI, mode->HDisplay, pScrn->depth);
4504 if (IS_DUAL_HEAD(pXGI))
4506 XGIEntPtr pXGIEnt = ENTITY_PRIVATE(pXGI);
4508 if (!(*pXGI->ModeInit) (pScrn, mode)) {
4517 if (!XGIBIOSSetModeCRT1(pXGI->XGI_Pr, &pXGI->xgi_HwDevExt, pScrn,
4524 XGIPostSetMode(pScrn, &pXGI->ModeReg);
4539 VGAHWPTR(pScrn)->PIOOffset = pXGI->IODBase - 0x380 +
4541 (pXGI->PciInfo->regions[2].base_addr & 0xFFFC)
4543 (pXGI->PciInfo->ioBase[2] & 0xFFFC)
4548 if (!(*pXGI->ModeInit) (pScrn, mode)) {
4558 xgiReg = &pXGI->ModeReg;
4567 (*pXGI->XGIRestore) (pScrn, xgiReg);
4572 (*pXGI->ModeInit) (pScrn, mode);
4579 if((pXGI->Chipset == PCI_CHIP_XGIXG40)||(pXGI->Chipset == PCI_CHIP_XGIXG20)||(pXGI->Chipset == PCI_CHIP_XGIXG21)||(pXGI->Chipset == PCI_CHIP_XGIXG27))
4587 if (!XGIBIOSSetMode(pXGI->XGI_Pr, &pXGI->xgi_HwDevExt, pScrn, mode)) {
4592 /* XGIPostSetMode(pScrn, &pXGI->ModeReg); */
4598 pXGI->CurrentLayout.mode = mode;
4612 XGISetDPMS(pScrn, pXGI->XGI_Pr, &pXGI->xgi_HwDevExt , 0x00000000 );
4624 XGIPtr pXGI = XGIPTR(pScrn);
4625 XGIRegPtr xgiReg = &pXGI->SavedReg;
4634 if (!(pXGI->useEXA) && pXGI->AccelInfoPtr) {
4635 (*pXGI->AccelInfoPtr->Sync) (pScrn);
4642 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
4648 (*pXGI->XGIRestore) (pScrn, xgiReg);
4650 pXGI->xgi_HwDevExt.SpecifyTiming = FALSE;
4656 XGISetModeNew( &pXGI->xgi_HwDevExt, pXGI->XGI_Pr, 0x03);
4659 if (pXGI->Primary) {
4663 xgiRestoreExtRegisterLock(pXGI, xgiReg->xgiRegs3C4[5],
4675 XGIPtr pXGI = XGIPTR(pScrn);
4677 pScreen->BlockHandler = pXGI->BlockHandler;
4681 if (pXGI->VideoTimerCallback) {
4682 (*pXGI->VideoTimerCallback) (pScrn, currentTime.milliseconds);
4685 if (pXGI->RenderCallback) {
4686 (*pXGI->RenderCallback) (pScrn);
4722 XGIPtr pXGI;
4785 pXGI = XGIPTR(pScrn);
4789 if (!IS_DUAL_HEAD(pXGI) || !IS_SECOND_HEAD(pXGI)) {
4794 pXGI->pVbe = VBEExtendedInit(NULL, pXGI->pEnt->index,
4805 if (IS_DUAL_HEAD(pXGI)) {
4806 pXGIEnt = ENTITY_PRIVATE(pXGI);
4811 if (pXGI->Primary) {
4823 VGAHWPTR(pScrn)->PIOOffset = pXGI->IODBase - 0x380 +
4825 (pXGI->PciInfo->regions[2].base_addr & 0xFFFC)
4827 (pXGI->PciInfo->ioBase[2] & 0xFFFC)
4838 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
4916 if (pXGI->Rotate) {
4921 if (pXGI->ShadowFB) {
4922 pXGI->ShadowPitch = BitmapBytePad(pScrn->bitsPerPixel * width);
4923 pXGI->ShadowPtr = xalloc(pXGI->ShadowPitch * height);
4924 displayWidth = pXGI->ShadowPitch / (pScrn->bitsPerPixel >> 3);
4925 FBStart = pXGI->ShadowPtr;
4928 pXGI->ShadowPtr = NULL;
4929 FBStart = pXGI->FbBase;
4941 if (IS_SECOND_HEAD(pXGI))
4942 pXGI->cmdQueueLenPtr = &(XGIPTR(pXGIEnt->pScrn_1)->cmdQueueLen);
4944 pXGI->cmdQueueLenPtr = &(pXGI->cmdQueueLen);
4946 pXGI->cmdQueueLen = 0; /* Force an EngineIdle() at start */
4949 if(pXGI->loadDRI) {
4951 if (IS_DUAL_HEAD(pXGI)) {
4952 pXGI->directRenderingEnabled = FALSE;
4956 else if ((pXGI->Chipset == PCI_CHIP_XGIXG20)||(pXGI->Chipset == PCI_CHIP_XGIXG21)||(pXGI->Chipset == PCI_CHIP_XGIXG27)) {
4960 pXGI->directRenderingEnabled = FALSE;
4963 pXGI->directRenderingEnabled = XGIDRIScreenInit(pScreen);
5052 if (!pXGI->ShadowFB)
5057 if (!pXGI->NoAccel) {
5072 if (pXGI->HWCursor) {
5102 pScrn->memPhysBase = pXGI->FbAddress;
5105 pXGI->ResetXv = pXGI->ResetXvGamma = NULL;
5108 if (!pXGI->NoXvideo) {
5114 if (pXGI->directRenderingEnabled) {
5118 pXGI->directRenderingEnabled = XGIDRIFinishScreenInit(pScreen);
5122 (pXGI->directRenderingEnabled) ? "en" : "dis");
5123 if (pXGI->directRenderingEnabled) {
5125 /* XGISetLFBConfig(pXGI); */
5131 pXGI->XGI_SD_Flags &= ~(XGI_SD_PSEUDOXINERAMA);
5133 pXGI->CloseScreen = pScreen->CloseScreen;
5135 if (IS_DUAL_HEAD(pXGI))
5141 pXGI->BlockHandler = pScreen->BlockHandler;
5162 if (IS_DUAL_HEAD(pXGI)) {
5163 if (IS_SECOND_HEAD(pXGI)) {
5164 bzero(pXGI->FbBase, OnScreenSize);
5169 pXGIEnt->FbBase1 = pXGI->FbBase;
5175 bzero(pXGI->FbBase, OnScreenSize);
5178 pXGI->XGI_SD_Flags &= ~XGI_SD_ISDEPTH8;
5179 if (pXGI->CurrentLayout.bitsPerPixel == 8) {
5180 pXGI->XGI_SD_Flags |= XGI_SD_ISDEPTH8;
5181 pXGI->XGI_SD_Flags &= ~XGI_SD_SUPPORTXVGAMMA1;
5203 XGIPtr pXGI = XGIPTR(pScrn);
5205 if(pXGI->TargetRefreshRate)
5206 mode->VRefresh = pXGI->TargetRefreshRate;
5232 if (!pXGI->NoAccel) {
5234 if (!(pXGI->useEXA) && pXGI->AccelInfoPtr) {
5235 (*pXGI->AccelInfoPtr->Sync) (pScrn);
5258 if (pXGI->ShadowFB) {
5259 displayWidth = pXGI->ShadowPitch / (pScrn->bitsPerPixel >> 3);
5260 FBStart = pXGI->ShadowPtr;
5263 pXGI->ShadowPtr = NULL;
5264 FBStart = pXGI->FbBase;
5331 XGISetStartAddressCRT1(XGIPtr pXGI, unsigned long base)
5355 XGIPtr pXGI = XGIPTR(pScrn);
5358 base = y * pXGI->CurrentLayout.displayWidth + x;
5359 switch(pXGI->CurrentLayout.bitsPerPixel)
5365 XGISetStartAddressCRT1(pXGI, base);
5372 XGIPtr pXGI = XGIPTR(pScrn1);
5373 ScrnInfoPtr pScrn2 = pXGI->CRT2pScrn;
5377 f1.x0 = pXGI->CRT1frameX0;
5378 f1.x1 = pXGI->CRT1frameX1;
5379 f1.y0 = pXGI->CRT1frameY0;
5380 f1.y1 = pXGI->CRT1frameY1;
5393 switch(((XGIMergedDisplayModePtr)pXGI->CurrentLayout.mode->Private)->CRT2Position)
5474 switch(((XGIMergedDisplayModePtr)pXGI->CurrentLayout.mode->Private)->CRT2Position)
5508 pXGI->CRT1frameX0 = f1.x0;
5509 pXGI->CRT1frameY0 = f1.y0;
5513 pXGI->CRT1frameX1 = pXGI->CRT1frameX0 + CDMPTR->CRT1->HDisplay - 1;
5514 pXGI->CRT1frameY1 = pXGI->CRT1frameY0 + CDMPTR->CRT1->VDisplay - 1;
5517 pScrn1->frameX1 = pScrn1->frameX0 + pXGI->CurrentLayout.mode->HDisplay - 1;
5518 pScrn1->frameY1 = pScrn1->frameY0 + pXGI->CurrentLayout.mode->VDisplay - 1;
5520 XGIAdjustFrameHW_CRT1(pScrn1, pXGI->CRT1frameX0, pXGI->CRT1frameY0);
5529 XGIPtr pXGI = XGIPTR(pScrn1);
5530 ScrnInfoPtr pScrn2 = pXGI->CRT2pScrn;
5531 int VTotal = pXGI->CurrentLayout.mode->VDisplay;
5532 int HTotal = pXGI->CurrentLayout.mode->HDisplay;
5544 pXGI->CRT1frameX0 = x + CDMPTR->CRT2->HDisplay;
5545 BOUND(pXGI->CRT1frameY0, y, y + VMax - CDMPTR->CRT1->VDisplay);
5548 pXGI->CRT1frameX0 = x;
5549 BOUND(pXGI->CRT1frameY0, y, y + VMax - CDMPTR->CRT1->VDisplay);
5556 BOUND(pXGI->CRT1frameX0, x, x + HMax - CDMPTR->CRT1->HDisplay);
5557 pXGI->CRT1frameY0 = y + CDMPTR->CRT2->VDisplay;
5560 BOUND(pXGI->CRT1frameX0, x, x + HMax - CDMPTR->CRT1->HDisplay);
5561 pXGI->CRT1frameY0 = y;
5566 BOUND(pXGI->CRT1frameX0, x, x + HMax - CDMPTR->CRT1->HDisplay);
5567 BOUND(pXGI->CRT1frameY0, y, y + VMax - CDMPTR->CRT1->VDisplay);
5573 BOUND(pXGI->CRT1frameX0, 0, pScrn1->virtualX - CDMPTR->CRT1->HDisplay);
5574 BOUND(pXGI->CRT1frameY0, 0, pScrn1->virtualY - CDMPTR->CRT1->VDisplay);
5581 pXGI->CRT1frameX1 = pXGI->CRT1frameX0 + CDMPTR->CRT1->HDisplay - 1;
5582 pXGI->CRT1frameY1 = pXGI->CRT1frameY0 + CDMPTR->CRT1->VDisplay - 1;
5585 pScrn1->frameX1 = pScrn1->frameX0 + pXGI->CurrentLayout.mode->HDisplay - 1;
5586 pScrn1->frameY1 = pScrn1->frameY0 + pXGI->CurrentLayout.mode->VDisplay - 1;
5588 XGIAdjustFrameHW_CRT1(pScrn1, pXGI->CRT1frameX0, pXGI->CRT1frameY0);
5602 XGIPtr pXGI = XGIPTR(pScrn);
5614 base += pXGI->scrnOffset * y;
5617 switch (pXGI->Chipset) {
5633 /* if (pXGI->VBFlags) {
5634 XGI_UnLockCRT2(&(pXGI->xgi_HwDevExt),pXGI->pVBInfo);
5641 XGI_LockCRT2(&(pXGI->xgi_HwDevExt),pXGI->pVBInfo);
5661 XGIPtr pXGI = XGIPTR(pScrn);
5663 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
5673 if (pXGI->directRenderingEnabled) {
5678 if ((!IS_DUAL_HEAD(pXGI) || !IS_SECOND_HEAD(pXGI)) && (pXGI->ResetXv)) {
5679 (pXGI->ResetXv) (pScrn);
5695 XGIPtr pXGI = XGIPTR(pScrn);
5700 if (pXGI->directRenderingEnabled) {
5706 if (IS_DUAL_HEAD(pXGI) && IS_SECOND_HEAD(pXGI))
5709 if (pXGI->CursorInfoPtr) {
5713 pXGI->CursorInfoPtr->HideCursor(pScrn);
5714 XGI_WaitBeginRetrace(pXGI->RelIO);
5738 XGIPtr pXGI = XGIPTR(pScrn);
5742 if (pXGI->directRenderingEnabled) {
5744 pXGI->directRenderingEnabled = FALSE;
5749 if (pXGI->CursorInfoPtr
5750 && (!IS_DUAL_HEAD(pXGI) || !IS_SECOND_HEAD(pXGI))) {
5751 pXGI->CursorInfoPtr->HideCursor(pScrn);
5752 XGI_WaitBeginRetrace(pXGI->RelIO);
5770 if (IS_DUAL_HEAD(pXGI)) {
5771 XGIEntPtr pXGIEnt = ENTITY_PRIVATE(pXGI);
5775 if (pXGI->pInt) {
5776 xf86FreeInt10(pXGI->pInt);
5777 pXGI->pInt = NULL;
5781 if (pXGI->AccelLinearScratch) {
5782 xf86FreeOffscreenLinear(pXGI->AccelLinearScratch);
5783 pXGI->AccelLinearScratch = NULL;
5786 if (!(pXGI->useEXA) && pXGI->AccelInfoPtr) {
5787 XAADestroyInfoRec(pXGI->AccelInfoPtr);
5788 pXGI->AccelInfoPtr = NULL;
5792 if (pXGI->CursorInfoPtr) {
5793 xf86DestroyCursorInfoRec(pXGI->CursorInfoPtr);
5794 pXGI->CursorInfoPtr = NULL;
5797 if (pXGI->ShadowPtr) {
5798 xfree(pXGI->ShadowPtr);
5799 pXGI->ShadowPtr = NULL;
5802 if (pXGI->DGAModes) {
5803 xfree(pXGI->DGAModes);
5804 pXGI->DGAModes = NULL;
5807 if (pXGI->adaptor) {
5808 xfree(pXGI->adaptor);
5809 pXGI->adaptor = NULL;
5810 pXGI->ResetXv = pXGI->ResetXvGamma = NULL;
5816 pScreen->BlockHandler = pXGI->BlockHandler;
5818 pScreen->CloseScreen = pXGI->CloseScreen;
5839 int XGIValidateUserDefMode(XGIPtr pXGI, DisplayModePtr mode)
5841 UShort i = (pXGI->CurrentLayout.bitsPerPixel+7)/8 - 1;
5861 if( !((pXGI->HaveCustomModes) && (!(mode->type & M_T_DEFAULT))) )
5878 XGIPtr pXGI = XGIPTR(pScrn);
5886 pXGI->HaveCustomModes = TRUE;
5929 iRet=XGIValidateUserDefMode(pXGI, mode);
5946 if (pXGI->VBFlags & CRT2_LCD) {
5954 else if (pXGI->VBFlags & CRT2_TV) {
5961 else if (pXGI->VBFlags & CRT2_VGA) {
5970 if ((pXGI->Chipset == PCI_CHIP_XGIXG20) ||(pXGI->Chipset == PCI_CHIP_XGIXG21) ||( pXGI->Chipset == PCI_CHIP_XGIXG27 )) {
6000 if (pXGI->Chipset == PCI_CHIP_XGIXG27)
6040 XGIPtr pXGI = XGIPTR(pScrn);
6043 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
6058 XGIPtr pXGI = XGIPTR(pScrn);
6060 if (IS_SECOND_HEAD(pXGI)
6061 && ((!(pXGI->VBFlags & CRT1_LCDA))
6062 || (pXGI->XGI_Pr->VBType & VB_XGI301C))) {
6065 if (pXGI->VBFlags & CRT1_LCDA)
6066 pXGI->Blank = xf86IsUnblank(mode) ? FALSE : TRUE;
6075 if (!(pXGI->VBFlags & (CRT2_LCD | CRT1_LCDA)))
6080 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
6142 XGIPtr pXGI = XGIPTR(pScrn);
6156 if (pXGI->MergedFB) {
6164 vbflag = pXGI->VBFlags;
6165 PDEBUG(ErrorF("VBFlags=0x%lx\n", pXGI->VBFlags));
6168 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL); /* Unlock Registers */
6181 pXGI->VBFlags);
6189 if (!pXGI->AllowHotkey) {
6209 if (pXGI->XGI_SD_Flags & XGI_SD_SUPPORTYPBPR) {
6219 if (pXGI->XGI_SD_Flags & XGI_SD_SUPPORTYPBPRAR) {
6245 if (pXGI->XGI_Pr->VBType & VB_XGIVB) {
6323 if (IS_DUAL_HEAD(pXGI)) {
6324 if (IS_SECOND_HEAD(pXGI)) {
6341 if (pXGI->MergedFB) {
6361 if (pXGI->CRT1off)
6375 if (pXGI->VBFlags & CRT2_ENABLE) {
6402 XGIPtr pXGI = XGIPTR(pScrn);
6411 xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CRT1off is %d\n", pXGI->CRT1off);
6415 xgiSaveUnlockExtRegisterLock(pXGI, NULL, NULL);
6419 if (!pXGI->NoXvideo) {
6431 pXGI->MiscFlags &= ~(MISC_CRT1OVERLAY | MISC_CRT1OVERLAYGAMMA);
6432 /* switch(pXGI->xgi_HwDevExt.jChipType) {
6436 if (!(pXGI->MiscFlags & MISC_CRT1OVERLAY)) {
6437 if (!IS_DUAL_HEAD(pXGI) || IS_SECOND_HEAD(pXGI))
6445 pXGI->MiscFlags &= ~MISC_PANELLINKSCALER;
6446 if (pXGI->VBFlags & (CRT2_LCD | CRT1_LCDA)) {
6447 if (pXGI->VBFlags & CRT1_LCDA) {
6451 pXGI->MiscFlags |= MISC_PANELLINKSCALER;
6456 pXGI->MiscFlags &= ~MISC_TVNTSC1024;
6457 if ((pXGI->XGI_Pr->VBType & VB_XGIVB) && (pXGI->VBFlags & CRT2_TV)
6458 && (!(pXGI->VBFlags & TV_HIVISION))) {
6459 if (((pXGI->VBFlags & TV_YPBPR) && (pXGI->VBFlags & TV_YPBPR525I))
6460 || ((!(pXGI->VBFlags & TV_YPBPR))
6461 && (pXGI->VBFlags & (TV_NTSC | TV_PALM)))) {
6465 pXGI->MiscFlags |= MISC_TVNTSC1024;
6471 if (pXGI->ResetXvGamma) {
6472 (pXGI->ResetXvGamma) (pScrn);
6488 XGIPtr pXGI = XGIPTR(pScrn);
6489 UShort i = (pXGI->CurrentLayout.bitsPerPixel + 7) / 8 - 1;
6492 if ((mode->HDisplay > pXGI->LCDwidth) ||
6493 (mode->VDisplay > pXGI->LCDheight)) {
6499 i, pXGI->LCDwidth, pXGI->LCDheight);
6544 XGIPtr pXGI = XGIPTR(pScrn);
6606 switch(pXGI->Chipset)
6770 xgiSaveUnlockExtRegisterLock(XGIPtr pXGI, unsigned char *reg1,
6776 pXGI->lockcalls++;
6777 mylockcalls = pXGI->lockcalls;
6799 XGIErrorLog(pXGI->pScrn,
6801 (void *) pXGI, (unsigned long) pXGI->RelIO, val,
6808 xf86DrvMsg(pXGI->pScrn->scrnIndex, X_INFO,
6818 xgiRestoreExtRegisterLock(XGIPtr pXGI, unsigned char reg1, unsigned char reg2)
6840 xf86PruneDriverModes(pXGI->CRT2pScrn);
7004 XGIPtr pXGI = XGIPTR(pScrn);
7028 XGIPtr pXGI = XGIPTR(pScrn);
7051 XGIPtr pXGI = XGIPTR(pScrn);
7073 XGIPtr pXGI = XGIPTR(pScrn);
7095 XGIPtr pXGI = XGIPTR(pScrn);
7116 XGIPtr pXGI = XGIPTR(pScrn);
7139 XGIPtr pXGI = XGIPTR(pScrn);
7162 XGIPtr pXGI = XGIPTR(pScrn);
7186 XGIPtr pXGI = XGIPTR(pScrn);
7210 XGIPtr pXGI = XGIPTR(pScrn);
7235 XGIPtr pXGI = XGIPTR(pScrn);
7244 if (pXGI->Chipset != PCI_CHIP_XGIXG20) {
7261 XGIPtr pXGI = XGIPTR(pScrn);