diff -p -up xf86-video-sis-0.9.1/src/sis.h.orig xf86-video-sis-0.9.1/src/sis.h --- xf86-video-sis-0.9.1/src/sis.h.orig 2010-01-27 15:27:11.000000000 -0500 +++ xf86-video-sis-0.9.1/src/sis.h 2010-01-27 15:22:42.000000000 -0500 @@ -98,6 +98,7 @@ #define XF86_VERSION_CURRENT XF86_VERSION_NUMERIC(4,3,99,902,0) #endif +#if 0 /*** Xorg Version Path <= X-Server 2.0 ***/ /* K.T for xorg 1.3 */ #if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(2,0,0,0,0) @@ -109,33 +110,36 @@ #define NEW_XORG_VERSION 1 #endif #endif +#endif +#define NEW_XORG_VERSION 1 -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,0,0,0) +//#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,0,0,0) #define SIS_HAVE_RR_FUNC #ifdef HaveDriverFuncs #undef SIS_HaveDriverFuncs #define SIS_HaveDriverFuncs HaveDriverFuncs #define SIS_HAVE_DRIVER_FUNC #endif /* HaveDriverFuncs */ -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,900,0) +//#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,900,0) #define SISISXORG6899900 -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,901,0) +//#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,901,0) #define SISISXORG6899901 #ifdef RANDR #define SIS_HAVE_RR_GET_MODE_MM #define SIS_HAVE_RANDR_SIZE_PATCH #endif /* RANDR */ -#endif /* >= 6.8.99.901 */ -#endif /* >= 6.8.99.900 */ -#endif /* >= 6.8.0.0 */ -#else /* XORG_VERSION_CURRENT */ -#include "xf86Version.h" -#define SISMYSERVERNAME "XFree86" +//#endif /* >= 6.8.99.901 */ +//#endif /* >= 6.8.99.900 */ +//#endif /* >= 6.8.0.0 */ +//#else /* XORG_VERSION_CURRENT */ +//#include "xf86Version.h" +//#define SISMYSERVERNAME "XFree86" #endif /*I.L. modified*/ //#define NEC_CASE /*It used the old Xorg_Version with new PCI structure.*/ +#if 0 #ifdef XSERVER_LIBPCIACCESS #ifdef NEC_CASE #define XORG_VERSION_CURRENT (((7) * 10000000) + ((1) * 100000) + ((0) * 1000) + 0) @@ -143,6 +147,7 @@ #define XORG_VERSION_CURRENT (((7) * 10000000) + ((4) * 100000) + ((0) * 1000) + 0) #endif #endif +#endif #define SIS_NAME "SIS" @@ -268,16 +273,16 @@ #undef SISCHECKOSSSE #ifdef XORG_VERSION_CURRENT -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,13,0) +//#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,13,0) #define SISCHECKOSSSE /* Automatic check OS for SSE; requires SigIll facility */ -#endif +//#endif #endif #undef SISGAMMARAMP #ifdef XORG_VERSION_CURRENT -#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,13,0) +//#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(6,8,99,13,0) #define SISGAMMARAMP /* Driver can set gamma ramp; requires additional symbols in xf86sym.h */ -#endif +//#endif #endif #if 0 /* Perhaps for future use */ @@ -1031,6 +1036,7 @@ typedef struct { #endif PCITAG PciTag; + int PciBus, PciDevice, PciFunc; EntityInfoPtr pEnt; int Chipset; diff -p -up xf86-video-sis-0.9.1/src/sis300_accel.c.orig xf86-video-sis-0.9.1/src/sis300_accel.c --- xf86-video-sis-0.9.1/src/sis300_accel.c.orig 2007-05-29 22:12:02.000000000 -0400 +++ xf86-video-sis-0.9.1/src/sis300_accel.c 2010-01-27 15:21:54.000000000 -0500 @@ -1231,8 +1231,8 @@ SiS300AccelInit(ScreenPtr pScreen) #ifdef SIS_USE_EXA /* ----------------------- EXA ----------------------- */ if(pSiS->useEXA) { -#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) - +//#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) +#if 0 if(pSiS->scrnOffset < 8192) { int obase = 0; /* data */ @@ -1430,7 +1430,8 @@ SiS300AccelInit(ScreenPtr pScreen) pSiS->exa_scratch = exaOffscreenAlloc(pScreen, 128 * 1024, 16, TRUE, SiSScratchSave, pSiS); - #if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) +// #if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) + #if 0 if(pSiS->exa_scratch) { pSiS->exa_scratch_next = pSiS->exa_scratch->offset; pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch; diff -p -up xf86-video-sis-0.9.1/src/sis310_accel.c.orig xf86-video-sis-0.9.1/src/sis310_accel.c --- xf86-video-sis-0.9.1/src/sis310_accel.c.orig 2007-09-29 05:13:12.000000000 -0400 +++ xf86-video-sis-0.9.1/src/sis310_accel.c 2010-01-27 15:21:54.000000000 -0500 @@ -65,9 +65,9 @@ # define SIS_NEED_ARRAY # undef SISNEWRENDER # ifdef XORG_VERSION_CURRENT -# if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(6,7,0,0,0) +//# if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(6,7,0,0,0) # define SISNEWRENDER -# endif +//# endif # endif # endif #endif @@ -1463,7 +1463,7 @@ SiSUploadToScratch(PixmapPtr pSrc, Pixma int dst_pitch, size, w, h, bytes; w = pSrc->drawable.width; - +/* #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,8,2,0,0) dst_pitch = ((w * (pSrc->drawable.bitsPerPixel >> 3)) + pSiS->EXADriverPtr->card.offscreenPitch - 1) & @@ -1472,17 +1472,17 @@ SiSUploadToScratch(PixmapPtr pSrc, Pixma dst_pitch = ((w * (pSrc->drawable.bitsPerPixel >> 3)) + pSiS->EXADriverPtr->card.pixmapPitchAlign - 1) & ~(pSiS->EXADriverPtr->card.pixmapPitchAlign - 1); -#else +#else*/ dst_pitch = ((w * (pSrc->drawable.bitsPerPixel >> 3)) + pSiS->EXADriverPtr->pixmapPitchAlign - 1) & ~(pSiS->EXADriverPtr->pixmapPitchAlign - 1); -#endif +//#endif size = dst_pitch * pSrc->drawable.height; if(size > pSiS->exa_scratch->size) return FALSE; - +/* #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,8,2,0,0) pSiS->exa_scratch_next = (pSiS->exa_scratch_next + pSiS->EXADriverPtr->card.offscreenByteAlign - 1) & @@ -1491,34 +1491,34 @@ SiSUploadToScratch(PixmapPtr pSrc, Pixma pSiS->exa_scratch_next = (pSiS->exa_scratch_next + pSiS->EXADriverPtr->card.pixmapOffsetAlign - 1) & ~(pSiS->EXADriverPtr->card.pixmapOffsetAlign - 1); -#else +#else*/ pSiS->exa_scratch_next = (pSiS->exa_scratch_next + pSiS->EXADriverPtr->pixmapOffsetAlign - 1) & ~(pSiS->EXADriverPtr->pixmapOffsetAlign - 1); -#endif - +//#endif +/* #if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) if(pSiS->exa_scratch_next + size > pSiS->exa_scratch->offset + pSiS->exa_scratch->size) { (pSiS->EXADriverPtr->accel.WaitMarker)(pSrc->drawable.pScreen, 0); pSiS->exa_scratch_next = pSiS->exa_scratch->offset; } -#else +#else*/ if(pSiS->exa_scratch_next + size > pSiS->exa_scratch->offset + pSiS->exa_scratch->size) { (pSiS->EXADriverPtr->WaitMarker)(pSrc->drawable.pScreen, 0); pSiS->exa_scratch_next = pSiS->exa_scratch->offset; } -#endif +//#endif memcpy(pDst, pSrc, sizeof(*pDst)); pDst->devKind = dst_pitch; -#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) - pDst->devPrivate.ptr = pSiS->EXADriverPtr->card.memoryBase + pSiS->exa_scratch_next; -#else +//#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) +// pDst->devPrivate.ptr = pSiS->EXADriverPtr->card.memoryBase + pSiS->exa_scratch_next; +//#else pDst->devPrivate.ptr = pSiS->EXADriverPtr->memoryBase + pSiS->exa_scratch_next; -#endif +//#endif pSiS->exa_scratch_next += size; @@ -1762,7 +1762,8 @@ SiS315AccelInit(ScreenPtr pScreen) #ifdef SIS_USE_EXA /* ----------------------- EXA ----------------------- */ if(pSiS->useEXA) { -#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) +#if 0 +//#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) int obase = 0; @@ -1952,11 +1953,11 @@ SiS315AccelInit(ScreenPtr pScreen) SiSScratchSave, pSiS); if(pSiS->exa_scratch) { pSiS->exa_scratch_next = pSiS->exa_scratch->offset; - #if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) - pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch; - #else + //#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) + // pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch; + //#else pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch; - #endif + //#endif } } else { diff -p -up xf86-video-sis-0.9.1/src/sis_3daccel.c.orig xf86-video-sis-0.9.1/src/sis_3daccel.c --- xf86-video-sis-0.9.1/src/sis_3daccel.c.orig 2007-08-10 04:22:16.000000000 -0400 +++ xf86-video-sis-0.9.1/src/sis_3daccel.c 2010-01-27 15:21:54.000000000 -0500 @@ -64,9 +64,9 @@ # define SIS_NEED_ARRAY # undef SISNEWRENDER # ifdef XORG_VERSION_CURRENT -# if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(6,7,0,0,0) +//# if XORG_VERSION_CURRENT > XORG_VERSION_NUMERIC(6,7,0,0,0) # define SISNEWRENDER -# endif +//# endif # endif # endif #endif diff -p -up xf86-video-sis-0.9.1/src/sis_accel.c.orig xf86-video-sis-0.9.1/src/sis_accel.c --- xf86-video-sis-0.9.1/src/sis_accel.c.orig 2007-05-29 22:12:02.000000000 -0400 +++ xf86-video-sis-0.9.1/src/sis_accel.c 2010-01-27 15:21:54.000000000 -0500 @@ -781,50 +781,50 @@ SiSAccelInit(ScreenPtr pScreen) #ifdef SIS_USE_EXA /* ----------------------- EXA ----------------------- */ if(pSiS->useEXA) { -#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) +//#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) /* data */ - pSiS->EXADriverPtr->card.memoryBase = pSiS->FbBase; - pSiS->EXADriverPtr->card.memorySize = pSiS->maxxfbmem; - pSiS->EXADriverPtr->card.offScreenBase = pScrn->displayWidth * pScrn->virtualY - * (pScrn->bitsPerPixel >> 3); - if(pSiS->EXADriverPtr->card.memorySize > pSiS->EXADriverPtr->card.offScreenBase) { - pSiS->EXADriverPtr->card.flags = EXA_OFFSCREEN_PIXMAPS; - } else { - pSiS->NoXvideo = TRUE; - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Not enough video RAM for offscreen memory manager. Xv disabled\n"); - } -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,8,2,0,0) - pSiS->EXADriverPtr->card.offscreenByteAlign = 8; /* src/dst: double quad word boundary */ - pSiS->EXADriverPtr->card.offscreenPitch = 1; -#else - pSiS->EXADriverPtr->card.pixmapOffsetAlign = 8; /* src/dst: double quad word boundary */ - pSiS->EXADriverPtr->card.pixmapPitchAlign = 8; /* could possibly be 1, but who knows for sure */ -#endif - pSiS->EXADriverPtr->card.maxX = 2047; - pSiS->EXADriverPtr->card.maxY = 2047; +// pSiS->EXADriverPtr->card.memoryBase = pSiS->FbBase; +// pSiS->EXADriverPtr->card.memorySize = pSiS->maxxfbmem; +// pSiS->EXADriverPtr->card.offScreenBase = pScrn->displayWidth * pScrn->virtualY +// * (pScrn->bitsPerPixel >> 3); +// if(pSiS->EXADriverPtr->card.memorySize > pSiS->EXADriverPtr->card.offScreenBase) { +// pSiS->EXADriverPtr->card.flags = EXA_OFFSCREEN_PIXMAPS; +// } else { +// pSiS->NoXvideo = TRUE; +// xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +// "Not enough video RAM for offscreen memory manager. Xv disabled\n"); +// } +//#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,8,2,0,0) +// pSiS->EXADriverPtr->card.offscreenByteAlign = 8; /* src/dst: double quad word boundary */ +// pSiS->EXADriverPtr->card.offscreenPitch = 1; +//#else +// pSiS->EXADriverPtr->card.pixmapOffsetAlign = 8; /* src/dst: double quad word boundary */ +// pSiS->EXADriverPtr->card.pixmapPitchAlign = 8; /* could possibly be 1, but who knows for sure */ +//#endif +// pSiS->EXADriverPtr->card.maxX = 2047; +// pSiS->EXADriverPtr->card.maxY = 2047; /* Sync */ - pSiS->EXADriverPtr->accel.WaitMarker = SiSEXASync; +// pSiS->EXADriverPtr->accel.WaitMarker = SiSEXASync; /* Solid fill */ - pSiS->EXADriverPtr->accel.PrepareSolid = SiSPrepareSolid; - pSiS->EXADriverPtr->accel.Solid = SiSSolid; - pSiS->EXADriverPtr->accel.DoneSolid = SiSDoneSolid; +// pSiS->EXADriverPtr->accel.PrepareSolid = SiSPrepareSolid; +// pSiS->EXADriverPtr->accel.Solid = SiSSolid; +// pSiS->EXADriverPtr->accel.DoneSolid = SiSDoneSolid; /* Copy */ - pSiS->EXADriverPtr->accel.PrepareCopy = SiSPrepareCopy; - pSiS->EXADriverPtr->accel.Copy = SiSCopy; - pSiS->EXADriverPtr->accel.DoneCopy = SiSDoneCopy; +// pSiS->EXADriverPtr->accel.PrepareCopy = SiSPrepareCopy; +// pSiS->EXADriverPtr->accel.Copy = SiSCopy; +// pSiS->EXADriverPtr->accel.DoneCopy = SiSDoneCopy; /* Composite not supported */ /* Upload, download to/from Screen */ - pSiS->EXADriverPtr->accel.UploadToScreen = SiSUploadToScreen; - pSiS->EXADriverPtr->accel.DownloadFromScreen = SiSDownloadFromScreen; +// pSiS->EXADriverPtr->accel.UploadToScreen = SiSUploadToScreen; +// pSiS->EXADriverPtr->accel.DownloadFromScreen = SiSDownloadFromScreen; -#else /*xorg>=7.0*/ +//#else /*xorg>=7.0*/ pSiS->EXADriverPtr->exa_major = 2; pSiS->EXADriverPtr->exa_minor = 0; @@ -867,7 +867,7 @@ SiSAccelInit(ScreenPtr pScreen) #endif /*end of Xorg>=7.0 EXA Setting*/ } -#endif /* EXA */ +//#endif /* EXA */ } /* NoAccel */ @@ -946,11 +946,11 @@ SiSAccelInit(ScreenPtr pScreen) SiSScratchSave, pSiS); if(pSiS->exa_scratch) { pSiS->exa_scratch_next = pSiS->exa_scratch->offset; - #if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) - pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch; - #else + //#if XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0) + // pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch; + //#else pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch; - #endif + //#endif } } else { diff -p -up xf86-video-sis-0.9.1/src/sis_dri.c.orig xf86-video-sis-0.9.1/src/sis_dri.c --- xf86-video-sis-0.9.1/src/sis_dri.c.orig 2008-11-04 08:27:14.000000000 -0500 +++ xf86-video-sis-0.9.1/src/sis_dri.c 2010-01-27 15:21:54.000000000 -0500 @@ -56,7 +56,8 @@ extern Bool drmSiSAgpInit(int driSubFD, #ifdef XORG_VERSION_CURRENT #define SISHAVECREATEBUSID -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,7,99,1,0) +#if 0 +//#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,7,99,1,0) /*I.L. modified*/ #ifndef XSERVER_LIBPCIACCESS extern char *DRICreatePCIBusID(pciVideoPtr PciInfo); diff -p -up xf86-video-sis-0.9.1/src/sis_driver.c.orig xf86-video-sis-0.9.1/src/sis_driver.c --- xf86-video-sis-0.9.1/src/sis_driver.c.orig 2009-06-22 08:15:54.000000000 -0400 +++ xf86-video-sis-0.9.1/src/sis_driver.c 2010-01-27 15:21:54.000000000 -0500 @@ -140,6 +140,17 @@ static int pix24bpp = 0; * an upper-case version of the driver name. */ +#if XSERVER_LIBPCIACCESS +#define SIS_DEVICE_MATCH(d, i)\ + {PCI_VENDOR_SIS, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) } + +static const struct pci_id_match SIS_device_match[] = { + SIS_DEVICE_MATCH (PCI_CHIP_SIS670, 0), + SIS_DEVICE_MATCH (PCI_CHIP_SIS671, 0), + {0, 0, 0 }, + }; +#endif + #ifdef _X_EXPORT _X_EXPORT #endif @@ -147,7 +158,11 @@ DriverRec SIS = { SIS_CURRENT_VERSION, SIS_DRIVER_NAME, SISIdentify, +#if XSERVER_LIBPCIACCESS + NULL, +#else SISProbe, +#endif SISAvailableOptions, NULL, 0 @@ -155,6 +170,11 @@ DriverRec SIS = { , SISDriverFunc #endif +#if XSERVER_LIBPCIACCESS + , + SIS_device_match, + SIS_pci_probe +#endif }; static SymTabRec SISChipsets[] = { @@ -453,7 +473,94 @@ SISDriverFunc(ScrnInfoPtr pScrn, SISDRIV /****************************************************/ /* Probe() */ /****************************************************/ +static Bool SIS_pci_probe (DriverPtr driver, int entity_num, struct pci_device *device, intptr_t match_data) +{ + ScrnInfoPtr pScrn; +#ifdef SISDUALHEAD + EntityInfoPtr pEnt; + Bool foundScreen = FALSE; +#endif +xf86DrvMsg(0, X_INFO, "SIS_pci_probe - begin, entity_num=%d\n", entity_num); +xf86DrvMsg(0, X_INFO, " vendor_id=0x%x\n", device->vendor_id); +xf86DrvMsg(0, X_INFO, " device_id=0x%x\n", device->device_id); +xf86DrvMsg(0, X_INFO, " bus=%d\n", device->bus); +xf86DrvMsg(0, X_INFO, " dev=%d\n", device->dev); +xf86DrvMsg(0, X_INFO, " func=%d\n", device->func); + pScrn = NULL; + if((pScrn = xf86ConfigPciEntity(pScrn, 0, + entity_num, + SISPciChipsets, + NULL, NULL, NULL, NULL, NULL))) { + xf86DrvMsg(0, X_INFO, "SIS_pci_probe - ConfigPciEntity found\n"); + /* Fill in what we can of the ScrnInfoRec */ + pScrn->driverVersion = SIS_CURRENT_VERSION; + pScrn->driverName = SIS_DRIVER_NAME; + pScrn->name = SIS_NAME; + pScrn->Probe = NULL;//SISProbe; + pScrn->PreInit = SISPreInit; + pScrn->ScreenInit = SISScreenInit; + pScrn->SwitchMode = SISSwitchMode; + pScrn->AdjustFrame = SISAdjustFrame; + pScrn->EnterVT = SISEnterVT; + pScrn->LeaveVT = SISLeaveVT; + pScrn->FreeScreen = SISFreeScreen; + pScrn->ValidMode = SISValidMode; + pScrn->PMEvent = SISPMEvent; /*add PM function for ACPI hotkey,Ivans*/ +#ifdef X_XF86MiscPassMessage +// if(xf86GetVersion() >= XF86_VERSION_NUMERIC(4,3,99,2,0)) { +// pScrn->HandleMessage = SISHandleMessage; +// } +#endif + foundScreen = TRUE; + } + #ifdef SISDUALHEAD + pEnt = xf86GetEntityInfo(entity_num); +xf86DrvMsg(0, X_INFO, "SIS_pci_probe - GetEntityInfo chipset is 0x%x\n",pEnt->chipset); + switch(pEnt->chipset) { + case PCI_CHIP_SIS300: + case PCI_CHIP_SIS540: + case PCI_CHIP_SIS630: + case PCI_CHIP_SIS550: + case PCI_CHIP_SIS315: + case PCI_CHIP_SIS315H: + case PCI_CHIP_SIS315PRO: + case PCI_CHIP_SIS650: + case PCI_CHIP_SIS330: + case PCI_CHIP_SIS660: + case PCI_CHIP_SIS340: + case PCI_CHIP_SIS670: + case PCI_CHIP_SIS671: + case PCI_CHIP_XGIXG40: + { + SISEntPtr pSiSEnt = NULL; + DevUnion *pPriv; + + xf86SetEntitySharable(entity_num); + if(SISEntityIndex < 0) { + SISEntityIndex = xf86AllocateEntityPrivateIndex(); + } + pPriv = xf86GetEntityPrivate(pScrn->entityList[0], SISEntityIndex); + if(!pPriv->ptr) { + pPriv->ptr = xnfcalloc(sizeof(SISEntRec), 1); + pSiSEnt = pPriv->ptr; + memset(pSiSEnt, 0, sizeof(SISEntRec)); + pSiSEnt->lastInstance = -1; + } else { + pSiSEnt = pPriv->ptr; + } + pSiSEnt->lastInstance++; + xf86SetEntityInstanceForScreen(pScrn, pScrn->entityList[0], + pSiSEnt->lastInstance); + } + break; + default: + break; + } +#endif /* DUALHEAD */ +xf86DrvMsg(0, X_INFO, "SIS_pci_probe - end\n"); + return foundScreen; +} static Bool SISProbe(DriverPtr drv, int flags) @@ -464,7 +571,7 @@ SISProbe(DriverPtr drv, int flags) int numDevSections; int numUsed, numUsedSiS, numUsedXGI; Bool foundScreen = FALSE; - +xf86DrvMsg(0, X_INFO, "SISPRobe() begin, flags=%d\n", flags); /* * The aim here is to find all cards that this driver can handle, * and for the ones not already claimed by another driver, claim @@ -490,6 +597,7 @@ SISProbe(DriverPtr drv, int flags) * There's no matching device section in the config file, so quit * now. */ + xf86DrvMsg(0, X_INFO, "SISProbe - MatchDevice fail\n"); return FALSE; } @@ -526,14 +634,16 @@ SISProbe(DriverPtr drv, int flags) xfree(devSections); numUsed = numUsedSiS + numUsedXGI; - - if(numUsed <= 0) +xf86DrvMsg(0, X_INFO, "SISPRobe - test1\n"); + if(numUsed <= 0) { + xf86DrvMsg(0, X_INFO, "SISProbe - MatchPciInstances fail\n"); return FALSE; + } if(flags & PROBE_DETECT) { foundScreen = TRUE; - + xf86DrvMsg(0, X_INFO, "SISProbe - flags already probe"); } else for(i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn; @@ -548,6 +658,7 @@ SISProbe(DriverPtr drv, int flags) (i < numUsedSiS) ? usedChipsSiS[i] : usedChipsXGI[i-numUsedSiS], (i < numUsedSiS) ? SISPciChipsets : XGIPciChipsets, NULL, NULL, NULL, NULL, NULL))) { + xf86DrvMsg(0, X_INFO, "SISProbe - ConfigPciEntity found\n"); /* Fill in what we can of the ScrnInfoRec */ pScrn->driverVersion = SIS_CURRENT_VERSION; pScrn->driverName = SIS_DRIVER_NAME; @@ -563,16 +674,16 @@ SISProbe(DriverPtr drv, int flags) pScrn->ValidMode = SISValidMode; pScrn->PMEvent = SISPMEvent; /*add PM function for ACPI hotkey,Ivans*/ #ifdef X_XF86MiscPassMessage - if(xf86GetVersion() >= XF86_VERSION_NUMERIC(4,3,99,2,0)) { - pScrn->HandleMessage = SISHandleMessage; + if(xf86GetVersion() >= XF86_VERSION_NUMERIC(4,3,99,2,0)) { +// pScrn->HandleMessage = SISHandleMessage; } #endif foundScreen = TRUE; } - +xf86DrvMsg(0, X_INFO, "SISProbe - test2\n"); #ifdef SISDUALHEAD pEnt = xf86GetEntityInfo((i < numUsedSiS) ? usedChipsSiS[i] : usedChipsXGI[i-numUsedSiS]); - + xf86DrvMsg(0, X_INFO, "SISProbe - GetEntityInfo done\n"); switch(pEnt->chipset) { case PCI_CHIP_SIS300: case PCI_CHIP_SIS540: @@ -620,7 +731,7 @@ SISProbe(DriverPtr drv, int flags) if(usedChipsSiS) xfree(usedChipsSiS); if(usedChipsXGI) xfree(usedChipsXGI); - +xf86DrvMsg(0, X_INFO, "SISProbe end\n"); return foundScreen; } @@ -1306,7 +1417,11 @@ SiSReadROM(ScrnInfoPtr pScrn) } if(readpci) { +#ifndef XSERVER_LIBPCIACCESS xf86ReadPciBIOS(0, pSiS->PciTag, 0, pSiS->BIOS, biossize); +#else + pci_device_read_rom(pSiS->PciInfo, pSiS->BIOS); +#endif if(SISCheckBIOS(pSiS, mypciid, mypcivendor, biossize)) { found = TRUE; } @@ -2224,8 +2339,7 @@ SiSSetSyncRangeFromEdid(ScrnInfoPtr pScr { 2, 0x04, 56.6 }, { 2, 0x02, 60.1 }, { 2, 0x01, 80.1 } - }; - + }; const myvddctiming myvtiming[11] = { { 1, 0x02, 56 }, { 1, 0x01, 60 }, @@ -2240,11 +2354,6 @@ SiSSetSyncRangeFromEdid(ScrnInfoPtr pScr { 2, 0x01, 75 } }; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSSetSyncRangeFromEdid\n"); -#endif - if(flag) { /* HSync */ for(i = 0; i < 4; i++) { @@ -2350,12 +2459,6 @@ SiSSetSyncRangeFromEdid(ScrnInfoPtr pScr static Bool SiSAllowSyncOverride(SISPtr pSiS, Bool fromDDC, int mfbcrt) { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSAllowSyncOverride\n"); -#endif -// return TRUE; - if(!(pSiS->VBFlags2 & VB2_VIDEOBRIDGE)) return FALSE; #ifdef SISDUALHEAD @@ -2382,11 +2485,10 @@ SiSAllowSyncOverride(SISPtr pSiS, Bool f } #endif -// PCF -// if(!(pSiS->VBFlags & DISPTYPE_CRT1)) { + if(!(pSiS->VBFlags & DISPTYPE_CRT1)) { if( (pSiS->VBFlags & CRT2_TV) || ((pSiS->VBFlags & CRT2_LCD) && (!fromDDC)) ) return TRUE; -// } else if((pSiS->VBFlags & CRT1_LCDA) && (!fromDDC)) return TRUE; + } else if((pSiS->VBFlags & CRT1_LCDA) && (!fromDDC)) return TRUE; return FALSE; } @@ -2394,8 +2496,6 @@ SiSAllowSyncOverride(SISPtr pSiS, Bool f static Bool SiSCheckForH(float hsync, MonPtr monitor) { - - int i; for(i = 0; i < monitor->nHsync; i++) { if((hsync > monitor->hsync[i].lo * (1.0 - SYNC_TOLERANCE)) && @@ -2409,7 +2509,6 @@ SiSCheckForH(float hsync, MonPtr monitor static Bool SiSCheckForV(float vrefresh, MonPtr monitor) { - int i; for(i = 0; i < monitor->nVrefresh; i++) { if((vrefresh > monitor->vrefresh[i].lo * (1.0 - SYNC_TOLERANCE)) && @@ -2424,21 +2523,11 @@ static Bool SiSCheckAndOverruleH(ScrnInfoPtr pScrn, MonPtr monitor) { DisplayModePtr mode = monitor->Modes; -// PCF float mymin = 30.0, mymax = 80.0, hsync; - Bool doit = FALSE; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSCheckAndOverruleH\n"); -#endif - for(hsync = mymin; hsync <= mymax; hsync += .5) { - if(!SiSCheckForH(hsync, monitor)) - { - doit = TRUE; - } + if(!SiSCheckForH(hsync, monitor)) doit = TRUE; } if(mode) { @@ -2461,7 +2550,6 @@ SiSCheckAndOverruleH(ScrnInfoPtr pScrn, return TRUE; } - return FALSE; } @@ -2469,20 +2557,11 @@ static Bool SiSCheckAndOverruleV(ScrnInfoPtr pScrn, MonPtr monitor) { DisplayModePtr mode = monitor->Modes; -// PCF - float mymin = 57.0, mymax = 63.0, vrefresh; + float mymin = 59.0, mymax = 61.0, vrefresh; Bool doit = FALSE, ret = FALSE; - -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSCheckAndOverruleV\n"); -#endif for(vrefresh = mymin; vrefresh <= mymax; vrefresh += 1.0) { - if(!SiSCheckForV(vrefresh, monitor)) - { - doit = TRUE; - } + if(!SiSCheckForV(vrefresh, monitor)) doit = TRUE; } if(mode) { @@ -2515,7 +2594,6 @@ SiSCheckAndOverruleV(ScrnInfoPtr pScrn, monitor->nVrefresh++; ret = TRUE; } - return ret; } @@ -2529,11 +2607,6 @@ SiSFixupHVRanges(ScrnInfoPtr pScrn, int static const char *saneh = "Correcting %s CRT%d monitor HSync range\n"; static const char *sanev = "Correcting %s CRT%d monitor VRefresh range\n"; int crtnum; - -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSFixupHVRanges\n"); -#endif #ifdef SISDUALHEAD if(pSiS->DualHeadMode) { @@ -2610,8 +2683,7 @@ SiSFixupHVRanges(ScrnInfoPtr pScrn, int } } } -// PCF -// return TRUE; + return freqoverruled; } @@ -2623,11 +2695,6 @@ SiSMakeOwnModeList(ScrnInfoPtr pScrn, Bo Bool isfordvi, Bool *havecustommodes, Bool fakecrt2modes, Bool IsForCRT2) { DisplayModePtr tempmode, delmode, mymodes; - - // PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSMakeOwnModeList\n"); -#endif if((mymodes = SiSBuildBuiltInModeList(pScrn, includelcdmodes, isfordvi, fakecrt2modes, IsForCRT2))) { if(!acceptcustommodes) { @@ -2676,11 +2743,6 @@ SiSSetupModeListParmsCRT1(SISPtr pSiS, u Bool *acceptcustommodes, Bool *includelcdmodes, Bool *isfordvi, Bool *fakecrt2modes, Bool *IsForCRT2, Bool *AllowInterlace) { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSSetupModeListParmsCRT1\n"); -#endif - (*acceptcustommodes) = TRUE; /* Accept user modelines */ (*includelcdmodes) = TRUE; /* Include modes reported by DDC */ (*isfordvi) = FALSE; /* Is for digital DVI output */ @@ -2815,11 +2877,6 @@ SiSReplaceModeList(ScrnInfoPtr pScrn, Cl * -) crt2 device is not TV, and * -) crt1 is not LCDA, unless bridge is TMDS/LCDA capable (301C) */ -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSReplaceModeList\n"); -#endif - if((pSiS->VGAEngine == SIS_300_VGA) || (pSiS->VGAEngine == SIS_315_VGA)) { @@ -2881,11 +2938,6 @@ SiSClearModesPrivate(DisplayModePtr mode { DisplayModePtr tempmode; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSClearModesPrivate\n"); -#endif - /* Make sure that the Private field is NULL */ /* (This way we don't have to care for MergedFB * when freeing the mode; just check the Private @@ -2904,11 +2956,6 @@ SiSDuplicateMode(DisplayModePtr source) { DisplayModePtr dest = NULL; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSDuplicateMode\n"); -#endif - if(source) { if((dest = xalloc(sizeof(DisplayModeRec)))) { memcpy(dest, source, sizeof(DisplayModeRec)); @@ -2972,11 +3019,6 @@ SiSBuildVesaModeList(ScrnInfoPtr pScrn, SISPtr pSiS = SISPTR(pScrn); int i = 0; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSBuildVesaModeList\n"); -#endif - while(vbe->VideoModePtr[i] != 0xffff) { sisModeInfoPtr m; VbeModeInfoBlock *mode; @@ -3014,7 +3056,7 @@ SiSSetMinMaxPixelClock(ScrnInfoPtr pScrn { SISPtr pSiS = SISPTR(pScrn); MessageType from; - + /* Set the min pixel clock */ pSiS->MinClock = 5000; if((pSiS->VGAEngine == SIS_300_VGA) || (pSiS->VGAEngine == SIS_315_VGA)) { @@ -3061,11 +3103,6 @@ SiSRemoveUnsuitableModes(ScrnInfoPtr pSc int maxUsedClock = 0; static const char *notsuitablestr = "Not using mode \"%s\" (not suitable for %s mode)\n"; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiSRemoveUnsuitableModes\n"); -#endif - if((p = first = initial)) { do { @@ -3222,11 +3259,6 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) static const char *crtsetupstr = "*************************** CRT%d setup ***************************\n"; #endif -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SISPreInit Start\n"); -#endif - if(flags & PROBE_DETECT) { vbeInfoPtr pVbe; @@ -4716,10 +4748,8 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) mymax = 8192 * 1024; else if(total <= 32768) /* <= 32MB: Use 16MB for X */ mymax = 16384 * 1024; - else -// PCF /* Otherwise: Use 20MB for X */ -// mymax = 20 * 1024 * 1024; - mymax = 20 * 1024 *1024; + else /* Otherwise: Use 20MB for X */ + mymax = 20 * 1024 * 1024; /* availMem is right now adjusted to not use the UMA * area. Make sure that our default doesn't reach * into the UMA area either. @@ -4758,9 +4788,7 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) if(pScrn->videoRam <= 65536) pSiS->maxxfbmem = 16384 * 1024; /* On >=315 series and <=64MB, use 16MB */ else -// PCF -// pSiS->maxxfbmem = 20 * 1024 * 1024; /* On >=315 series and > 64MB, use 20MB */ - pSiS->maxxfbmem = 20 * 1024 * 1024; + pSiS->maxxfbmem = 20 * 1024 * 1024; /* On >=315 series and > 64MB, use 20MB */ } else pSiS->maxxfbmem = 12288 * 1024; /* On <315 series, use 12MB */ @@ -4980,7 +5008,7 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) * via CRT2.) * (TODO: This might need some modification for the * 307 bridges, if these are capable of driving - * LCDs > via channel B) + * LCDs > 1600 via channel B) */ if((pSiS->SiS_SD_Flags & SiS_SD_SUPPORTLCDA) && (pSiS->VBFlags & CRT2_LCD) && @@ -4995,10 +5023,7 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) */ if(pSiS->ChipType < SIS_662 || pSiS->ChipType >= XGI_20) pSiS->ForceCRT1Type = CRT1_LCDA; pSiS->ForceCRT2Type = CRT2_TV; -// PCF -// } else if(pSiS->LCDwidth > 1600) { - } else if(pSiS->LCDwidth > 1920) { - + } else if(pSiS->LCDwidth > 1600) { /* If LCD is > 1600, default to LCDA if we don't need CRT1/VGA for other head */ Bool NeedCRT1VGA = FALSE; #ifdef SISDUALHEAD @@ -5591,11 +5616,8 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) clockRanges->minClock = pSiS->MinClock; clockRanges->maxClock = pSiS->MaxClock; clockRanges->clockIndex = -1; /* programmable */ -// PCF -// clockRanges->interlaceAllowed = TRUE; -// clockRanges->doubleScanAllowed = TRUE; - clockRanges->interlaceAllowed = FALSE; - clockRanges->doubleScanAllowed = FALSE; + clockRanges->interlaceAllowed = TRUE; + clockRanges->doubleScanAllowed = TRUE; /* Replace default mode list */ SiSReplaceModeList(pScrn, clockRanges, FALSE); @@ -5623,11 +5645,8 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) break; case SIS_300_VGA: case SIS_315_VGA: -// PCF maxpitch = 4088; - maxheight = 4096; -// maxpitch = 1600; -// maxheight = 1200; + maxheight = 4096; break; default: maxpitch = 2048; @@ -5688,12 +5707,7 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) pScrn->monitor->DDC = NULL; } #endif -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"xf86ValidateModes Start\n"); - xf86DrvMsg(0, X_INFO,"virtualX = %d, virtualY = %d, maxpitch = %d, maxheight = %d, maxxfbmem = %ld \n", - pScrn->display->virtualX,pScrn->display->virtualY,maxpitch,maxheight,pSiS->maxxfbmem/1024); -#endif + i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, pScrn->display->modes, @@ -5703,13 +5717,9 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) pScrn->bitsPerPixel * 8, minheight, maxheight, pScrn->display->virtualX, - pScrn->display->virtualY, + pScrn->display->virtualY, pSiS->maxxfbmem, LOOKUP_BEST_REFRESH); -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"xf86ValidateModes End\n"); -#endif pScrn->monitor->DDC = backupddc; } @@ -5745,28 +5755,17 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) #endif /* Prune the modes marked as invalid */ -// PCF -// xf86DrvMsg(0, X_INFO,"xf86PruneDriverModes Start\n"); xf86PruneDriverModes(pScrn); -// xf86DrvMsg(0, X_INFO,"xf86PruneDriverModes End\n"); - if(i == 0 || pScrn->modes == NULL) { SISErrorLog(pScrn, "No valid modes found - check VertRefresh/HorizSync\n"); goto my_error_1; } -// PCF -// xf86DrvMsg(0, X_INFO,"xf86SetCrtcForModes Start\n"); xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V); -// xf86DrvMsg(0, X_INFO,"xf86SetCrtcForModes End\n"); - /* Clear the modes' Private field */ -// PCF -// xf86DrvMsg(0, X_INFO,"SiSClearModesPrivate Start\n"); SiSClearModesPrivate(pScrn->modes); -// xf86DrvMsg(0, X_INFO,"SiSClearModesPrivate End\n"); /* Save virtualX/Y calculated by ValidateModes * and overwrite them with our values assumed to @@ -5823,23 +5822,9 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) } if(usemyprint) { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SiSPrintModes Start\n"); -#endif SiSPrintModes(pScrn, printfreq); -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SiSPrintModes End\n"); -#endif } else { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"xf86PrintModes Start\n"); -#endif xf86PrintModes(pScrn); -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"xf86PrintModes End\n"); -#endif } } @@ -6072,10 +6057,7 @@ SISPreInit(ScrnInfoPtr pScrn, int flags) /*xf86DrvMsg(0,X_INFO,"CurrentMode=%d. \n",pSiS->Hkey_Device_Switch_State); xf86DrvMsg(0,X_INFO,"Init_VBFlags=0X%x. \n",pSiS->VBFlags);*/ -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0,X_INFO,"SISPreInit End\n"); -#endif + return TRUE; /* ---- */ @@ -7523,9 +7505,7 @@ SiSPreSetMode(ScrnInfoPtr pScrn, Display xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, SISVERBLEVEL, "VBFlags=0x%x\n", pSiS->VBFlags); CR30 = 0x00; -// PCF -// CR31 &= ~0x60; /* Clear VB_Drivermode & VB_OutputDisable */ - CR31 &= ~0x20; /* Clear VB_Drivermode & VB_OutputDisable */ + CR31 &= ~0x60; /* Clear VB_Drivermode & VB_OutputDisable */ CR31 |= 0x04; /* Set VB_NotSimuMode (not for 30xB/1400x1050?) */ CR35 = 0x00; @@ -8633,11 +8613,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISEntPtr pSiSEnt = NULL; #endif -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit\n"); -#endif - andSISIDXREG(SISCR,0x11,0x7f); /* Unlock CRTC registers */ SISModifyModeInfo(mode); /* Quick check of the mode parameters */ @@ -8647,14 +8622,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo } if(pSiS->UseVESA) { /* With VESA: */ -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit UseVESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit UseVESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit UseVESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit UseVESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit UseVESA\n"); -#endif #ifdef SISDUALHEAD /* No dual head mode when using VESA */ @@ -8679,7 +8646,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSSetVESAMode() failed\n"); return FALSE; } - sisSaveUnlockExtRegisterLock(pSiS, NULL, NULL); if(pSiS->VGAEngine == SIS_300_VGA || pSiS->VGAEngine == SIS_315_VGA) { SiSPreSetMode(pScrn, mode, SIS_MODE_SIMU); @@ -8697,21 +8663,11 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SiSVGAProtect(pScrn, TRUE); (*pSiS->SiSRestore)(pScrn, &pSiS->ModeReg); SiSVGAProtect(pScrn, FALSE); -// xf86DrvMsg(0, X_INFO,"VESA DualHeadMode SetMode\n"); + } else { /* Without VESA: */ -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit Without VESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Without VESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Without VESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Without VESA\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Without VESA\n"); -#endif #ifdef SISDUALHEAD if(pSiS->DualHeadMode) { - - xf86DrvMsg(0, X_INFO,"SISModeInit DualHeadMode\n"); if(!(*pSiS->ModeInit)(pScrn, mode)) { SISErrorLog(pScrn, "ModeInit() failed\n"); @@ -8730,10 +8686,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSBIOSSetModeCRT2() failed\n"); return FALSE; } -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"DualHeadMode SetCRT2\n"); -#endif SiSPostSetMode(pScrn, &pSiS->ModeReg); if(pSiSEnt->pScrn_2) { /* No need to go through pScrn->AdjustFrame; the coords @@ -8752,11 +8704,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSBIOSSetModeCRT1() failed\n"); return FALSE; } -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"DualHeadMode SetCRT1\n"); -#endif - SiS_SiSLVDSBackLight(pSiS, TRUE); SiSPostSetMode(pScrn, &pSiS->ModeReg); if(pSiSEnt->pScrn_1) { @@ -8771,20 +8718,8 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo } else { #endif -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit Other\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Other\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Other\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Other\n"); - xf86DrvMsg(0, X_INFO,"SISModeInit Other\n"); -#endif if(pSiS->VGAEngine == SIS_300_VGA || pSiS->VGAEngine == SIS_315_VGA) { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit SIS_315_VGA\n"); -#endif if(!(*pSiS->ModeInit)(pScrn, mode)) { SISErrorLog(pScrn, "ModeInit() failed\n"); @@ -8795,10 +8730,7 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo #ifdef SISMERGED if(pSiS->MergedFB) { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit SISMERGED\n"); -#endif + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting MergedFB mode %dx%d\n", mode->HDisplay, mode->VDisplay); @@ -8813,10 +8745,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSBIOSSetModeCRT1() failed\n"); return FALSE; } -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISMERGED SetCRT1\n"); -#endif SiSPreSetMode(pScrn, mode, SIS_MODE_CRT2); @@ -8827,10 +8755,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSBIOSSetModeCRT2() failed\n"); return FALSE; } -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISMERGED SetCRT2\n"); -#endif SiS_SiSLVDSBackLight(pSiS, TRUE); @@ -8838,25 +8762,9 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo } else { #endif -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit Not SISMERGED\n"); -#endif if((pSiS->VBFlags & CRT1_LCDA) || (!(mode->type & M_T_DEFAULT))) { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit #1\n"); - if(pSiS->VBFlags & CRT1_LCDA) - { - xf86DrvMsg(0, X_INFO,"SISModeInit #1 LCDA\n"); - - } - else - { - xf86DrvMsg(0, X_INFO,"SISModeInit #1 LCDB\n"); - } -#endif + pSiS->SiS_Pr->SiS_EnableBackLight = FALSE; SiSPreSetMode(pScrn, mode, SIS_MODE_CRT1); @@ -8867,10 +8775,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSBIOSSetModeCRT1() failed\n"); return FALSE; } -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"NoVESA SetCRT1\n"); -#endif SiSPreSetMode(pScrn, mode, SIS_MODE_CRT2); @@ -8880,28 +8784,10 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo SISErrorLog(pScrn, "SiSBIOSSetModeCRT2() failed\n"); return FALSE; } -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"NoVESA SetCRT2\n"); -#endif - SiS_SiSLVDSBackLight(pSiS, TRUE); } else { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit #2\n"); - - if(pSiS->VBFlags & CRT1_LCDA) - { - xf86DrvMsg(0, X_INFO,"SISModeInit #2 LCDA\n"); - } - else - { - xf86DrvMsg(0, X_INFO,"SISModeInit #2 LCDB\n"); - } -#endif pSiS->SiS_Pr->SiS_EnableBackLight = TRUE; @@ -8918,11 +8804,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo #ifdef SISMERGED } #endif -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit #3\n"); -#endif - SiSPostSetMode(pScrn, &pSiS->ModeReg); #ifdef TWDEBUG xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VBFlags %lx\n", pSiS->VBFlags); @@ -8932,10 +8813,6 @@ SISModeInit(ScrnInfoPtr pScrn, DisplayMo #endif } else { -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO,"SISModeInit Old method\n"); -#endif /* For other chipsets, use the old method */ @@ -9147,7 +9024,7 @@ SISSaveScreenDH(ScreenPtr pScreen, int m static void SISDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags) { - SISPtr pSiS = SISPTR(pScrn); + SISPtr pSiS = SISPTR(pScrn); Bool docrt1 = TRUE, docrt2 = TRUE, backlight = TRUE; UChar sr1=0, cr17=0, cr63=0, pmreg=0, sr7=0; UChar p1_13=0, p2_0=0, oldpmreg=0; @@ -10237,7 +10114,6 @@ SISScreenInit(int scrnIndex, ScreenPtr p static Bool SiSValidLCDUserMode(SISPtr pSiS, unsigned int VBFlags, DisplayModePtr mode, Bool isforlcda) { - if(mode->Flags & V_INTERLACE) return FALSE; if(mode->HDisplay > 2048) return FALSE; @@ -10352,7 +10228,7 @@ SiS_CheckModeCRT1(ScrnInfoPtr pScrn, Dis } } - + return(SiS_GetModeID(pSiS->VGAEngine, VBFlags, mode->HDisplay, mode->VDisplay, i, pSiS->FSTN, pSiS->LCDwidth, pSiS->LCDheight)); } @@ -10370,12 +10246,8 @@ SiS_CheckModeCRT2(ScrnInfoPtr pScrn, Dis xf86DrvMsg(0, X_INFO, "Inside CheckCalcModeIndex (VBFlags %lx, mode %dx%d)\n", VBFlags,mode->HDisplay, mode->VDisplay); #endif + if(VBFlags & CRT2_LCD) { /* CRT2 is LCD */ - -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0, X_INFO, "SiS_CheckModeCRT2 LCDwidth= %d, LCDheight= %d\n",pSiS->LCDwidth,pSiS->LCDheight); -#endif if((pSiS->VBFlags2 & VB2_SISTMDSBRIDGE) && (!(pSiS->VBFlags2 & VB2_30xBDH))) { @@ -10403,7 +10275,6 @@ SiS_CheckModeCRT2(ScrnInfoPtr pScrn, Dis return 0xfe; } -// PCF if( ((mode->HDisplay <= pSiS->LCDwidth) && (mode->VDisplay <= pSiS->LCDheight)) || @@ -10415,15 +10286,11 @@ SiS_CheckModeCRT2(ScrnInfoPtr pScrn, Dis (((mode->HDisplay == 1024) && (mode->HDisplay == 768)) || ((mode->HDisplay == 800) && (mode->HDisplay == 600)))) || ((pSiS->EnablePanel_1366x768)&&(pSiS->LCDwidth==1366)&&(mode->HDisplay==1368))) {/*let 1366x768 mode valid. Ivans@090109*/ -/* - if( (mode->HDisplay <= pSiS->LCDwidth) && - (mode->VDisplay <= pSiS->LCDheight)) { -*/ + ModeIndex = SiS_GetModeID_LCD(pSiS->VGAEngine, VBFlags, mode->HDisplay, mode->VDisplay, i, pSiS->FSTN, pSiS->SiS_Pr->SiS_CustomT, pSiS->LCDwidth, pSiS->LCDheight, pSiS->VBFlags2); -// PCF -// xf86DrvMsg(0, X_INFO, "SiS_CheckModeCRT2 LCDwidth= %d, LCDheight= %d, ModeID= %x\n",pSiS->LCDwidth,pSiS->LCDheight,ModeIndex); + } } else if(VBFlags & CRT2_TV) { /* CRT2 is TV */ @@ -10514,7 +10381,7 @@ SISValidMode(int scrnIndex, DisplayModeP if(SiS_CheckModeCRT2(pScrn, mode, pSiS->VBFlags, pSiS->VBFlags3, pSiS->HaveCustomModes) < 0x14){ #ifdef TWDEBUG - xf86DrvMsg(0,X_INFO,"[SISValidMode()]: else condition. passing CheckModeCRT2 and MODE_Fail.\n"); + xf86DrvMsg(0,X_INFO,"[SISValidMode()]: else condition. passing CheckModeCRT2 and MODE_OK.\n"); #endif return MODE_BAD; } @@ -10629,18 +10496,12 @@ SISSwitchMode(int scrnIndex, DisplayMode * (In non-MergedFB mode this is also here in order * to get a cheap update of the HWCursor image) */ - -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0,X_INFO,"SISSwitchMode\n"); -#endif if(!pSiS->skipswitchcheck) { if(SISValidMode(scrnIndex, mode, TRUE, flags) != MODE_OK) { return FALSE; } } - /* Mark for 3D full-screen bug */ /* #ifdef XF86DRI @@ -11510,12 +11371,6 @@ SISHotkeySwitchMode(ScrnInfoPtr pScrn, B int dotclock=65146; int hdisplay=1024; -// PCF -#ifdef TWDEBUG - xf86DrvMsg(0,X_INFO,"SISHotkeySwitchMode\n"); -#endif - - if(!VidModeGetCurrentModeline(pScrn->scrnIndex,&hkeymode,&dotClock)) return FALSE; diff -p -up xf86-video-sis-0.9.1/src/sis_driver.h.orig xf86-video-sis-0.9.1/src/sis_driver.h --- xf86-video-sis-0.9.1/src/sis_driver.h.orig 2008-09-02 10:19:02.000000000 -0400 +++ xf86-video-sis-0.9.1/src/sis_driver.h 2010-01-27 15:21:54.000000000 -0500 @@ -779,6 +779,9 @@ static Bool SISSwitchMode(int scrnIndex, static void SISNewAdjustFrame(int scrnIndex, int x, int y, int flags); static Bool SISPMEvent(int scrnIndex, pmEvent event, Bool undo);/*APM-ACPI, adding by Ivans.*/ +#if XSERVER_LIBPCIACCESS +static Bool SIS_pci_probe(DriverPtr driver, int entity_num, struct pci_device *device, intptr_t match_data); +#endif /* ACPI Device Switch functions */ static Bool SISHotkeySwitchCRT1Status(ScrnInfoPtr pScrn,int onoff);/*hotkey pressing: switch CRT1 on/off*/ static Bool SISHotkeySwitchCRT2Status(ScrnInfoPtr pScrn,ULong newvbflags ,ULong newvbflags3);/*LCD on/off*/