diff -Naur xf86-video-via-0.2.2/configure.ac xf86-video-via-0.2.2-r1/configure.ac --- configure.ac 2006-10-13 22:48:26.000000000 +0000 +++ configure.ac 2008-10-25 15:11:59.000000000 +0000 @@ -69,6 +69,16 @@ AC_HEADER_STDC AC_CHECK_HEADERS([inttypes.h]) +# Check for libpciaccess usage +AC_CHECK_HEADER(xf86Modes.h,[XMODES=yes],[XMODES=no],[#include "xorg-server.h"]) +AC_CHECK_DECL(XSERVER_LIBPCIACCESS, + [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no], + [#include "xorg/xorg-server.h"]) + +if test x$XSERVER_LIBPCIACCESS = xyes; then + PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) +fi + if test "x$DRI" != xno; then AC_CHECK_FILE([${sdkdir}/dri.h], @@ -117,6 +127,15 @@ AM_CONDITIONAL(XVMC, test x$XVMC = xyes) ++# Check the ABI_VIDEODRV_VERSION +SAVE_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS $XORG_CFLAGS" + +AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test x$XSERVER_LIBPCIACCESS = xyes) +if test "$XSERVER_LIBPCIACCESS" = yes; then + AC_DEFINE(XSERVER_LIBPCIACCESS,1,[Enable libpciaccess]) +fi + AC_SUBST([DRI_CFLAGS]) AC_SUBST([XORG_CFLAGS]) AC_SUBST([moduledir]) diff -Naur xf86-video-via-0.2.2/src/via.h xf86-video-via-0.2.2-r1/src/via.h --- src/via.h 2006-10-11 22:28:51.000000000 +0000 +++ src/via.h 2008-10-26 06:38:33.000000000 +0000 @@ -647,5 +647,20 @@ #define MPG_SLICE_DATA 0xA0 +#ifdef XSERVER_LIBPCIACCESS +#define VIA_MEMBASE(p,n) (p)->regions[(n)].base_addr +#define VENDOR_ID(p) (p)->vendor_id +#define DEVICE_ID(p) (p)->device_id +#define SUBVENDOR_ID(p) (p)->subvendor_id +#define SUBSYS_ID(p) (p)->subdevice_id +#define CHIP_REVISION(p) (p)->revision +#else +#define VIA_MEMBASE(p,n) (p)->memBase[n] +#define VENDOR_ID(p) (p)->vendor +#define DEVICE_ID(p) (p)->chipType +#define SUBVENDOR_ID(p) (p)->subsysVendor +#define SUBSYS_ID(p) (p)->subsysCard +#define CHIP_REVISION(p) (p)->chipRev +#endif #endif /* _VIA_H_ */ diff -Naur xf86-video-via-0.2.2/src/via_dri.c xf86-video-via-0.2.2-r1/src/via_dri.c --- src/via_dri.c 2006-10-11 22:28:51.000000000 +0000 +++ src/via_dri.c 2008-10-26 06:41:18.000000000 +0000 @@ -107,9 +107,15 @@ pVIADRI->irqEnabled = drmGetInterruptFromBusID (pVia->drmFD, +#ifdef XSERVER_LIBPCIACCESS + ((pVia->PciInfo->domain << 8) | pVia->PciInfo->bus), + pVia->PciInfo->dev, pVia->PciInfo->func +#else ((pciConfigPtr)pVia->PciInfo->thisCard)->busnum, ((pciConfigPtr)pVia->PciInfo->thisCard)->devnum, - ((pciConfigPtr)pVia->PciInfo->thisCard)->funcnum); + ((pciConfigPtr)pVia->PciInfo->thisCard)->funcnum +#endif + ); if ((drmCtlInstHandler(pVia->drmFD, pVIADRI->irqEnabled))) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "[drm] Failure adding irq handler. " @@ -664,9 +670,15 @@ pDRIInfo->clientDriverName = VIAClientDriverName; pDRIInfo->busIdString = xalloc(64); sprintf(pDRIInfo->busIdString, "PCI:%d:%d:%d", - ((pciConfigPtr)pVia->PciInfo->thisCard)->busnum, - ((pciConfigPtr)pVia->PciInfo->thisCard)->devnum, - ((pciConfigPtr)pVia->PciInfo->thisCard)->funcnum); +#ifdef XSERVER_LIBPCIACCESS + ((pVia->PciInfo->domain << 8) | pVia->PciInfo->bus), + pVia->PciInfo->dev, pVia->PciInfo->func +#else + ((pciConfigPtr)pVia->PciInfo->thisCard)->busnum, + ((pciConfigPtr)pVia->PciInfo->thisCard)->devnum, + ((pciConfigPtr)pVia->PciInfo->thisCard)->funcnum +#endif + ); pDRIInfo->ddxDriverMajorVersion = VIA_DRIDDX_VERSION_MAJOR; pDRIInfo->ddxDriverMinorVersion = VIA_DRIDDX_VERSION_MINOR; pDRIInfo->ddxDriverPatchVersion = VIA_DRIDDX_VERSION_PATCH; diff -Naur xf86-video-via-0.2.2/src/via_driver.c xf86-video-via-0.2.2-r1/src/via_driver.c --- src/via_driver.c 2006-10-11 22:28:51.000000000 +0000 +++ src/via_driver.c 2008-10-26 07:55:20.000000000 +0000 @@ -58,7 +58,43 @@ */ static void VIAIdentify(int flags); + +#ifdef XSERVER_LIBPCIACCESS +struct pci_device * +via_pci_device(const struct pci_slot_match *bridge_match) +{ + struct pci_device_iterator *slot_iterator; + struct pci_device *bridge; + + slot_iterator = pci_slot_match_iterator_create(bridge_match); + bridge = pci_device_next(slot_iterator); + pci_iterator_destroy(slot_iterator); + return bridge; +} + +struct pci_device * +via_host_bridge(void) +{ + static const struct pci_slot_match bridge_match = { + 0, 0, 0, 0, 0 + }; + return via_pci_device(&bridge_match); +} + +viaPciDeviceVga(void) +{ + static const struct pci_slot_match bridge_match = { + 0, 0, 0, 3, 0 + }; + return via_pci_device(&bridge_match); +} + +static Bool via_pci_probe(DriverPtr drv, int entity_num, + struct pci_device *dev, intptr_t match_data); +#else /* !XSERVER_LIBPCIACCESS */ static Bool VIAProbe(DriverPtr drv, int flags); +#endif + static Bool VIAPreInit(ScrnInfoPtr pScrn, int flags); static Bool VIAEnterVT(int scrnIndex, int flags); static void VIALeaveVT(int scrnIndex, int flags); @@ -80,15 +116,45 @@ static Bool VIAMapFB(ScrnInfoPtr pScrn); static void VIAUnmapMem(ScrnInfoPtr pScrn); +#ifdef XSERVER_LIBPCIACCESS + +#define VIA_DEVICE_MATCH(d,i) \ + { 0x1106, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) } + +static const struct pci_id_match via_device_match[] = { + VIA_DEVICE_MATCH (PCI_CHIP_VT3204, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3259, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_CLE3122, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3205, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3314, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3336, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3364, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3324, 0 ), + VIA_DEVICE_MATCH (PCI_CHIP_VT3327, 0 ), + { 0, 0, 0 }, +}; + +#endif /* XSERVER_LIBPCIACCESS */ + _X_EXPORT DriverRec VIA = { VIA_VERSION, DRIVER_NAME, VIAIdentify, +#ifdef XSERVER_LIBPCIACCESS + NULL, +#else VIAProbe, +#endif VIAAvailableOptions, NULL, 0 +, + NULL, +#ifdef XSERVER_LIBPCIACCESS + via_device_match, + via_pci_probe +#endif }; @@ -374,7 +440,13 @@ if (!setupDone) { setupDone = TRUE; - xf86AddDriver(&VIA, module, 0); + xf86AddDriver(&VIA, module, +#ifdef XSERVER_LIBPCIACCESS + HaveDriverFuncs +#else + 0 +#endif + ); LoaderRefSymLists(vgaHWSymbols, fbSymbols, ramdacSymbols, @@ -459,6 +531,44 @@ } /* VIAIdentify */ +#ifdef XSERVER_LIBPCIACCESS +static Bool +via_pci_probe(DriverPtr driver, int entity_num, + struct pci_device *device, intptr_t match_data) +{ + ScrnInfoPtr scrn = NULL; + EntityInfoPtr entity; + DevUnion *private; + + scrn = xf86ConfigPciEntity(scrn, 0, entity_num, VIAPciChipsets, + NULL, NULL, NULL, NULL, NULL); + + if (scrn != NULL) { + scrn->driverVersion = VIA_VERSION; + scrn->driverName = DRIVER_NAME; + scrn->name = "VIA"; + scrn->Probe = NULL; + + entity = xf86GetEntityInfo(entity_num); + + scrn->PreInit = VIAPreInit; + scrn->ScreenInit = VIAScreenInit; + scrn->SwitchMode = VIASwitchMode; + scrn->AdjustFrame = VIAAdjustFrame; + scrn->EnterVT = VIAEnterVT; + scrn->LeaveVT = VIALeaveVT; + scrn->FreeScreen = VIAFreeScreen; + scrn->ValidMode = ViaValidMode; + + xf86Msg(X_NOTICE, + "VIA Technologies does not support this driver in any way.\n"); + xf86Msg(X_NOTICE, + "For support, please contact the driver maintainer or your X vendor.\n"); + } + return scrn != NULL; +} +#else /* !XSERVER_LIBPCIACCESS */ + static Bool VIAProbe(DriverPtr drv, int flags) { GDevPtr *devSections; @@ -565,6 +675,7 @@ return foundScreen; } /* VIAProbe */ +#endif /* !XSERVER_LIBPCIACCESS */ #ifdef XF86DRI static void kickVblank(ScrnInfoPtr pScrn) @@ -636,6 +747,10 @@ int i, bMemSize = 0; Bool UseVBEModes = FALSE; +#ifdef XSERVER_LIBPCIACCESS + struct pci_device *bridge = via_host_bridge(); +#endif + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAPreInit\n")); if (pScrn->numEntities > 1) @@ -1149,7 +1264,7 @@ pEnt->device->chipID); } else { from = X_PROBED; - pVia->ChipId = pVia->PciInfo->chipType; + pVia->ChipId = DEVICE_ID(pVia->PciInfo); pVia->Chipset = LookupChipID(VIAPciChipsets, pVia->ChipId); pScrn->chipset = (char *)xf86TokenToString(VIAChipsets, pVia->Chipset); @@ -1163,7 +1278,13 @@ else { /*pVia->ChipRev = pVia->PciInfo->chipRev;*/ /* Read PCI bus 0, dev 0, function 0, index 0xF6 to get chip rev. */ +#ifdef XSERVER_LIBPCIACCESS + struct pci_device *bridge = via_host_bridge(); + + pci_device_cfg_read_u8(bridge, &pVia->ChipRev, 0xF6); +#else pVia->ChipRev = pciReadByte(pciTag(0, 0, 0), 0xF6); +#endif } if (pEnt->device->videoRam != 0) { @@ -1205,8 +1326,10 @@ } #endif /* HAVE_PM800 */ +#ifndef XSERVER_LIBPCIACCESS pVia->PciTag = pciTag(pVia->PciInfo->bus, pVia->PciInfo->device, pVia->PciInfo->func); +#endif if (!VIAMapMMIO(pScrn)) { VIAFreeRec(pScrn); @@ -1271,20 +1394,64 @@ } /* detect amount of installed ram */ - if (pScrn->videoRam < 16384 || pScrn->videoRam > 65536) { - if(pVia->Chipset == VIA_CLE266) - bMemSize = hwp->readSeq(hwp, 0x34); - else - bMemSize = hwp->readSeq(hwp, 0x39); + from = X_PROBED; + CARD8 videoRam; - if (bMemSize > 16 && bMemSize <= 128) - pScrn->videoRam = (bMemSize + 1) << 9; - else if (bMemSize > 0 && bMemSize < 31) - pScrn->videoRam = bMemSize << 12; - else { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Memory size detection failed: using 16MB\n"); - pScrn->videoRam = 16 << 10; /* Assume the base 16Mb */ - } +#ifdef XSERVER_LIBPCIACCESS + struct pci_device *vgaDevice = viaPciDeviceVga(); +#endif + + switch (pVia->Chipset) { + case VIA_CLE266: + case VIA_KM400: +#ifdef XSERVER_LIBPCIACCESS + pci_device_cfg_read_u8(bridge, &videoRam, 0xE1); +#else + videoRam = pciReadByte(pciTag(0, 0, 0), 0xE1) & 0x70; +#endif + pScrn->videoRam = (1 << ((videoRam & 0x70) >> 4)) << 10; + break; + case VIA_PM800: + case VIA_VM800: + case VIA_K8M800: +#ifdef XSERVER_LIBPCIACCESS + pci_device_cfg_read_u8(vgaDevice, &videoRam, 0xA1); +#else + videoRam = pciReadByte(pciTag(0, 0, 3), 0xA1) & 0x70; +#endif + pScrn->videoRam = (1 << ((videoRam & 0x70) >> 4)) << 10; + break; + case VIA_K8M890: + case VIA_P4M890: + case VIA_P4M900: + case VIA_CX700: +#ifdef XSERVER_LIBPCIACCESS + pci_device_cfg_read_u8(vgaDevice, &videoRam, 0xA1); +#else + videoRam = pciReadByte(pciTag(0, 0, 3), 0xA1) & 0x70; +#endif + pScrn->videoRam = (1 << ((videoRam & 0x70) >> 4)) << 12; + break; + default: + if (pScrn->videoRam < 16384 || pScrn->videoRam > 65536) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Using old memory-detection method.\n"); + bMemSize = hwp->readSeq(hwp, 0x39); + if (bMemSize > 16 && bMemSize <= 128) + pScrn->videoRam = (bMemSize + 1) << 9; + else if (bMemSize > 0 && bMemSize < 31) + pScrn->videoRam = bMemSize << 12; + else { + from = X_DEFAULT; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Memory size detection failed: using 16 MB.\n"); + pScrn->videoRam = 16 << 10; + } + } else { + from = X_DEFAULT; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "No memory-detection done. Use VideoRAM option.\n"); + } } /* Split FB for SAMM */ @@ -1774,25 +1941,67 @@ { VIAPtr pVia = VIAPTR(pScrn); +#ifdef XSERVER_LIBPCIACCESS + int err; +#endif + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAMapMMIO\n")); +#ifdef XSERVER_LIBPCIACCESS + pVia->FrameBufferBase = pVia->PciInfo->regions[0].base_addr; + pVia->MmioBase = pVia->PciInfo->regions[1].base_addr; +#else pVia->FrameBufferBase = pVia->PciInfo->memBase[0]; pVia->MmioBase = pVia->PciInfo->memBase[1]; +#endif xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "mapping MMIO @ 0x%lx with size 0x%x\n", pVia->MmioBase, VIA_MMIO_REGSIZE); +#ifdef XSERVER_LIBPCIACCESS + err = pci_device_map_range(pVia->PciInfo, + pVia->MmioBase, + VIA_MMIO_REGSIZE, + PCI_DEV_MAP_FLAG_WRITABLE, + (void **)&pVia->MapBase); + + if (err) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Unable to map mmio BAR. %s (%d)\n", strerror(err), err); + return FALSE; + } +#else pVia->MapBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO, pVia->PciTag, pVia->MmioBase, VIA_MMIO_REGSIZE); + if (!pVia->MapBase) + return FALSE; +#endif xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "mapping BitBlt MMIO @ 0x%lx with size 0x%x\n", pVia->MmioBase + VIA_MMIO_BLTBASE, VIA_MMIO_BLTSIZE); +#ifdef XSERVER_LIBPCIACCESS + err = pci_device_map_range(pVia->PciInfo, + pVia->MmioBase + VIA_MMIO_BLTBASE, + VIA_MMIO_BLTSIZE, + (PCI_DEV_MAP_FLAG_WRITABLE + | PCI_DEV_MAP_FLAG_WRITE_COMBINE), + (void **)&pVia->BltBase); + + if (err) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Unable to map blt BAR. %s (%d)\n", strerror(err), err); + return FALSE; + } +#else pVia->BltBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO, pVia->PciTag, pVia->MmioBase + VIA_MMIO_BLTBASE, VIA_MMIO_BLTSIZE); + if (!pVia->BltBase) + return FALSE; +#endif if (!pVia->MapBase || !pVia->BltBase) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -1838,6 +2047,10 @@ { VIAPtr pVia = VIAPTR(pScrn); +#ifdef XSERVER_LIBPCIACCESS + int err; +#endif + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAMapFB\n")); xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "mapping framebuffer @ 0x%lx with size 0x%lx\n", @@ -1845,6 +2058,17 @@ if (pVia->videoRambytes) { +#ifdef XSERVER_LIBPCIACCESS + err = pci_device_map_range(pVia->PciInfo, pVia->FrameBufferBase, + pVia->videoRambytes, + PCI_DEV_MAP_FLAG_WRITABLE, + (void **)&pVia->FBBase); + if (err) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Unable to map mmio BAR. %s (%d)\n", strerror(err), err); + return FALSE; + } +#else pVia->FBBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER, pVia->PciTag, pVia->FrameBufferBase, pVia->videoRambytes); @@ -1854,6 +2078,7 @@ "Internal error: could not map framebuffer\n"); return FALSE; } +#endif pVia->FBFreeStart = (pScrn->displayWidth * pScrn->bitsPerPixel >> 3) * pScrn->virtualY; @@ -1864,7 +2089,11 @@ pVia->FBBase, pVia->FBFreeStart, pVia->FBFreeEnd); } +#ifdef XSERVER_LIBPCIACCESS + pScrn->memPhysBase = pVia->PciInfo->regions[0].base_addr; +#else pScrn->memPhysBase = pVia->PciInfo->memBase[0]; +#endif pScrn->fbOffset = 0; if(pVia->IsSecondary) pScrn->fbOffset = pScrn->videoRam << 10; @@ -1882,14 +2111,31 @@ /* Disable MMIO */ ViaSeqMask(VGAHWPTR(pScrn), 0x1A, 0x00, 0x60); +#ifdef XSERVER_LIBPCIACCESS + if (pVia->MapBase) + pci_device_unmap_range(pVia->PciInfo, (pointer) pVia->MapBase, + VIA_MMIO_REGSIZE); + + if (pVia->BltBase) + pci_device_unmap_range(pVia->PciInfo, (pointer) pVia->BltBase, + VIA_MMIO_BLTSIZE); + + if (pVia->FBBase) + pci_device_unmap_range(pVia->PciInfo, (pointer) pVia->FBBase, + pVia->videoRambytes); +#else if (pVia->MapBase) - xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pVia->MapBase, VIA_MMIO_REGSIZE); + xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pVia->MapBase, + VIA_MMIO_REGSIZE); if (pVia->BltBase) - xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pVia->BltBase, VIA_MMIO_BLTSIZE); + xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pVia->BltBase, + VIA_MMIO_BLTSIZE); if (pVia->FBBase) - xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pVia->FBBase, pVia->videoRambytes); + xf86UnMapVidMem(pScrn->scrnIndex, (pointer) pVia->FBBase, + pVia->videoRambytes); +#endif } /* diff -Naur xf86-video-via-0.2.2/src/via_driver.h xf86-video-via-0.2.2-r1/src/via_driver.h --- src/via_driver.h 2006-10-11 22:28:51.000000000 +0000 +++ src/via_driver.h 2008-10-26 07:04:17.000000000 +0000 @@ -57,6 +57,12 @@ #include "via_dmabuffer.h" #include "via_3d.h" +/* Adapt to libpciaccess */ +#include "xorg-server.h" +#ifdef XSERVER_LIBPCIACCESS +#include +#endif + #ifdef XF86DRI #define _XF86DRI_SERVER_ #include "sarea.h" @@ -213,8 +219,18 @@ int rotate; CloseScreenProcPtr CloseScreen; + + /* Adapt to libpciaccess */ +#ifdef XSERVER_LIBPCIACCESS + struct pci_device* PciInfo; + int mmio_bar; + int fb_bar; + int gtt_bar; +#else pciVideoPtr PciInfo; PCITAG PciTag; +#endif + int Chipset; int ChipId; int ChipRev; @@ -438,4 +454,21 @@ Bool VIADRIRingBufferInit(ScrnInfoPtr pScrn); #endif /* XF86DRI */ +/* Macros allowing libpciaccess usage */ +#ifdef XSERVER_LIBPCIACCESS +#define I810_MEMBASE(p,n) (p)->regions[(n)].base_addr +#define VENDOR_ID(p) (p)->vendor_id +#define DEVICE_ID(p) (p)->device_id +#define SUBVENDOR_ID(p) (p)->subvendor_id +#define SUBSYS_ID(p) (p)->subdevice_id +#define CHIP_REVISION(p) (p)->revision +#else +#define I810_MEMBASE(p,n) (p)->memBase[n] +#define VENDOR_ID(p) (p)->vendor +#define DEVICE_ID(p) (p)->chipType +#define SUBVENDOR_ID(p) (p)->subsysVendor +#define SUBSYS_ID(p) (p)->subsysCard +#define CHIP_REVISION(p) (p)->chipRev +#endif /* XSERVER_LIBPCIACCESS */ + #endif /* _VIA_DRIVER_H_ */ diff -Naur xf86-video-via-0.2.2/src/via_id.c xf86-video-via-0.2.2-r1/src/via_id.c --- src/via_id.c 2006-10-11 22:28:51.000000000 +0000 +++ src/via_id.c 2008-10-26 08:52:42.000000000 +0000 @@ -87,48 +87,56 @@ * */ static struct ViaCardIdStruct ViaCardId[] = { - /* CLE266 */ + /*** CLE266 ***/ + {"ECS CLE266 (1.0)", VIA_CLE266, 0x1019, 0x1B43, VIA_DEVICE_CRT | VIA_DEVICE_TV}, {"LT21 VA28", VIA_CLE266, 0x1019, 0x1B44, VIA_DEVICE_CRT}, {"ECS G320", VIA_CLE266, 0x1019, 0xB320, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"Asustek Terminator C3V", VIA_CLE266, 0x1043, 0x8155, VIA_DEVICE_CRT}, {"VIA VT3122 (CLE266)-EPIA M/MII/...", VIA_CLE266, 0x1106, 0x3122, VIA_DEVICE_CRT | VIA_DEVICE_TV}, - /* KM400 */ + {"MSI MS-6723", VIA_CLE266, 0x1462, 0X7238, VIA_DEVICE_CRT | VIA_DEVICE_TV}, + {"Clevo T200V", VIA_CLE266, 0x1558, 0x200A, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Biostar ARKplus III", VIA_CLE266, 0x1565, 0x3204, VIA_DEVICE_CRT | VIA_DEVICE_TV}, /* FS454 TV encoder */ + + /*** KM400, KM400A, KN400, P4M800 ***/ {"ECS KM400-M2", VIA_KM400, 0x1019, 0x1842, VIA_DEVICE_CRT}, {"Acer Aspire 135x", VIA_KM400, 0x1025, 0x0033, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, {"Asustek A7V8X-MX", VIA_KM400, 0x1043, 0x80ED, VIA_DEVICE_CRT}, {"Asustek A7V8X-LA", VIA_KM400, 0x1043, 0x80F9, VIA_DEVICE_CRT}, - {"Asustek A7V8X-MX SE/A7V400-MX", VIA_KM400, 0x1043, 0x8118, VIA_DEVICE_CRT}, + {"Asustek A7V8X-MX SE / A7V400-MX", VIA_KM400, 0x1043, 0x8118, VIA_DEVICE_CRT}, {"Asustek Terminator A7VT", VIA_KM400, 0x1043, 0x813E, VIA_DEVICE_CRT | VIA_DEVICE_TV}, - {"Mitac 8375X", VIA_KM400, 0x1071, 0x8375, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka UMAX 585T */ + {"Mitac 8375X", VIA_KM400, 0x1071, 0x8375, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "UMAX 585T" */ {"Soltek SL-75MIV2", VIA_KM400, 0x1106, 0x0000, VIA_DEVICE_CRT}, /* VIA/0x0000 */ {"VIA VT3205 (KM400)", VIA_KM400, 0x1106, 0x3205, VIA_DEVICE_CRT | VIA_DEVICE_TV}, /* borrowed by Soltek SL-B7C-FGR */ {"VIA VT7205 (KM400A)", VIA_KM400, 0x1106, 0x7205, VIA_DEVICE_CRT}, /* borrowed by Biostar iDEQ 200V/Chaintech 7VIF4 */ {"Shuttle FX43", VIA_KM400, 0x1297, 0xF643, VIA_DEVICE_CRT | VIA_DEVICE_TV}, - {"Giga-byte 7VM400(A)M", VIA_KM400, 0x1458, 0xD000, VIA_DEVICE_CRT}, /* 7VM400M, GA-7VM400AM */ + {"Giga-byte 7VM400(A)M", VIA_KM400, 0x1458, 0xD000, VIA_DEVICE_CRT}, {"MSI KM4(A)M-V", VIA_KM400, 0x1462, 0x7061, VIA_DEVICE_CRT}, /* aka "DFI KM400-MLV" */ {"MSI PM8M2-V", VIA_KM400, 0x1462, 0x7071, VIA_DEVICE_CRT}, {"MSI KM4(A)M-L", VIA_KM400, 0x1462, 0x7348, VIA_DEVICE_CRT}, - {"MSI PM8M2-V", VIA_KM400, 0x1462, 0x7071, VIA_DEVICE_CRT}, {"Abit VA-10 (1)", VIA_KM400, 0x147B, 0x140B, VIA_DEVICE_CRT}, {"Abit VA-10 (2)", VIA_KM400, 0x147B, 0x140C, VIA_DEVICE_CRT}, {"Abit VA-20", VIA_KM400, 0x147B, 0x1411, VIA_DEVICE_CRT}, {"Averatec 322x", VIA_KM400, 0x14FF, 0x030D, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"FIC K7M-400A", VIA_KM400, 0x1509, 0x9233, VIA_DEVICE_CRT}, + {"Biostar M7VIZ", VIA_KM400, 0x1565, 0x1200, VIA_DEVICE_CRT}, {"Biostar P4M800-M7", VIA_KM400, 0x1565, 0x1202, VIA_DEVICE_CRT}, - {"Uniwill 755CI", VIA_KM400, 0x1584, 0x800A, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "Gericom hummer advance", "Maxdata M-Book 1200X" */ + {"Uniwill 755CI", VIA_KM400, 0x1584, 0x800A, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "Gericom Hummer Advance", "Maxdata M-Book 1200X" */ {"Packard Bell Quasar2 (MSI MS6786)", VIA_KM400, 0x1631, 0xD002, VIA_DEVICE_CRT}, {"Epox EP-8KMM3I", VIA_KM400, 0x1695, 0x9023, VIA_DEVICE_CRT}, {"ASRock Inc. K7VM2/3/4", VIA_KM400, 0x1849, 0x7205, VIA_DEVICE_CRT}, - {"ACorp KM400QP", VIA_KM400, 0x1915, 0x1100, VIA_DEVICE_CRT| VIA_DEVICE_TV}, + {"ACorp KM400QP", VIA_KM400, 0x1915, 0x1100, VIA_DEVICE_CRT | VIA_DEVICE_TV}, + {"Mercury P4VM800M7 (1.0)", VIA_KM400, 0x3344, 0x1122, VIA_DEVICE_CRT}, {"Soyo K7VME", VIA_KM400, 0xA723, 0x10FD, VIA_DEVICE_CRT}, - /* K8M800 */ + + /*** K8M800, K8N800, K8N800A ***/ {"ZX-5360", VIA_K8M800, 0x1019, 0x0F60, VIA_DEVICE_CRT | VIA_DEVICE_LCD }, - {"ECS K8M800-M2", VIA_K8M800, 0x1019, 0x1828, VIA_DEVICE_CRT}, + {"ECS K8M800-M2 (1.0)", VIA_K8M800, 0x1019, 0x1828, VIA_DEVICE_CRT}, + {"ECS K8M800-M2 (2.0)", VIA_K8M800, 0x1019, 0x1B45, VIA_DEVICE_CRT}, {"Acer Aspire 136x", VIA_K8M800, 0x1025, 0x006E, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, {"Asustek K8V-MX", VIA_K8M800, 0x1043, 0x8129, VIA_DEVICE_CRT}, - {"Mitac 8399", VIA_K8M800, 0x1071, 0x8399, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "pogolinux konabook 3100" */ + {"Mitac 8399", VIA_K8M800, 0x1071, 0x8399, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, /* aka "Pogolinux Konabook 3100" */ {"Mitac 8889", VIA_K8M800, 0x1071, 0x8889, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, - {"PCChips M861G", VIA_K8M800, 0x1106, 0x0204, VIA_DEVICE_CRT}, + {"MSI K8M Neo-V (broken pci id)", VIA_K8M800, 0x1106, 0x0204, VIA_DEVICE_CRT}, {"VIA VT3108 (K8M800)", VIA_K8M800, 0x1106, 0x3108, VIA_DEVICE_CRT}, /* borrowed by Asustek A8V-MX */ {"Shuttle FX21", VIA_K8M800, 0x1297, 0x3052, VIA_DEVICE_CRT}, {"Shuttle FX83", VIA_K8M800, 0x1297, 0xF683, VIA_DEVICE_CRT | VIA_DEVICE_TV}, @@ -137,6 +145,7 @@ {"MSI K8M Neo-V", VIA_K8M800, 0x1462, 0x0320, VIA_DEVICE_CRT}, {"MSI K8MM-V", VIA_K8M800, 0x1462, 0x7142, VIA_DEVICE_CRT}, {"MSI K8MM3-V", VIA_K8M800, 0x1462, 0x7181, VIA_DEVICE_CRT}, + {"MSI K9MM-V", VIA_K8M800, 0x1462, 0x7312, VIA_DEVICE_CRT}, {"MSI K8MM-ILSR", VIA_K8M800, 0x1462, 0x7410, VIA_DEVICE_CRT}, {"Abit KV-80", VIA_K8M800, 0x147B, 0x1419, VIA_DEVICE_CRT}, {"Abit KV-81", VIA_K8M800, 0x147B, 0x141A, VIA_DEVICE_CRT}, @@ -145,31 +154,113 @@ {"Averatec 3715", VIA_K8M800, 0x14FF, 0x0322, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"Averatec 54xx", VIA_K8M800, 0x1509, 0x3930, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"FIC K8M-800M", VIA_K8M800, 0x1509, 0x6001, VIA_DEVICE_CRT}, + {"Clevo L570W", VIA_K8M800, 0x1558, 0x0570, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Mesh Pegasus", VIA_K8M800, 0x1558, 0x4702, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"Biostar K8VGA-M", VIA_K8M800, 0x1565, 0x1203, VIA_DEVICE_CRT}, {"DFI K8M800-MLVF", VIA_K8M800, 0x15BD, 0x1002, VIA_DEVICE_CRT}, {"Packard Bell Easynote E6116/E63xx", VIA_K8M800, 0x1631, 0xC008, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, {"Packard Bell Easynote B3 800/B3340", VIA_K8M800, 0x1631, 0xC009, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Packard Bell Imedia 2097", VIA_K8M800, 0x1631, 0xD007, VIA_DEVICE_CRT}, + {"Fujitsu-Siemens Amilo K7610", VIA_K8M800, 0x1734, 0x10B3, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"ASRock K8Upgrade-VM800", VIA_K8M800, 0x1849, 0x3108, VIA_DEVICE_CRT}, - /* PM800 */ + + /*** PM800, PM880, PN800, CN400 ***/ {"VIA VT3118 (PM800)", VIA_PM800, 0x1106, 0x3118, VIA_DEVICE_CRT}, /* borrowed by ECS PM800-M2 */ + {"Hasee F700C", VIA_PM800, 0x1071, 0x8650, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"Mitac 8666", VIA_PM800, 0x1071, 0x8666, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, {"Medion MIM2080", VIA_PM800, 0x1071, 0x8965, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, + {"TwinHead E12BL", VIA_PM800, 0x14FF, 0x0314, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"MaxSelect Optima C4", VIA_PM800, 0x1558, 0x5402, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"Biostar P4VMA-M", VIA_PM800, 0x1565, 0x1202, VIA_DEVICE_CRT}, + {"Sotec WA2330S5", VIA_PM800, 0x161F, 0x2037, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, {"Packard Bell Easynote R1100", VIA_PM800, 0x1631, 0xC015, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"Fujitsu/Siemens Amilo Pro V2010", VIA_PM800, 0x1734, 0x1078, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, + {"Fujitsu/Siemens Amilo L7310", VIA_PM800, 0x1734, 0x10AB, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"ASRock P4VM8", VIA_PM800, 0x1849, 0x3118, VIA_DEVICE_CRT}, {"Chaintech MPM800-3", VIA_PM800, 0x270F, 0x7671, VIA_DEVICE_CRT}, - {"MaxSelect Optima C4", VIA_PM800, 0x1558, 0x5402, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, - /* VN800 */ + {"KamLAB KINO-LUKE-533-R20", VIA_PM800, 0x3344, 0x1122, VIA_DEVICE_CRT}, + + /*** P4M800Pro, VN800, CN700 ***/ + {"Clevo/RoverBook Partner E419L", VIA_VM800, 0x1019, 0x0F75, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"PCChips P23G", VIA_VM800, 0x1019, 0x1623, VIA_DEVICE_CRT}, + {"ECS P4M800PRO-M", VIA_VM800, 0x1019, 0x2122, VIA_DEVICE_CRT}, + {"ECS C7VCM", VIA_VM800, 0x1019, 0xAA2D, VIA_DEVICE_CRT}, + {"PCChips V21G", VIA_VM800, 0x1019, 0xAA51, VIA_DEVICE_CRT}, + {"Asustek P5VDC-MX", VIA_VM800, 0x1043, 0x3344, VIA_DEVICE_CRT}, + {"Asustek P5VDC-TVM", VIA_VM800, 0x1043, 0x81CE, VIA_DEVICE_CRT}, {"Gateway MX3210", VIA_VM800, 0x107B, 0x0216, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"VIA VT3344 (VM800) - EPIA EN", VIA_VM800, 0x1106, 0x3344, VIA_DEVICE_CRT | VIA_DEVICE_TV}, {"Gigabyte GA-8VM800M-775", VIA_VM800, 0x1458, 0xD000, VIA_DEVICE_CRT}, {"MSI PM8M-V", VIA_VM800, 0x1462, 0x7104, VIA_DEVICE_CRT}, + {"MSI Fuzzy CN700/CN700T/CN700G", VIA_VM800, 0x1462, 0x7199, VIA_DEVICE_CRT | VIA_DEVICE_TV}, + {"MSI PM8M3-V", VIA_VM800, 0x1462, 0x7211, VIA_DEVICE_CRT}, {"MSI PM8PM", VIA_VM800, 0x1462, 0x7222, VIA_DEVICE_CRT}, - {"Biostar P4M80-M4", VIA_VM800, 0x1565, 0x1202, VIA_DEVICE_CRT}, + {"RoverBook Partner W500", VIA_VM800, 0x1509, 0x4330, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Clevo/RoverBook Voyager V511L", VIA_VM800, 0x1558, 0x0662, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Clevo M5xxS", VIA_VM800, 0x1558, 0x5406, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Biostar P4M80-M4 / P4VMA-M", VIA_VM800, 0x1565, 0x1202, VIA_DEVICE_CRT}, + {"Biostar P4M800 Pro-M7", VIA_VM800, 0x1565, 0x1206, VIA_DEVICE_CRT}, {"Fujitsu/Siemens Amilo Pro V2030", VIA_VM800, 0x1734, 0x109B, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Fujitsu/Siemens Amilo Pro V2035", VIA_VM800, 0x1734, 0x10AE, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Fujitsu/Siemens Amilo Pro V2055", VIA_VM800, 0x1734, 0x10CA, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Fujitsu/Siemens Amilo L7320", VIA_VM800, 0x1734, 0x10CD, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, {"ASRock P4VM800", VIA_VM800, 0x1849, 0x3344, VIA_DEVICE_CRT}, {"Asustek P5V800-MX", VIA_VM800, 0x3344, 0x1122, VIA_DEVICE_CRT}, + + /*** K8M890 ***/ + {"IBM AnyPlace Kiosk 3xx", VIA_K8M890, 0x1106, 0x3230, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Asustek A8V-VM", VIA_K8M890, 0x1043, 0x81B5, VIA_DEVICE_CRT}, + {"Asustek M2V-MX SE", VIA_K8M890, 0x1043, 0x8297, VIA_DEVICE_CRT}, + {"Foxconn K8M890M2MA-RS2H", VIA_K8M890, 0x105B, 0x0C84, VIA_DEVICE_CRT}, + {"Shuttle FX22V1", VIA_K8M890, 0x1297, 0x3080, VIA_DEVICE_CRT}, + {"MSI K9VGM-V", VIA_K8M890, 0x1462, 0x7253, VIA_DEVICE_CRT}, + {"Averatec 226x", VIA_K8M890, 0x14FF, 0xA002, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Fujitsu/Siemens Amilo La 1703", VIA_K8M890, 0x1734, 0x10D9, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + + /*** P4M900, VN896, CN896 ***/ + {"VIA Epia SN", VIA_P4M900, 0x0908, 0x1975, VIA_DEVICE_CRT}, + {"Hewlett Packard 2133 Mini-Note", VIA_P4M900, 0x103C, 0x3030, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Asustek P5VD2-VM", VIA_P4M900, 0x1043, 0x81CE, VIA_DEVICE_CRT}, + {"Asustek P5VD2-VM SE", VIA_P4M900, 0x1043, 0x8252, VIA_DEVICE_CRT}, + {"Foxconn P4M9007MB-8RS2H", VIA_P4M900, 0x105B, 0x0C87, VIA_DEVICE_CRT}, + {"Mitac 8515", VIA_P4M900, 0x1071, 0x8515, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Medion Notebook MD96483", VIA_P4M900, 0x1071, 0x8615, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Mitac 8624", VIA_P4M900, 0x1071, 0x8624, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"VIA VT3364 (P4M900)", VIA_P4M900, 0x1106, 0x3371, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Gigabyte GA-VM900M", VIA_P4M900, 0x1458, 0xD000, VIA_DEVICE_CRT}, + {"MSI VR321", VIA_P4M900, 0x1462, 0x3355, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"MSI P4M900M / P4M900M2-F/L", VIA_P4M900, 0x1462, 0x7255, VIA_DEVICE_CRT}, + {"Everex NC1501/NC1503", VIA_P4M900, 0x1509, 0x1E30, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Clevo M660SE", VIA_P4M900, 0x1558, 0x0664, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Clevo M660SR", VIA_P4M900, 0x1558, 0x0669, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Neo Endura 540SLe", VIA_P4M900, 0x1558, 0x5408, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Clevo M54xSR", VIA_P4M900, 0x1558, 0x5409, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Biostar P4M900M-M7 SE", VIA_P4M900, 0x1565, 0x1207, VIA_DEVICE_CRT}, + {"Fujitsu/Siemens Amilo Pro V3515", VIA_P4M900, 0x1734, 0x10CB, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Fujitsu/Siemens Amilo Li1705", VIA_P4M900, 0x1734, 0x10F7, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"ASRock P4VM900-SATA2", VIA_P4M900, 0x1849, 0x3371, VIA_DEVICE_CRT}, + + /*** CX700 ***/ + {"VIA VT8454B", VIA_CX700, 0x0908, 0x1975, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, /* Evaluation board, reference possibly wrong */ + {"VIA VT3324 (CX700)", VIA_CX700, 0x1106, 0x3157, VIA_DEVICE_CRT}, + {"MSI Fuzzy CX700/CX700D", VIA_CX700, 0x1462, 0x8020, VIA_DEVICE_CRT | VIA_DEVICE_LCD | VIA_DEVICE_TV}, + {"Samsung Q1B", VIA_CX700, 0x144D, 0xC02C, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"FIC CE260", VIA_CX700, 0x1509, 0x2D30, VIA_DEVICE_LCD}, + {"FIC CE261", VIA_CX700, 0x1509, 0x2F07, VIA_DEVICE_LCD}, + {"Gigabyte M704 / RoverPC A700GQ", VIA_CX700, 0x161F, 0x2060, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"Packard Bell EasyNote XS", VIA_CX700, 0x1631, 0xC201, VIA_DEVICE_LCD}, /* aka Everex Cloudbook CE1200V */ + + /*** P4M890, VN890 ***/ + {"PCChips P29G", VIA_P4M890, 0x1019, 0x1629, VIA_DEVICE_CRT}, + {"PCChips ????", VIA_P4M890, 0x1019, 0x2174, VIA_DEVICE_CRT}, + {"Asustek P5V-VM ULTRA", VIA_P4M890, 0x1043, 0x81B5, VIA_DEVICE_CRT}, + {"Asustek P5V-VM DH", VIA_P4M890, 0x1043, 0x81CE, VIA_DEVICE_CRT}, + {"Mitac 8615", VIA_P4M890, 0x1071, 0x8615, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, + {"VIA VT3343 (P4M890)", VIA_P4M890, 0x1106, 0x3343, VIA_DEVICE_CRT}, + {"MSI P4M890M-L/IL (MS-7255)", VIA_P4M890, 0x1462, 0x7255, VIA_DEVICE_CRT}, + {"Biostar P4M890-M7 TE", VIA_P4M890, 0x1565, 0x1207, VIA_DEVICE_CRT}, + {"ASRock P4VM890", VIA_P4M890, 0x1849, 0x3343, VIA_DEVICE_CRT}, + /* keep this */ {NULL, VIA_UNKNOWN, 0x0000, 0x0000, VIA_DEVICE_NONE} }; @@ -209,15 +300,15 @@ struct ViaCardIdStruct *Id; VIAPtr pVia = VIAPTR(pScrn); - if ((pVia->PciInfo->subsysVendor == pVia->PciInfo->vendor) && - (pVia->PciInfo->subsysCard == pVia->PciInfo->chipType)) + if ((SUBVENDOR_ID(pVia->PciInfo) == VENDOR_ID(pVia->PciInfo)) && + (SUBSYS_ID(pVia->PciInfo) == DEVICE_ID(pVia->PciInfo))) xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Manufacturer plainly copied main PCI" " ids to Subsystem/Card ids.\n"); for (Id = ViaCardId; Id->String; Id++) { if ((Id->Chip == pVia->Chipset) && - (Id->Vendor == pVia->PciInfo->subsysVendor) && - (Id->Device == pVia->PciInfo->subsysCard)) { + (Id->Vendor == SUBVENDOR_ID(pVia->PciInfo)) && + (Id->Device == SUBSYS_ID(pVia->PciInfo))) { xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Detected %s.\n", Id->String); pVia->Id = Id; return; @@ -225,8 +316,8 @@ } xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Unknown Card-Ids (%4X|%4X), report this to the driver maintainer ASAP\n" - , pVia->PciInfo->subsysVendor, pVia->PciInfo->subsysCard); + "Unknown Card-Ids (%4X|%4X), report this to the driver maintainer ASAP\n", + DEVICE_ID(pVia->PciInfo), SUBVENDOR_ID(pVia->PciInfo), SUBSYS_ID(pVia->PciInfo)); pVia->Id = NULL; } diff -Naur xf86-video-via-0.2.2/src/via_id.h xf86-video-via-0.2.2-r1/src/via_id.h --- src/via_id.h 2006-10-11 22:28:51.000000000 +0000 +++ src/via_id.h 2008-10-26 08:44:21.000000000 +0000 @@ -43,6 +43,10 @@ VIA_K8M800, VIA_PM800, VIA_VM800, + VIA_K8M890, + VIA_P4M900, + VIA_CX700, + VIA_P4M890, VIA_LAST }; @@ -62,6 +66,10 @@ #define PCI_CHIP_CLE3122 0x3122 /* CLE266 */ #define PCI_CHIP_VT3205 0x7205 /* KM400 */ #define PCI_CHIP_VT3314 0x3344 /* VM800 */ +#define PCI_CHIP_VT3336 0x3230 /* K8M890 */ +#define PCI_CHIP_VT3364 0x3371 /* P4M900 */ +#define PCI_CHIP_VT3324 0x3157 /* CX700 */ +#define PCI_CHIP_VT3327 0x3343 /* P4M890 */ /* * There is also quite some conflicting information on the diff -Naur xf86-video-via-0.2.2/src/xvmc/viaLowLevel.h xf86-video-via-0.2.2-r1/src/xvmc/viaLowLevel.h --- src/xvmc/viaLowLevel.h 2006-10-11 22:28:51.000000000 +0000 +++ src/xvmc/viaLowLevel.h 2008-10-18 21:11:59.000000000 +0000 @@ -63,6 +63,15 @@ #define VIA_SLICEIDLEVAL 0x00000200 #define VIA_IDLEVAL 0x00000204 +/* Define uint32_t for */ +#if HAVE_INTTYPES_H +# include +#else +# ifndef uint32_t +# define uint32_t CARD32 +# endif +#endif + #include "via_drm.h" #include "viaXvMCPriv.h"