xserver-xorg-video-glint: Changes to 'upstream-unstable'
.cvsignore | 19 -----
.gitignore | 20 ++++++
configure.ac | 15 ++++
man/.cvsignore | 2
man/.gitignore | 2
man/Makefile.am | 1
src/.cvsignore | 6 -
src/.gitignore | 6 +
src/Makefile.am | 1
src/glint.h | 17 +++--
src/glint_dri.c | 11 +--
src/glint_driver.c | 166 ++++++++++++++++++++++++++++++++-------------------
src/glint_regs.h | 42 ++++++------
src/glintpcirename.h | 122 +++++++++++++++++++++++++++++++++++++
src/pm2_video.c | 16 +++-
src/pm3_dac.c | 24 ++++++-
src/tx_dac.c | 6 -
17 files changed, 340 insertions(+), 136 deletions(-)
New commits:
commit 27da4e81ea2eceed69b37a5c6a19def9d1146258
Author: Adam Jackson <ajax@redhat.com>
Date: Wed Mar 19 14:01:42 2008 -0400
glint 1.2.0
diff --git a/configure.ac b/configure.ac
index 2f9eeec..aa46117 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
AC_PREREQ(2.57)
AC_INIT([xf86-video-glint],
- 1.1.1,
+ 1.2.0,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-glint)
commit 71635ce6e595705c8841f68668d3efd7db9cec57
Author: Adam Jackson <ajax@redhat.com>
Date: Wed Mar 19 13:58:54 2008 -0400
Fix distcheck
diff --git a/src/Makefile.am b/src/Makefile.am
index 8896038..79c9e54 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -33,6 +33,7 @@ glint_drv_la_SOURCES = \
glint_dga.c \
glint_driver.c \
glint.h \
+ glintpcirename.h \
glint_regs.h \
glint_shadow.c \
IBMramdac.c \
commit 7c0a6d5e978fbd3f635ba4a35dd24a9cb08ede92
Author: Dave Airlie <airlied@clockmaker.usersys.redhat.com>
Date: Tue Mar 11 15:47:34 2008 +1000
fix regression in tinderbox
diff --git a/src/glint_driver.c b/src/glint_driver.c
index 8f2bb76..eb375ec 100644
--- a/src/glint_driver.c
+++ b/src/glint_driver.c
@@ -1539,7 +1539,7 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
*/
pGlint->IOAddress = base3copro;
#ifndef XSERVER_LIBPCIACCESS
- pGlint->memBase[0] = base3copro;
+ pGlint->PciInfo->memBase[0] = base3copro;
#endif
xf86DrvMsg(pScrn->scrnIndex, from,
"Delta Bug - Changing MMIO registers to 0x%lX\n",
commit bee9cba6766271c1e0e007eae8dcd853aa8ef361
Author: Dave Airlie <airlied@panoply-rh.(none)>
Date: Tue Mar 11 10:15:00 2008 +1000
hey look a flying pig....
it builds, but it may or may not work at all.
diff --git a/src/glint_driver.c b/src/glint_driver.c
index 692ff5a..8f2bb76 100644
--- a/src/glint_driver.c
+++ b/src/glint_driver.c
@@ -49,7 +49,6 @@
#include "xf86int10.h"
#include "dixstruct.h"
#include "vbe.h"
-#include "cfb8_32.h"
#include "compiler.h"
#include "mipointer.h"
@@ -653,9 +652,11 @@ GLINTProbe(DriverPtr drv, int flags)
return FALSE;
}
+#ifndef XSERVER_LIBPCIACCESS
checkusedPci = xf86GetPciVideoInfo();
- if (checkusedPci == NULL && devSections /* for xf86DoProbe */) {
+ if (checkusedPci == NULL && devSections /* for xf86DoProbe */)
+ {
/*
* Changed the behaviour to try probing using the FBDev support
* when no PCI cards have been found. This is for systems without
@@ -722,7 +723,9 @@ GLINTProbe(DriverPtr drv, int flags)
xfree(devSections);
- } else if (checkusedPci) {
+ } else if (checkusedPci)
+#endif
+{
if (flags & PROBE_DETECT) {
/* HACK, Currently when -configuring, we only return VGA
* based chips. Manual configuring is necessary to poke
@@ -745,8 +748,8 @@ GLINTProbe(DriverPtr drv, int flags)
if (!(flags & PROBE_DETECT))
for (i = 0; i < numUsed; i++) {
ScrnInfoPtr pScrn = NULL;
- GLINTEntPtr pGlintEnt = NULL;
- DevUnion *pPriv;
+ GLINTEntPtr pGlintEnt = NULL;
+ DevUnion *pPriv;
pPci = xf86GetPciInfoForEntity(usedChips[i]);
/* Allocate a ScrnInfoRec and claim the slot */
@@ -756,14 +759,16 @@ GLINTProbe(DriverPtr drv, int flags)
/* Claim specifics, when we KNOW ! the board */
-
+#ifndef XSERVER_LIBPCIACCESS
/* Appian Jeronimo J2000 */
if ((PCI_SUB_VENDOR_ID(pPci) == 0x1097) &&
(PCI_SUB_DEVICE_ID(pPci) == 0x3d32)) {
int eIndex;
+ int init_func;
+
if (!xf86IsEntityShared(usedChips[i])) {
eIndex = xf86ClaimPciSlot(pPci->bus,
- pPci->device,
+ pPci->device,
1,
drv, -1 /* XXX */,
NULL, FALSE);
@@ -809,6 +814,7 @@ GLINTProbe(DriverPtr drv, int flags)
checkusedPci++;
}
}
+#endif
/* Fill in what we can of the ScrnInfoRec */
pScrn->driverVersion = GLINT_VERSION;
@@ -1531,8 +1537,10 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
/*
* now update our internal structure accordingly
*/
- pGlint->IOAddress =
- pGlint->PciInfo->memBase[0] = base3copro;
+ pGlint->IOAddress = base3copro;
+#ifndef XSERVER_LIBPCIACCESS
+ pGlint->memBase[0] = base3copro;
+#endif
xf86DrvMsg(pScrn->scrnIndex, from,
"Delta Bug - Changing MMIO registers to 0x%lX\n",
(unsigned long)pGlint->IOAddress);
commit faabfbccbe0516f461590eee05cf44122135d9ee
Author: Matthieu Herrb <matthieu@bluenote.herrb.net>
Date: Sat Mar 8 23:29:30 2008 +0100
Makefile.am: nuke RCS Id
diff --git a/man/Makefile.am b/man/Makefile.am
index bf7ec17..f0eb29b 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -1,4 +1,3 @@
-# $Id$
#
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
#
commit 6a56ee0b6b409c36d4f7e9b1f784ec3eeebd20b9
Author: Dave Airlie <airlied@clockmaker.usersys.redhat.com>
Date: Mon Mar 3 10:47:24 2008 +1000
fix typos in dac code from last commit
diff --git a/src/pm3_dac.c b/src/pm3_dac.c
index 5aa0ecb..e11d190 100644
--- a/src/pm3_dac.c
+++ b/src/pm3_dac.c
@@ -485,7 +485,7 @@ Permedia3Init(ScrnInfoPtr pScrn, DisplayModePtr mode, GLINTRegPtr pReg)
if (pGlint->MultiAperture) {
STOREREG(GMultGLINTAperture, pGlint->realWidth);
STOREREG(GMultGLINT1, PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM) & 0xFF800000);
- STOREREG(GMultGLINT2, PCI_REGION_BASE(pGlint->MultiPciInfo[1], 2, REIGON_MEM) & 0xFF800000);
+ STOREREG(GMultGLINT2, PCI_REGION_BASE(pGlint->MultiPciInfo[1], 2, REGION_MEM) & 0xFF800000);
}
STOREREG(PM3MemBypassWriteMask, 0xffffffff);
diff --git a/src/tx_dac.c b/src/tx_dac.c
index cabb4fb..0ad4ef1 100644
--- a/src/tx_dac.c
+++ b/src/tx_dac.c
@@ -70,7 +70,7 @@ TXInit(ScrnInfoPtr pScrn, DisplayModePtr mode, GLINTRegPtr pReg)
*/
STOREREG(GMultGLINTAperture, pGlint->realWidth);
STOREREG(GMultGLINT1, PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM) & 0xFF800000);
- STOREREG(GMultGLINT2, PCI_REGION_BASE(pGlint->MultiPciInfo[1], 2, REIGON_MEM) & 0xFF800000);
+ STOREREG(GMultGLINT2, PCI_REGION_BASE(pGlint->MultiPciInfo[1], 2, REGION_MEM) & 0xFF800000);
}
if (IS_GMX2000 || IS_GLORIAXXL) {
commit c4b0de8dc27ce4c3145dca36f75f3b3e4fdd20b9
Author: Dave Airlie <airlied@redhat.com>
Date: Wed Feb 27 15:45:37 2008 +1000
half attempt at pciaccess conversion for glint - doesn't build yet
but this gets most of the mechanical changes
diff --git a/configure.ac b/configure.ac
index e672296..2f9eeec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,6 +64,12 @@ PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_M
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"
# Checks for header files.
AC_HEADER_STDC
@@ -96,6 +102,13 @@ if test "$DRI" = yes; then
AC_DEFINE(XF86DRI_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)
+
+
AC_SUBST([DRI_CFLAGS])
AC_SUBST([XORG_CFLAGS])
AC_SUBST([moduledir])
diff --git a/src/glint.h b/src/glint.h
index 80f88f6..54f9d18 100644
--- a/src/glint.h
+++ b/src/glint.h
@@ -30,6 +30,12 @@
#ifndef _GLINT_H_
#define _GLINT_H_
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+
+#include "glintpcirename.h"
+
#include "xaa.h"
#include "xf86RamDac.h"
#include "xf86cmap.h"
@@ -44,9 +50,6 @@
#include "GL/glxint.h"
#include "glint_dripriv.h"
#endif
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
#define GLINT_MAX_MULTI_DEVICES 2
@@ -77,7 +80,9 @@ typedef struct {
int numMultiDevices;
int MultiChip;
Bool MultiAperture;
+#ifndef XSERVER_LIBPCIACCESS
PCITAG PciTag;
+#endif
EntityInfoPtr pEnt;
GLINTEntPtr entityPrivate;
RamDacHelperRecPtr RamDac;
diff --git a/src/glint_dri.c b/src/glint_dri.c
index 63d0cfd..b244b73 100644
--- a/src/glint_dri.c
+++ b/src/glint_dri.c
@@ -489,11 +489,13 @@ GLINTDRIScreenInit(ScreenPtr pScreen)
if (xf86LoaderCheckSymbol("DRICreatePCIBusID")) {
pDRIInfo->busIdString = DRICreatePCIBusID(pGlint->PciInfo);
} else {
+#ifndef XSERVER_LIBPCIACCESS
pDRIInfo->busIdString = xalloc(64); /* Freed in DRIDestroyInfoRec */
sprintf(pDRIInfo->busIdString, "PCI:%d:%d:%d",
((pciConfigPtr)pGlint->PciInfo->thisCard)->busnum,
((pciConfigPtr)pGlint->PciInfo->thisCard)->devnum,
((pciConfigPtr)pGlint->PciInfo->thisCard)->funcnum);
+#endif
}
pDRIInfo->ddxDriverMajorVersion = GLINT_MAJOR_VERSION;
pDRIInfo->ddxDriverMinorVersion = GLINT_MINOR_VERSION;
@@ -775,12 +777,9 @@ GLINTDRIScreenInit(ScreenPtr pScreen)
if (pGlint->irq <= 0) {
pGlint->irq = drmGetInterruptFromBusID(pGlint->drmSubFD,
- ((pciConfigPtr)pGlint->PciInfo
- ->thisCard)->busnum,
- ((pciConfigPtr)pGlint->PciInfo
- ->thisCard)->devnum,
- ((pciConfigPtr)pGlint->PciInfo
- ->thisCard)->funcnum);
+ PCI_CFG_BUS(pGlint->PciInfo),
+ PCI_CFG_DEV(pGlint->PciInfo),
+ PCI_CFG_FUNC(pGlint->PciInfo));
}
return TRUE;
diff --git a/src/glint_driver.c b/src/glint_driver.c
index 5162d5f..692ff5a 100644
--- a/src/glint_driver.c
+++ b/src/glint_driver.c
@@ -652,7 +652,7 @@ GLINTProbe(DriverPtr drv, int flags)
&devSections)) <= 0) {
return FALSE;
}
-
+
checkusedPci = xf86GetPciVideoInfo();
if (checkusedPci == NULL && devSections /* for xf86DoProbe */) {
@@ -723,7 +723,6 @@ GLINTProbe(DriverPtr drv, int flags)
xfree(devSections);
} else if (checkusedPci) {
-
if (flags & PROBE_DETECT) {
/* HACK, Currently when -configuring, we only return VGA
* based chips. Manual configuring is necessary to poke
@@ -759,8 +758,8 @@ GLINTProbe(DriverPtr drv, int flags)
/* Claim specifics, when we KNOW ! the board */
/* Appian Jeronimo J2000 */
- if ((pPci->subsysVendor == 0x1097) &&
- (pPci->subsysCard == 0x3d32)) {
+ if ((PCI_SUB_VENDOR_ID(pPci) == 0x1097) &&
+ (PCI_SUB_DEVICE_ID(pPci) == 0x3d32)) {
int eIndex;
if (!xf86IsEntityShared(usedChips[i])) {
eIndex = xf86ClaimPciSlot(pPci->bus,
@@ -779,15 +778,15 @@ GLINTProbe(DriverPtr drv, int flags)
}
} else
/* Only claim other chips when GAMMA is used */
- if ((pPci->chipType == PCI_CHIP_GAMMA) ||
- (pPci->chipType == PCI_CHIP_GAMMA2) ||
- (pPci->chipType == PCI_CHIP_DELTA)) {
+ if ((PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_GAMMA) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_GAMMA2) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_DELTA)) {
while (*checkusedPci != NULL) {
int eIndex;
/* make sure we claim all but our source device */
- if ((pPci->bus == (*checkusedPci)->bus &&
- pPci->device == (*checkusedPci)->device) &&
- pPci->func != (*checkusedPci)->func) {
+ if ((pPci->bus == PCI_DEV_BUS(*checkusedPci) &&
+ pPci->device == PCI_DEV_DEV((*checkusedPci)) &&
+ pPci->func != PCI_DEV_FUNC(*checkusedPci))) {
/* Claim other entities on the same card */
eIndex = xf86ClaimPciSlot((*checkusedPci)->bus,
@@ -800,9 +799,9 @@ GLINTProbe(DriverPtr drv, int flags)
xf86AddEntityToScreen(pScrn,eIndex);
} else {
ErrorF("BusID %d:%d:%d already claimed\n",
- (*checkusedPci)->bus,
- (*checkusedPci)->device,
- (*checkusedPci)->func);
+ PCI_DEV_BUS(*checkusedPci),
+ PCI_DEV_DEV(*checkusedPci),
+ PCI_DEV_FUNC(*checkusedPci));
xfree(usedChips);
return FALSE;
}
@@ -826,8 +825,8 @@ GLINTProbe(DriverPtr drv, int flags)
/* Allow sharing if Appian J2000 detected */
/* (later Diamond FireGL3000 support too) */
- if ((pPci->subsysVendor == 0x1097) &&
- (pPci->subsysCard == 0x3d32)) {
+ if ((PCI_SUB_VENDOR_ID(pPci) == 0x1097) &&
+ (PCI_SUB_DEVICE_ID(pPci) == 0x3d32)) {
xf86SetEntitySharable(usedChips[i]);
/* Allocate an entity private if necessary */
if (GLINTEntityIndex < 0)
@@ -1032,8 +1031,10 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
if (pGlint->pEnt->location.type == BUS_PCI)
{
pGlint->PciInfo = xf86GetPciInfoForEntity(pGlint->pEnt->index);
+#ifndef XSERVER_LIBPCIACCESS
pGlint->PciTag = pciTag(pGlint->PciInfo->bus, pGlint->PciInfo->device,
pGlint->PciInfo->func);
+#endif
}
pGlint->InFifoSpace = 0; /* Force a Read of FIFO space on first run */
@@ -1047,14 +1048,14 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
for (i = 1; i < pScrn->numEntities; i++) {
pEnt = xf86GetEntityInfo(pScrn->entityList[i]);
pPci = xf86GetPciInfoForEntity(pEnt->index);
- if ( (pPci->chipType == PCI_CHIP_MX) ||
- (pPci->chipType == PCI_CHIP_PERMEDIA) ||
- (pPci->chipType == PCI_CHIP_TI_PERMEDIA) ||
- (pPci->chipType == PCI_CHIP_500TX) ||
- (pPci->chipType == PCI_CHIP_300SX) ||
- (pPci->chipType == PCI_CHIP_R4) ||
- (pPci->chipType == PCI_CHIP_PERMEDIA3) ) {
- pGlint->MultiChip = pPci->chipType;
+ if ( (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_MX) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_PERMEDIA) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_TI_PERMEDIA) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_500TX) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_300SX) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_R4) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_PERMEDIA3) ) {
+ pGlint->MultiChip = PCI_DEV_DEVICE_ID(pPci);
if (pGlint->numMultiDevices >= GLINT_MAX_MULTI_DEVICES) {
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"%d multiple chips unsupported, aborting. (Max - 2)\n",
@@ -1072,9 +1073,9 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
EntityInfoPtr pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
pciVideoPtr pPci = xf86GetPciInfoForEntity(pEnt->index);
- if ( ((pPci->chipType == PCI_CHIP_GAMMA) ||
- (pPci->chipType == PCI_CHIP_GAMMA2) ||
- (pPci->chipType == PCI_CHIP_DELTA)) &&
+ if ( ((PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_GAMMA) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_GAMMA2) ||
+ (PCI_DEV_DEVICE_ID(pPci) == PCI_CHIP_DELTA)) &&
(pGlint->numMultiDevices == 0) ) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Gamma/Delta with ZERO connected chips, aborting\n");
@@ -1086,9 +1087,9 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
EntityInfoPtr pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
pciVideoPtr pPci = xf86GetPciInfoForEntity(pEnt->index);
- if ((pPci->chipType != PCI_CHIP_GAMMA) &&
- (pPci->chipType != PCI_CHIP_GAMMA2) &&
- (pPci->chipType != PCI_CHIP_DELTA)) {
+ if ((PCI_DEV_DEVICE_ID(pPci) != PCI_CHIP_GAMMA) &&
+ (PCI_DEV_DEVICE_ID(pPci) != PCI_CHIP_GAMMA2) &&
+ (PCI_DEV_DEVICE_ID(pPci) != PCI_CHIP_DELTA)) {
GLINTProbeDDC(pScrn, pGlint->pEnt->index);
return TRUE;
} else
@@ -1315,8 +1316,8 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
pGlint->Chipset);
} else {
from = X_PROBED;
- pGlint->Chipset = pGlint->PciInfo->vendor << 16 |
- pGlint->PciInfo->chipType;
+ pGlint->Chipset = PCI_DEV_VENDOR_ID(pGlint->PciInfo) << 16 |
+ PCI_DEV_DEVICE_ID(pGlint->PciInfo);
pScrn->chipset = (char *)xf86TokenToString(GLINTChipsets,
pGlint->Chipset);
}
@@ -1325,7 +1326,7 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n",
pGlint->ChipRev);
} else {
- pGlint->ChipRev = pGlint->PciInfo->chipRev;
+ pGlint->ChipRev = PCI_DEV_REVISION(pGlint->PciInfo);
}
}
@@ -1371,7 +1372,7 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
pGlint->FbAddress = pGlint->pEnt->device->MemBase;
from = X_CONFIG;
} else {
- pGlint->FbAddress = pGlint->PciInfo->memBase[2] & 0xFF800000;
+ pGlint->FbAddress = PCI_REGION_BASE(pGlint->PciInfo, 2, REGION_MEM) & 0xFF800000;
}
if (pGlint->FbAddress)
@@ -1381,11 +1382,11 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
/* Trap GAMMA & DELTA specification, with no linear address */
/* Find the first GLINT chip and use that address */
if (pGlint->FbAddress == 0) {
- if (pGlint->MultiPciInfo[0]->memBase[2]) {
- pGlint->FbAddress = pGlint->MultiPciInfo[0]->memBase[2];
+ if (PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM)) {
+ pGlint->FbAddress = PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM);
xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
"FrameBuffer used from first rasterizer chip at 0x%lx\n",
- pGlint->MultiPciInfo[0]->memBase[2]);
+ PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM));
} else {
xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
"No FrameBuffer memory - aborting\n");
@@ -1401,7 +1402,7 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
pGlint->IOAddress = pGlint->pEnt->device->IOBase;
from = X_CONFIG;
} else {
- pGlint->IOAddress = pGlint->PciInfo->memBase[0] & 0xFFFFC000;
+ pGlint->IOAddress = PCI_REGION_BASE(pGlint->MultiPciInfo[0], 0, REGION_MEM) & 0xFFFFC000;
}
if ((IS_J2000) && (pGlint->Chipset == PCI_VENDOR_3DLABS_CHIP_GAMMA)) {
@@ -1485,12 +1486,9 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
/* Delta has a bug, we need to fix it here */
{
int basecopro =
- pGlint->MultiPciInfo[0]->memBase[0] & 0xFFFFC000;
- int basedelta = pGlint->PciInfo->memBase[0] & 0xFFFFC000;
- int glintdelta = pGlint->PciTag;
- int glintcopro = pciTag(pGlint->MultiPciInfo[0]->bus,
- pGlint->MultiPciInfo[0]->device,
- pGlint->MultiPciInfo[0]->func);
+ PCI_REGION_BASE(pGlint->MultiPciInfo[0], 0, REGION_MEM) & 0xFFFFC000;
+ int basedelta = PCI_REGION_BASE(pGlint->PciInfo, 0, REGION_MEM) & 0xFFFFC000;
+ int dummy;
int base3copro, offset;
if( (basedelta & 0x20000) ^ (basecopro & 0x20000) ) {
@@ -1500,7 +1498,7 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
} else {
offset = 0x1c; /* base3 */
}
- base3copro = pciReadLong(glintcopro, offset);
+ PCI_READ_LONG(pGlint->MultiPciInfo[0], &base3copro, offset);
if( (basecopro & 0x20000) ^ (base3copro & 0x20000) ) {
/*
* oops, still different; we know that base3
@@ -1516,25 +1514,25 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flags)
* read value
* write new value
*/
- (void) pciReadLong(glintdelta, 0x10);
- pciWriteLong(glintdelta, 0x10, 0xffffffff);
- (void) pciReadLong(glintdelta, 0x10);
- pciWriteLong(glintdelta, 0x10, base3copro);
+ PCI_READ_LONG(pGlint->PciInfo, &dummy, 0x10);
+ PCI_WRITE_LONG(pGlint->PciInfo, 0xffffffff, 0x10);
+ PCI_READ_LONG(pGlint->PciInfo, &dummy, 0x10);
+ PCI_WRITE_LONG(pGlint->PciInfo, base3copro, 0x10);
/*
* additionally,sometimes we see the baserom which might
* confuse the chip, so let's make sure that is disabled
*/
- (void) pciReadLong(glintcopro, 0x30);
- pciWriteLong(glintcopro, 0x30, 0xffffffff);
- (void) pciReadLong(glintcopro, 0x30);
- pciWriteLong(glintcopro, 0x30, 0);
+ PCI_READ_LONG(pGlint->MultiPciInfo[0], &dummy, 0x30);
+ PCI_WRITE_LONG(pGlint->MultiPciInfo[0], 0xffffffff, 0x30);
+ PCI_READ_LONG(pGlint->MultiPciInfo[0], &dummy, 0x30);
+ PCI_WRITE_LONG(pGlint->MultiPciInfo[0], 0, 0x30);
/*
* now update our internal structure accordingly
*/
pGlint->IOAddress =
- pGlint->PciInfo->memBase[0] = base3copro;
+ pGlint->PciInfo->memBase[0] = base3copro;
xf86DrvMsg(pScrn->scrnIndex, from,
"Delta Bug - Changing MMIO registers to 0x%lX\n",
(unsigned long)pGlint->IOAddress);
@@ -2459,17 +2457,47 @@ GLINTMapMem(ScrnInfoPtr pScrn)
* Map IO registers to virtual address space
* We always map VGA IO registers - even if we don't need them
*/
+#ifndef XSERVER_LIBPCIACCESS
pGlint->IOBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO_32BIT,
pGlint->PciTag, pGlint->IOAddress, 0x20000);
+#else
+ {
+ void** result = (void**)&pGlint->IOBase;
+ int err = pci_device_map_range(pGlint->PciInfo,
+ pGlint->IOAddress,
+ 0x20000,
+ PCI_DEV_MAP_FLAG_WRITABLE,
+ result);
+
+ if (err)
+ return FALSE;
+ }
+#endif
if (pGlint->IOBase == NULL)
return FALSE;
if (pGlint->FbMapSize != 0) {
+#ifndef XSERVER_LIBPCIACCESS
pGlint->FbBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
pGlint->PciTag,
pGlint->FbAddress,
pGlint->FbMapSize);
+#else
+ {
+ void** result = (void**)&pGlint->FbBase;
+ int err = pci_device_map_range(pGlint->PciInfo,
+ pGlint->FbAddress,
+ pGlint->FbMapSize,
+ PCI_DEV_MAP_FLAG_WRITABLE |
+ PCI_DEV_MAP_FLAG_WRITE_COMBINE,
+ result);
+
+ if (err)
+ return FALSE;
+ }
+
+#endif
if (pGlint->FbBase == NULL)
return FALSE;
}
@@ -2504,11 +2532,20 @@ GLINTUnmapMem(ScrnInfoPtr pScrn)
/*
* Unmap IO registers to virtual address space
*/
+#ifndef XSERVER_LIBPCIACCESS
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pGlint->IOBase, 0x20000);
+#else
+ pci_device_unmap_range(pGlint->PciInfo, pGlint->IOBase, 0x20000);
+#endif
pGlint->IOBase = NULL;
- if (pGlint->FbBase != NULL)
+ if (pGlint->FbBase != NULL) {
+#ifndef XSERVER_LIBPCIACCESS
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pGlint->FbBase, pGlint->FbMapSize);
+#else
+ pci_device_unmap_range(pGlint->PciInfo, pGlint->FbBase, pGlint->FbMapSize);
+#endif
+ }
pGlint->FbBase = NULL;
TRACE_EXIT("GLINTUnmapMem");
diff --git a/src/glint_regs.h b/src/glint_regs.h
index c120641..426e9ae 100644
--- a/src/glint_regs.h
+++ b/src/glint_regs.h
@@ -34,46 +34,46 @@
#define PCI_CHIP_3DLABS_GAMMA2 0x0E
/* The boards we know */
-#define IS_GLORIAXXL ((pGlint->PciInfo->subsysVendor == 0x1048) && \
- (pGlint->PciInfo->subsysCard == 0x0a42))
+#define IS_GLORIAXXL ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x1048) && \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0a42))
-#define IS_GLORIASYNERGY ((pGlint->PciInfo->subsysVendor == 0x1048) && \
- (pGlint->PciInfo->subsysCard == 0x0a32))
+#define IS_GLORIASYNERGY ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x1048) && \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0a32))
-#define IS_GMX2000 ((pGlint->PciInfo->subsysVendor == 0x3d3d) && \
- (pGlint->PciInfo->subsysCard == 0x0106))
+#define IS_GMX2000 ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x3d3d) && \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0106))
-#define IS_J2000 ((pGlint->PciInfo->subsysVendor == 0x1097) && \
- (pGlint->PciInfo->subsysCard == 0x3d32))
+#define IS_J2000 ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x1097) && \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x3d32))
-#define IS_JPRO ((pGlint->PciInfo->subsysVendor == 0x1097) && \
- (pGlint->PciInfo->subsysCard == 0x3db3))
+#define IS_JPRO ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x1097) && \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x3db3))
/* COMPAQ OEM VX1 PCI
* subsys == 0x0121 if VGA is enabled
* subsys == 0x000a if VGA has never been enabled
*/
-#define IS_PCI_QVX1 (pGlint->PciInfo->subsysVendor == 0x3d3d && \
- ((pGlint->PciInfo->subsysCard == 0x0121) || \
- (pGlint->PciInfo->subsysCard == 0x000a)))
+#define IS_PCI_QVX1 (PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x3d3d && \
+ ((PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0121) || \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x000a)))
/* COMPAQ OEM VX1 AGP
* subsys == 0x0144 if VGA is enabled
* subsys == 0x000c if VGA has never been enabled
*/
-#define IS_AGP_QVX1 (pGlint->PciInfo->subsysVendor == 0x3d3d && \
- ((pGlint->PciInfo->subsysCard == 0x0144) || \
- (pGlint->PciInfo->subsysCard == 0x000c)))
+#define IS_AGP_QVX1 (PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x3d3d && \
+ ((PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0144) || \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x000c)))
#define IS_QVX1 (IS_PCI_QVX1 || IS_AGP_QVX1)
-#define IS_ELSA_SYNERGY ((pGlint->PciInfo->subsysVendor == 0x1048) && \
- (pGlint->PciInfo->subsysCard == 0x0a32))
+#define IS_ELSA_SYNERGY ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x1048) && \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0a32))
/* COMPAQ OEM Permedia 2V with VGA disable jumper - 0x13e9 ? */
-#define IS_QPM2V ((pGlint->PciInfo->subsysVendor == 0x13e9) && \
- ((pGlint->PciInfo->subsysCard == 0x0100) || \
- (pGlint->PciInfo->subsysCard == 0x0002)))
+#define IS_QPM2V ((PCI_SUB_VENDOR_ID(pGlint->PciInfo) == 0x13e9) && \
+ ((PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0100) || \
+ (PCI_SUB_DEVICE_ID(pGlint->PciInfo) == 0x0002)))
/**********************************************
* GLINT 500TX Configuration Region Registers *
diff --git a/src/glintpcirename.h b/src/glintpcirename.h
new file mode 100644
index 0000000..c4beac6
--- /dev/null
+++ b/src/glintpcirename.h
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2007 George Sapountzis
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/**
+ * Macros for porting drivers from legacy xfree86 PCI code to the pciaccess
+ * library. The main purpose being to facilitate source code compatibility.
+ */
+
+#ifndef SISPCIRENAME_H
+#define SISPCIRENAME_H
+
+enum region_type {
+ REGION_MEM,
+ REGION_IO
+};
+
+#ifndef XSERVER_LIBPCIACCESS
+
+/* pciVideoPtr */
+#define PCI_DEV_VENDOR_ID(_pcidev) ((_pcidev)->vendor)
+#define PCI_DEV_DEVICE_ID(_pcidev) ((_pcidev)->chipType)
+#define PCI_DEV_REVISION(_pcidev) ((_pcidev)->chipRev)
+
+#define PCI_SUB_VENDOR_ID(_pcidev) ((_pcidev)->subsysVendor)
+#define PCI_SUB_DEVICE_ID(_pcidev) ((_pcidev)->subsysCard)
+
+#define PCI_DEV_TAG(_pcidev) pciTag((_pcidev)->bus, \
+ (_pcidev)->device, \
+ (_pcidev)->func)
+#define PCI_DEV_BUS(_pcidev) ((_pcidev)->bus)
+#define PCI_DEV_DEV(_pcidev) ((_pcidev)->device)
+#define PCI_DEV_FUNC(_pcidev) ((_pcidev)->func)
+
+/* pciConfigPtr */
+#define PCI_CFG_TAG(_pcidev) (((pciConfigPtr)(_pcidev)->thisCard)->tag)
+#define PCI_CFG_BUS(_pcidev) (((pciConfigPtr)(_pcidev)->thisCard)->busnum)
+#define PCI_CFG_DEV(_pcidev) (((pciConfigPtr)(_pcidev)->thisCard)->devnum)
+#define PCI_CFG_FUNC(_pcidev) (((pciConfigPtr)(_pcidev)->thisCard)->funcnum)
+
+/* region addr: xfree86 uses different fields for memory regions and I/O ports */
+#define PCI_REGION_BASE(_pcidev, _b, _type) \
+ (((_type) == REGION_MEM) ? (_pcidev)->memBase[(_b)] \
+ : (_pcidev)->ioBase[(_b)])
+
+/* region size: xfree86 uses the log2 of the region size,
+ * but with zero meaning no region, not size of one XXX */
+#define PCI_REGION_SIZE(_pcidev, _b) \
+ (((_pcidev)->size[(_b)] > 0) ? (1 << (_pcidev)->size[(_b)]) : 0)
+
+/* read/write PCI configuration space */
+#define PCI_READ_BYTE(_pcidev, _value_ptr, _offset) \
+ *(_value_ptr) = pciReadByte(PCI_CFG_TAG(_pcidev), (_offset))
+
+#define PCI_READ_LONG(_pcidev, _value_ptr, _offset) \
+ *(_value_ptr) = pciReadLong(PCI_CFG_TAG(_pcidev), (_offset))
+
+#define PCI_WRITE_LONG(_pcidev, _value, _offset) \
+ pciWriteLong(PCI_CFG_TAG(_pcidev), (_offset), (_value))
+
+#else /* XSERVER_LIBPCIACCESS */
+
+typedef struct pci_device *pciVideoPtr;
+
+#define PCI_DEV_VENDOR_ID(_pcidev) ((_pcidev)->vendor_id)
+#define PCI_DEV_DEVICE_ID(_pcidev) ((_pcidev)->device_id)
+#define PCI_DEV_REVISION(_pcidev) ((_pcidev)->revision)
+
+#define PCI_SUB_VENDOR_ID(_pcidev) ((_pcidev)->subvendor_id)
+#define PCI_SUB_DEVICE_ID(_pcidev) ((_pcidev)->subdevice_id)
+
+/* pci-rework functions take a 'pci_device' parameter instead of a tag */
+#define PCI_DEV_TAG(_pcidev) (_pcidev)
+
+/* PCI_DEV macros, typically used in printf's, add domain ? XXX */
+#define PCI_DEV_BUS(_pcidev) ((_pcidev)->bus)
+#define PCI_DEV_DEV(_pcidev) ((_pcidev)->dev)
+#define PCI_DEV_FUNC(_pcidev) ((_pcidev)->func)
+
+/* pci-rework functions take a 'pci_device' parameter instead of a tag */
+#define PCI_CFG_TAG(_pcidev) (_pcidev)
+
+/* PCI_CFG macros, typically used in DRI init, contain the domain */
+#define PCI_CFG_BUS(_pcidev) (((_pcidev)->domain << 8) | \
+ (_pcidev)->bus)
+#define PCI_CFG_DEV(_pcidev) ((_pcidev)->dev)
+#define PCI_CFG_FUNC(_pcidev) ((_pcidev)->func)
+
+#define PCI_REGION_BASE(_pcidev, _b, _type) ((_pcidev)->regions[(_b)].base_addr)
+#define PCI_REGION_SIZE(_pcidev, _b) ((_pcidev)->regions[(_b)].size)
+
+#define PCI_READ_BYTE(_pcidev, _value_ptr, _offset) \
+ pci_device_cfg_read_u8((_pcidev), (_value_ptr), (_offset))
+
+#define PCI_READ_LONG(_pcidev, _value_ptr, _offset) \
+ pci_device_cfg_read_u32((_pcidev), (_value_ptr), (_offset))
+
+#define PCI_WRITE_LONG(_pcidev, _value, _offset) \
+ pci_device_cfg_write_u32((_pcidev), (_value), (_offset))
+
+#endif /* XSERVER_LIBPCIACCESS */
+
+#endif /* SISPCIRENAME_H */
diff --git a/src/pm2_video.c b/src/pm2_video.c
index a5f8dc2..46d5d74 100644
--- a/src/pm2_video.c
+++ b/src/pm2_video.c
@@ -2769,9 +2769,9 @@ NewAdaptorPriv(ScrnInfoPtr pScrn, Bool VideoIO)
xvipc.pAPriv = pAPriv; /* Server head ID */
xvipc.op = OP_CONNECT;
- xvipc.a = pGlint->PciInfo->bus;
- xvipc.b = pGlint->PciInfo->device;
- xvipc.c = pGlint->PciInfo->func;
+ xvipc.a = PCI_DEV_BUS(pGlint->PciInfo);
+ xvipc.b = PCI_DEV_DEV(pGlint->PciInfo);
+ xvipc.c = PCI_DEV_FUNC(pGlint->PciInfo);
xvipc.d = pScrn->videoRam << 10; /* XF86Config overrides probing */
@@ -3006,8 +3006,10 @@ Permedia2VideoInit(ScreenPtr pScreen)
break;
}
- if (VideoIO)
- switch (pciReadLong(pGlint->PciTag, PCI_SUBSYSTEM_ID_REG)) {
+ if (VideoIO) {
+ unsigned int temp;
+ PCI_READ_LONG(pGlint->PciInfo, &temp, PCI_SUBSYSTEM_ID_REG);
+ switch (temp) {
case PCI_SUBSYSTEM_ID_WINNER_2000_P2A:
case PCI_SUBSYSTEM_ID_WINNER_2000_P2C:
case PCI_SUBSYSTEM_ID_GLORIA_SYNERGY_P2A:
@@ -3018,7 +3020,7 @@ Permedia2VideoInit(ScreenPtr pScreen)
xf86DrvMsgVerb(pScrn->scrnIndex, X_PROBED, 1, "No Xv vio support for this board\n");
VideoIO = FALSE;
}
-
+ }
if (pGlint->NoAccel && !VideoIO)
return;
diff --git a/src/pm3_dac.c b/src/pm3_dac.c
index c390c4d..5aa0ecb 100644
--- a/src/pm3_dac.c
+++ b/src/pm3_dac.c
@@ -65,10 +65,24 @@ Permedia3MemorySizeDetect(ScrnInfoPtr pScrn)
* regardless of memory configuration */
pGlint->FbMapSize = 64*1024*1024;
+#ifndef XSERVER_LIBPCIACCESS
/* Mark as VIDMEM_MMIO to avoid write-combining while detecting memory */
pGlint->FbBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO,
pGlint->PciTag, pGlint->FbAddress, pGlint->FbMapSize);
+#else
+ {
+ void** result = (void**)&pGlint->FbBase;
+ int err = pci_device_map_range(pGlint->PciInfo,
+ pGlint->FbAddress,
+ pGlint->FbMapSize,
+ PCI_DEV_MAP_FLAG_WRITABLE,
+ result);
+
+ if (err)
+ return FALSE;
+ }
+#endif
if (pGlint->FbBase == NULL)
return 0;
@@ -119,8 +133,12 @@ Permedia3MemorySizeDetect(ScrnInfoPtr pScrn)
GLINT_SLOW_WRITE_REG(temp, PM3MemBypassWriteMask);
+#ifndef XSERVER_LIBPCIACCESS
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pGlint->FbBase,
pGlint->FbMapSize);
+#else
+ pci_device_unmap_range(pGlint->PciInfo, pGlint->FbBase, pGlint->FbMapSize);
+#endif
pGlint->FbBase = NULL;
pGlint->FbMapSize = 0;
@@ -466,10 +484,8 @@ Permedia3Init(ScrnInfoPtr pScrn, DisplayModePtr mode, GLINTRegPtr pReg)
if (pGlint->MultiAperture) {
STOREREG(GMultGLINTAperture, pGlint->realWidth);
- STOREREG(GMultGLINT1,
- pGlint->MultiPciInfo[0]->memBase[2] & 0xFF800000);
- STOREREG(GMultGLINT2,
- pGlint->MultiPciInfo[1]->memBase[2] & 0xFF800000);
+ STOREREG(GMultGLINT1, PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM) & 0xFF800000);
+ STOREREG(GMultGLINT2, PCI_REGION_BASE(pGlint->MultiPciInfo[1], 2, REIGON_MEM) & 0xFF800000);
}
STOREREG(PM3MemBypassWriteMask, 0xffffffff);
diff --git a/src/tx_dac.c b/src/tx_dac.c
index 3ec4888..cabb4fb 100644
--- a/src/tx_dac.c
+++ b/src/tx_dac.c
@@ -69,10 +69,8 @@ TXInit(ScrnInfoPtr pScrn, DisplayModePtr mode, GLINTRegPtr pReg)
* as incorrect scanline interleaving when software rendering.
*/
STOREREG(GMultGLINTAperture, pGlint->realWidth);
- STOREREG(GMultGLINT1,
- pGlint->MultiPciInfo[0]->memBase[2] & 0xFF800000);
- STOREREG(GMultGLINT2,
- pGlint->MultiPciInfo[1]->memBase[2] & 0xFF800000);
+ STOREREG(GMultGLINT1, PCI_REGION_BASE(pGlint->MultiPciInfo[0], 2, REGION_MEM) & 0xFF800000);
+ STOREREG(GMultGLINT2, PCI_REGION_BASE(pGlint->MultiPciInfo[1], 2, REIGON_MEM) & 0xFF800000);
}
if (IS_GMX2000 || IS_GLORIAXXL) {
commit f87b7c663c8ae2c4abf270f8f941a4c068da7e8b
Author: Julien Cristau <jcristau@debian.org>
Date: Tue Feb 5 13:45:05 2008 +0100
Add missing #includes to fix compiler warnings.
Fixes the following warnings:
../../src/glint_driver.c: In function 'GLINTScreenInit':
../../src/glint_driver.c:2968: warning: implicit declaration of function 'cfb8_32ScreenInit'
../../src/glint_driver.c:3147: warning: implicit declaration of function 'xf86Overlay8Plus32Init'
../../src/pm2_video.c: In function 'StopVideoStream':
../../src/pm2_video.c:1339: warning: implicit declaration of function 'usleep'
../../src/pm2_video.c: In function 'xvipcHandshake':
../../src/pm2_video.c:2413: warning: implicit declaration of function 'ioctl'
../../src/pm2_video.c: In function 'xvipcOpen':
../../src/pm2_video.c:2622: warning: implicit declaration of function 'close'
diff --git a/src/glint_driver.c b/src/glint_driver.c
index ed7b07c..5162d5f 100644
--- a/src/glint_driver.c
+++ b/src/glint_driver.c
@@ -49,6 +49,7 @@
#include "xf86int10.h"
#include "dixstruct.h"
#include "vbe.h"
+#include "cfb8_32.h"
#include "compiler.h"
#include "mipointer.h"
diff --git a/src/pm2_video.c b/src/pm2_video.c
index e64d991..a5f8dc2 100644
--- a/src/pm2_video.c
+++ b/src/pm2_video.c
Reply to: