drop hacks for ancient pre-libpciaccess Xservers

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult
2025-12-18 14:11:00 +01:00
parent 806cb1ff43
commit 259f731c54
4 changed files with 2 additions and 285 deletions

View File

@@ -67,14 +67,6 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
PKG_CHECK_MODULES(XORG, [xorg-server >= 1.18 xproto fontsproto $REQUIRED_MODULES])
sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
# Checks for libraries.
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
[XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no],
[#include "xorg-server.h"])
CPPFLAGS="$SAVE_CPPFLAGS"
if test "x$DRI" != xno; then
if test "$cross_compiling" = "no" ; then
AC_CHECK_FILE([${sdkdir}/dri.h],
@@ -109,11 +101,8 @@ if test "$DRI" = yes; then
AC_DEFINE(TDFXDRI_DEVEL,1,[Enable developmental DRI driver support])
fi
if test "x$XSERVER_LIBPCIACCESS" = xyes; then
PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
fi
AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
AC_SUBST([moduledir])

View File

@@ -39,7 +39,6 @@
/* Macros to aid source compatibility between pci-rework and "classic" builds.
*/
#ifdef XSERVER_LIBPCIACCESS
#include <pciaccess.h>
#define DEVICE_ID(p) (p)->device_id
@@ -55,21 +54,6 @@
#define PCI_MEM_BASE(p, region) \
(p)->regions[region].base_addr
#else
#define DEVICE_ID(p) (p)->chipType
#define PCI_READ_LONG(value, offset, card_index) \
(value) = pciReadLong(pTDFX->PciTag[(card_index)], (offset))
#define PCI_WRITE_LONG(value, offset, card_index) \
pciWriteLong(pTDFX->PciTag[(card_index)], (offset), (value))
#define PCI_IO_BASE(p, region) \
(p)->ioBase[region]
#define PCI_MEM_BASE(p, region) \
(p)->memBase[region]
#endif
#define PCI_VENDOR_3DFX 0x121A
@@ -186,7 +170,6 @@ typedef struct TextureData_t {
#define MAXCHIPS 4
#ifdef XSERVER_LIBPCIACCESS
enum tdfx_chips {
Banshee = 0,
Voodoo3_2000,
@@ -195,18 +178,11 @@ enum tdfx_chips {
Voodoo5,
MAX_VOODOO_CARDS
};
#endif
typedef struct _TDFXRec {
#ifdef XSERVER_LIBPCIACCESS
enum tdfx_chips match_id;
void *MMIOBase[MAXCHIPS];
void *FbBase;
#else
unsigned char *MMIOBase[MAXCHIPS];
unsigned char *FbBase;
unsigned char *myFbBase;
#endif
unsigned long PIOBase[MAXCHIPS];
long FbMapSize;
int pixelFormat;
@@ -215,18 +191,11 @@ typedef struct _TDFXRec {
int maxClip;
int MaxClock;
int ChipType;
#ifdef XSERVER_LIBPCIACCESS
struct pci_device *PciInfo[MAXCHIPS];
#else
pciVideoPtr PciInfo;
#endif
unsigned long LinearAddr[MAXCHIPS];
unsigned long MMIOAddr[MAXCHIPS];
EntityInfoPtr pEnt;
int numChips;
#ifndef XSERVER_LIBPCIACCESS
PCITAG PciTag[MAXCHIPS];
#endif
Bool Primary;
int HasSGRAM;
int PciCnt;

View File

@@ -127,19 +127,7 @@ Bool TDFXDRIScreenInit(ScreenPtr pScreen)
pDRIInfo->drmDriverName = TDFXKernelDriverName;
pDRIInfo->clientDriverName = TDFXClientDriverName;
#ifdef XSERVER_LIBPCIACCESS
pDRIInfo->busIdString = DRICreatePCIBusID(pTDFX->PciInfo[0]);
#else
if (xf86LoaderCheckSymbol("DRICreatePCIBusID")) {
pDRIInfo->busIdString = DRICreatePCIBusID(pTDFX->PciInfo);
} else {
pDRIInfo->busIdString = malloc(64);
snprintf(pDRIInfo->busIdString, 64, "PCI:%d:%d:%d",
((pciConfigPtr)pTDFX->PciInfo->thisCard)->busnum,
((pciConfigPtr)pTDFX->PciInfo->thisCard)->devnum,
((pciConfigPtr)pTDFX->PciInfo->thisCard)->funcnum);
}
#endif
pDRIInfo->ddxDriverMajorVersion = TDFX_MAJOR_VERSION;
pDRIInfo->ddxDriverMinorVersion = TDFX_MINOR_VERSION;
pDRIInfo->ddxDriverPatchVersion = TDFX_PATCHLEVEL;
@@ -282,11 +270,7 @@ TDFXDRIFinishScreenInit(ScreenPtr pScreen)
pTDFX->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT;
pTDFXDRI=(TDFXDRIPtr)pTDFX->pDRIInfo->devPrivate;
#ifdef XSERVER_LIBPCIACCESS
pTDFXDRI->deviceID = DEVICE_ID(pTDFX->PciInfo[0]);
#else
pTDFXDRI->deviceID = DEVICE_ID(pTDFX->PciInfo);
#endif
pTDFXDRI->width=pScrn->virtualX;
pTDFXDRI->height=pScrn->virtualY;
pTDFXDRI->mem=pScrn->videoRam*1024;

View File

@@ -96,12 +96,8 @@ static const OptionInfoRec * TDFXAvailableOptions(int chipid, int busid);
static void TDFXIdentify(int flags);
/* Identify if there is any hardware present that I know how to drive. */
#ifdef XSERVER_LIBPCIACCESS
static Bool TDFXPciProbe(DriverPtr drv, int entity_num,
struct pci_device *dev, intptr_t match_data);
#else
static Bool TDFXProbe(DriverPtr drv, int flags);
#endif
/* Process the config file and see if we have a valid configuration */
static Bool TDFXPreInit(ScrnInfoPtr pScrn, int flags);
@@ -134,7 +130,6 @@ static void TDFXBlockHandler(BLOCKHANDLER_ARGS_DECL);
static void TDFXDisplayPowerManagementSet(ScrnInfoPtr pScrn,
int PowerManagermentMode, int flags);
#ifdef XSERVER_LIBPCIACCESS
#define TDFX_DEVICE_MATCH(d, sub, i) \
{ PCI_VENDOR_3DFX, (d), PCI_MATCH_ANY, (sub), 0, 0, (i) }
@@ -161,28 +156,18 @@ static const int MaxClocks[MAX_VOODOO_CARDS] = {
[Voodoo3_Unknown] = 300000,
[Voodoo5] = 350000
};
#endif
_X_EXPORT DriverRec TDFX = {
TDFX_VERSION,
TDFX_DRIVER_NAME,
TDFXIdentify,
#ifdef XSERVER_LIBPCIACCESS
NULL,
#else
TDFXProbe,
#endif
TDFXAvailableOptions,
NULL,
0,
NULL,
#ifdef XSERVER_LIBPCIACCESS
tdfx_device_match,
TDFXPciProbe
#endif
};
/* Chipsets */
@@ -195,17 +180,6 @@ static SymTabRec TDFXChipsets[] = {
{ -1, NULL }
};
#ifndef XSERVER_LIBPCIACCESS
static PciChipsets TDFXPciChipsets[] = {
{ PCI_CHIP_BANSHEE, PCI_CHIP_BANSHEE, RES_SHARED_VGA },
{ PCI_CHIP_VELOCITY, PCI_CHIP_VELOCITY, RES_SHARED_VGA },
{ PCI_CHIP_VOODOO3, PCI_CHIP_VOODOO3, RES_SHARED_VGA },
{ PCI_CHIP_VOODOO4, PCI_CHIP_VOODOO4, RES_SHARED_VGA },
{ PCI_CHIP_VOODOO5, PCI_CHIP_VOODOO5, RES_SHARED_VGA },
{ -1, -1, RES_UNDEFINED }
};
#endif
/* !!! Do we want an option for alternate clocking? !!! */
typedef enum {
@@ -326,7 +300,6 @@ TDFXProbeDDC(ScrnInfoPtr pScrn, int index)
}
}
#ifdef XSERVER_LIBPCIACCESS
/**
* TDFXPciProbe
*
@@ -381,73 +354,6 @@ TDFXPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev,
return (pScrn != NULL);
}
#else
/**
* TDFXProbe
*
* Look through the PCI bus to find cards that are TDFX boards.
* Setup the dispatch table for the rest of the driver functions.
*/
static Bool
TDFXProbe(DriverPtr drv, int flags)
{
int i, numUsed, numDevSections, *usedChips;
GDevPtr *devSections;
Bool foundScreen = FALSE;
TDFXTRACE("TDFXProbe start\n");
/*
Find the config file Device sections that match this
driver, and return if there are none.
*/
if ((numDevSections = xf86MatchDevice(TDFX_DRIVER_NAME, &devSections))<=0) {
return FALSE;
}
/*
Since these Probing is just checking the PCI data the server already
collected.
*/
if (!xf86GetPciVideoInfo()) return FALSE;
numUsed = xf86MatchPciInstances(TDFX_NAME, PCI_VENDOR_3DFX,
TDFXChipsets, TDFXPciChipsets,
devSections, numDevSections,
drv, &usedChips);
free(devSections);
if (numUsed<=0) return FALSE;
if (flags & PROBE_DETECT)
foundScreen = TRUE;
else for (i=0; i<numUsed; i++) {
ScrnInfoPtr pScrn;
/* Allocate new ScrnInfoRec and claim the slot */
pScrn = NULL;
if ((pScrn = xf86ConfigPciEntity(pScrn, 0, usedChips[i],
TDFXPciChipsets, NULL, NULL, NULL, NULL, NULL))) {
pScrn->driverVersion = TDFX_VERSION;
pScrn->driverName = TDFX_DRIVER_NAME;
pScrn->name = TDFX_NAME;
pScrn->Probe = TDFXProbe;
pScrn->PreInit = TDFXPreInit;
pScrn->ScreenInit = TDFXScreenInit;
pScrn->SwitchMode = TDFXSwitchMode;
pScrn->AdjustFrame = TDFXAdjustFrame;
pScrn->EnterVT = TDFXEnterVT;
pScrn->LeaveVT = TDFXLeaveVT;
pScrn->FreeScreen = TDFXFreeScreen;
pScrn->ValidMode = TDFXValidMode;
foundScreen = TRUE;
}
}
free(usedChips);
return foundScreen;
}
#endif
static int
TDFXCountRam(ScrnInfoPtr pScrn) {
@@ -563,34 +469,6 @@ static int TDFXSizeToCfg(int size)
}
}
#ifndef XSERVER_LIBPCIACCESS
static void
TDFXFindChips(ScrnInfoPtr pScrn, pciVideoPtr match)
{
TDFXPtr pTDFX;
pciVideoPtr *ppPci;
pTDFX=TDFXPTR(pScrn);
pTDFX->numChips=0;
pTDFX->ChipType=match->chipType;
for (ppPci = xf86GetPciVideoInfo(); *ppPci != NULL; ppPci++) {
if ((*ppPci)->bus == match->bus &&
(*ppPci)->device == match->device) {
pTDFX->PciTag[pTDFX->numChips] = pciTag((*ppPci)->bus,
(*ppPci)->device,
(*ppPci)->func);
pTDFX->PIOBase[pTDFX->numChips] =
pScrn->domainIOBase + ((*ppPci)->ioBase[2] & 0xFFFFFFFCU);
pTDFX->numChips++;
}
}
xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3,
"TDFXFindChips: found %d chip(s)\n", pTDFX->numChips);
/* Disable the secondary chips for now */
pTDFX->numChips=1;
}
#endif
static void
TDFXInitChips(ScrnInfoPtr pScrn)
{
@@ -750,29 +628,13 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
MessageType from;
int flags24;
rgb defaultWeight = {0, 0, 0};
#ifdef XSERVER_LIBPCIACCESS
struct pci_device *match;
#else
pciVideoPtr match;
#endif
int availableMem;
TDFXTRACE("TDFXPreInit start\n");
if (pScrn->numEntities != 1) return FALSE;
#ifndef XSERVER_LIBPCIACCESS
/* Allocate driverPrivate */
pTDFX = TDFXGetRec(pScrn);
if (pTDFX == NULL) {
return FALSE;
}
pTDFX->initDone=FALSE;
pTDFX->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
#else
pTDFX = TDFXPTR(pScrn);
#endif
if (flags & PROBE_DETECT) {
#if !defined(__powerpc__)
@@ -815,39 +677,9 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
#endif
#endif
#ifdef XSERVER_LIBPCIACCESS
match = pTDFX->PciInfo[0];
pTDFX->ChipType = DEVICE_ID(match);
#else
match=pTDFX->PciInfo=xf86GetPciInfoForEntity(pTDFX->pEnt->index);
TDFXFindChips(pScrn, match);
pTDFX->Primary = xf86IsPrimaryPci(pTDFX->PciInfo);
#endif
#ifndef XSERVER_LIBPCIACCESS
if (xf86RegisterResources(pTDFX->pEnt->index, NULL, ResExclusive)) {
TDFXFreeRec(pScrn);
return FALSE;
}
/*
* We don't need VGA resources during OPERATING state. However I'm
* not sure if they are disabled.
*/
xf86SetOperatingState(resVgaIo, pTDFX->pEnt->index, ResDisableOpr);
/* Is VGA memory disabled during OPERATING state? */
xf86SetOperatingState(resVgaMem, pTDFX->pEnt->index, ResUnusedOpr);
/*
* I'm sure we don't need to set these. All resources
* for these operations are exclusive.
*/
if (pTDFX->usePIO) {
pScrn->racMemFlags = 0;
pScrn->racIoFlags = RAC_FB | RAC_COLORMAP | RAC_CURSOR | RAC_VIEWPORT;
} else
pScrn->racMemFlags = 0;
#endif
/* Set pScrn->monitor */
pScrn->monitor = pScrn->confScreen->monitor;
@@ -1013,33 +845,7 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
pTDFX->MaxClock = pTDFX->pEnt->device->dacSpeeds[0];
from = X_CONFIG;
} else {
#ifdef XSERVER_LIBPCIACCESS
pTDFX->MaxClock = MaxClocks[pTDFX->match_id];
#else
switch (pTDFX->ChipType) {
case PCI_CHIP_BANSHEE:
pTDFX->MaxClock = 270000;
break;
case PCI_CHIP_VELOCITY:
case PCI_CHIP_VOODOO3:
switch(match->subsysCard) {
case PCI_CARD_VOODOO3_2000:
pTDFX->MaxClock = 300000;
break;
case PCI_CARD_VOODOO3_3000:
pTDFX->MaxClock = 350000;
break;
default:
pTDFX->MaxClock = 300000;
break;
}
break;
case PCI_CHIP_VOODOO4:
case PCI_CHIP_VOODOO5:
pTDFX->MaxClock = 350000;
break;
}
#endif
}
clockRanges = XNFcallocarray(1, sizeof(ClockRange));
clockRanges->next=NULL;
@@ -1212,15 +1018,10 @@ TDFXMapMem(ScrnInfoPtr pScrn)
{
int i;
TDFXPtr pTDFX = TDFXPTR(pScrn);
#ifdef XSERVER_LIBPCIACCESS
int err;
#else
const int mmioFlags = VIDMEM_MMIO | VIDMEM_READSIDEEFFECT;
#endif
TDFXTRACE("TDFXMapMem start\n");
#ifdef XSERVER_LIBPCIACCESS
/* FIXME: I'm not convinced that this is correct for SLI cards, but I
* FIXME: don't have any such hardware to test.
*/
@@ -1249,22 +1050,6 @@ TDFXMapMem(ScrnInfoPtr pScrn)
"Unable to map framebuffer (%d).\n", err);
return FALSE;
}
#else
for (i=0; i<pTDFX->numChips; i++) {
pTDFX->MMIOBase[i] = xf86MapPciMem(pScrn->scrnIndex, mmioFlags,
pTDFX->PciTag[i],
pTDFX->MMIOAddr[i],
TDFXIOMAPSIZE);
if (!pTDFX->MMIOBase[i]) return FALSE;
}
pTDFX->FbBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
pTDFX->PciTag[0],
pTDFX->LinearAddr[0],
pTDFX->FbMapSize);
if (!pTDFX->FbBase) return FALSE;
#endif
return TRUE;
}
@@ -1278,7 +1063,6 @@ TDFXUnmapMem(ScrnInfoPtr pScrn)
TDFXTRACE("TDFXUnmapMem start\n");
pTDFX = TDFXPTR(pScrn);
#ifdef XSERVER_LIBPCIACCESS
pci_device_unmap_range(pTDFX->PciInfo[0],
pTDFX->FbBase,
pTDFX->FbMapSize);
@@ -1291,16 +1075,7 @@ TDFXUnmapMem(ScrnInfoPtr pScrn)
(void) memset(pTDFX->MMIOBase, 0, sizeof(pTDFX->MMIOBase));
pTDFX->FbBase = NULL;
#else
for (i=0; i<pTDFX->numChips; i++) {
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pTDFX->MMIOBase[i],
TDFXIOMAPSIZE);
pTDFX->MMIOBase[i]=0;
}
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pTDFX->FbBase, pTDFX->FbMapSize);
pTDFX->FbBase = 0;
#endif
return TRUE;
}