configure.ac | 16 +++- man/Makefile.am | 1 man/rendition.man | 12 +-- src/accel.h | 1 src/accelX.c | 1 src/cmd2d.h | 1 src/commonregs.h | 1 src/cscode.h | 1 src/hwcursor.c | 1 src/hwcursor.h | 1 src/rendition.c | 189 ++++++++++++++++++++++++++++++++++++++---------- src/rendition.h | 1 src/rendition_options.h | 1 src/rendition_shadow.c | 1 src/rendition_shadow.h | 1 src/v1kregs.h | 1 src/v1krisc.c | 1 src/v1krisc.h | 1 src/v2kregs.h | 1 src/vboard.c | 1 src/vboard.h | 1 src/vloaduc.c | 2 src/vloaduc.h | 1 src/vmisc.c | 1 src/vmisc.h | 1 src/vmodes.c | 1 src/vmodes.h | 1 src/vos.h | 1 src/vramdac.c | 1 src/vramdac.h | 1 src/vtypes.h | 8 +- 31 files changed, 182 insertions(+), 71 deletions(-)
New commits: commit 6a565d3a8caad1d44e9cfc724fc8298b3ce023e5 Author: Adam Jackson <[EMAIL PROTECTED]> Date: Wed Mar 19 14:50:31 2008 -0400 rendition 4.2.0 diff --git a/configure.ac b/configure.ac index 2908bf9..d5d2445 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-video-rendition], - 4.1.3, + 4.2.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-video-rendition) commit e943057ef844a7a3153b6158f3dd26ae02296e98 Author: Adam Jackson <[EMAIL PROTECTED]> Date: Wed Mar 19 14:45:52 2008 -0400 Fix includes to silence a warning. Patch from opensuse, although it has no attribution there. diff --git a/src/vloaduc.c b/src/vloaduc.c index 07993bb..67bf901 100644 --- a/src/vloaduc.c +++ b/src/vloaduc.c @@ -16,6 +16,7 @@ #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> +#include <unistd.h> #ifdef HAVE_ELF_H #include <elf.h> #endif commit 34db3fdcff85f151843fcae7d0aa307697291d5e Author: Adam Jackson <[EMAIL PROTECTED]> Date: Wed Mar 19 14:41:58 2008 -0400 Death to RCS tags. diff --git a/src/accel.h b/src/accel.h index e2cfba7..14bbe8b 100644 --- a/src/accel.h +++ b/src/accel.h @@ -3,7 +3,6 @@ * * header file for accel.c */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/accel.h,v 1.3 1999/11/19 13:54:44 hohndel Exp $ */ #ifndef __ACCEL_H__ #define __ACCEL_H__ diff --git a/src/accelX.c b/src/accelX.c index 88a43ce..a499c56 100644 --- a/src/accelX.c +++ b/src/accelX.c @@ -3,7 +3,6 @@ * * accelerator functions for X */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/accelX.c,v 1.10 2001/06/15 21:22:54 dawes Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/src/cmd2d.h b/src/cmd2d.h index 8290ac7..4f9cbf9 100644 --- a/src/cmd2d.h +++ b/src/cmd2d.h @@ -4,7 +4,6 @@ /* * commands the 2d microcode offers */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/cmd2d.h,v 1.2 1999/10/14 04:43:14 dawes Exp $ */ #define CMD_SETUP 32 #define CMD_SET_PIX_REG 2 diff --git a/src/commonregs.h b/src/commonregs.h index 8958bf1..d3e79a1 100644 --- a/src/commonregs.h +++ b/src/commonregs.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/commonregs.h,v 1.1 1999/11/19 13:54:44 hohndel Exp $ */ #ifndef __COMMONREGS_H__ #define __COMMONREGS_H__ diff --git a/src/cscode.h b/src/cscode.h index 7ffb578..a9b4e76 100644 --- a/src/cscode.h +++ b/src/cscode.h @@ -1,7 +1,6 @@ /****************************************************************************\ * NOTE: This file generated automatically. Do not edit by hand! * \****************************************************************************/ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/cscode.h,v 1.3 1999/10/13 04:21:19 dawes Exp $ */ #ifndef __CSCODE_H__ #define __CSCODE_H__ diff --git a/src/hwcursor.c b/src/hwcursor.c index 2c19a6e..c3b5ee8 100644 --- a/src/hwcursor.c +++ b/src/hwcursor.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.c,v 1.6 2000/02/25 21:03:00 dawes Exp $ */ /* * includes */ diff --git a/src/hwcursor.h b/src/hwcursor.h index 1387858..e0d742b 100644 --- a/src/hwcursor.h +++ b/src/hwcursor.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/hwcursor.h,v 1.4 1999/11/19 13:54:45 hohndel Exp $ */ /* * file hwcursor.h */ diff --git a/src/rendition.c b/src/rendition.c index 513e716..594c7b8 100644 --- a/src/rendition.c +++ b/src/rendition.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.c,v 1.58 2003/11/03 05:11:26 tsi Exp $ */ /* * Copyright (C) 1998 The XFree86 Project, Inc. All Rights Reserved. * diff --git a/src/rendition.h b/src/rendition.h index 035ddb6..6dfb818 100644 --- a/src/rendition.h +++ b/src/rendition.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition.h,v 1.5 2000/02/25 21:03:02 dawes Exp $ */ #ifndef __RENDITION_H__ #define __RENDITION_H__ diff --git a/src/rendition_options.h b/src/rendition_options.h index c41db49..4708c93 100644 --- a/src/rendition_options.h +++ b/src/rendition_options.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_options.h,v 1.5 2001/05/04 19:05:42 dawes Exp $ */ #ifndef __RENDITION_OPTION_H__ #define __RENDITION_OPTION_H__ diff --git a/src/rendition_shadow.c b/src/rendition_shadow.c index 30b8d2d..5f7a5f5 100644 --- a/src/rendition_shadow.c +++ b/src/rendition_shadow.c @@ -4,7 +4,6 @@ * The functions used by ShadowFB * Based on code written by Mark Vojkovich <[EMAIL PROTECTED]> */ -/* $XFree86$ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/src/rendition_shadow.h b/src/rendition_shadow.h index ec74463..5d9634f 100644 --- a/src/rendition_shadow.h +++ b/src/rendition_shadow.h @@ -3,7 +3,6 @@ * * headfile for rendition_shadow.c */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/rendition_shadow.h,v 1.1 2000/03/01 00:25:25 dawes Exp $ */ #ifndef __RENDITION_SHADOW_H__ #define __RENDITION_SHADOW_H__ diff --git a/src/v1kregs.h b/src/v1kregs.h index af1817b..9b3f93c 100644 --- a/src/v1kregs.h +++ b/src/v1kregs.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/v1kregs.h,v 1.4 1999/11/19 13:54:45 hohndel Exp $ */ #ifndef __V1KREGS_H__ #define __V1KREGS_H__ diff --git a/src/v1krisc.c b/src/v1krisc.c index 39d0a35..2554263 100644 --- a/src/v1krisc.c +++ b/src/v1krisc.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.c,v 1.6 2000/03/31 20:13:25 dawes Exp $ */ /* * */ diff --git a/src/v1krisc.h b/src/v1krisc.h index 7301129..0b97f9e 100644 --- a/src/v1krisc.h +++ b/src/v1krisc.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/v1krisc.h,v 1.3 1999/10/13 04:21:21 dawes Exp $ */ /* * file v1krisc.h * diff --git a/src/v2kregs.h b/src/v2kregs.h index d2b66be..5f6942c 100644 --- a/src/v2kregs.h +++ b/src/v2kregs.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/v2kregs.h,v 1.4 1999/11/19 13:54:46 hohndel Exp $ */ #ifndef __V2KREGS_H__ #define __V2KREGS_H__ diff --git a/src/vboard.c b/src/vboard.c index 9dcecf4..49499e2 100644 --- a/src/vboard.c +++ b/src/vboard.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.c,v 1.18tsi Exp $ */ /* * includes */ diff --git a/src/vboard.h b/src/vboard.h index ddda206..aeeffd0 100644 --- a/src/vboard.h +++ b/src/vboard.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vboard.h,v 1.6 2000/03/31 20:13:26 dawes Exp $ */ /* * vboard.h diff --git a/src/vloaduc.c b/src/vloaduc.c index 9f3e17e..07993bb 100644 --- a/src/vloaduc.c +++ b/src/vloaduc.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.c,v 1.13tsi Exp $ */ /* * includes */ diff --git a/src/vloaduc.h b/src/vloaduc.h index 0c127d1..58d46c2 100644 --- a/src/vloaduc.h +++ b/src/vloaduc.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vloaduc.h,v 1.4 2000/03/31 20:13:27 dawes Exp $ */ /* * file vloaduc.h diff --git a/src/vmisc.c b/src/vmisc.c index 0bd8c6a..6febd27 100644 --- a/src/vmisc.c +++ b/src/vmisc.c @@ -1,5 +1,4 @@ /* Misc routines used elsewhere in driver */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.c,v 1.3 2000/02/25 21:03:05 dawes Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" diff --git a/src/vmisc.h b/src/vmisc.h index c104147..d21a03f 100644 --- a/src/vmisc.h +++ b/src/vmisc.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmisc.h,v 1.3 2000/03/31 20:13:27 dawes Exp $ */ #ifndef __VMISC_H__ #define __VMISC_H__ diff --git a/src/vmodes.c b/src/vmodes.c index 834bfc1..5faf257 100644 --- a/src/vmodes.c +++ b/src/vmodes.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.c,v 1.13 2002/12/11 17:23:33 dawes Exp $ */ /* * file vmodes.c * diff --git a/src/vmodes.h b/src/vmodes.h index 3cb8669..5aca7d3 100644 --- a/src/vmodes.h +++ b/src/vmodes.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vmodes.h,v 1.5 2002/04/04 14:05:45 eich Exp $ */ /* * file vmodes.h * diff --git a/src/vos.h b/src/vos.h index e2ec54f..7b55f77 100644 --- a/src/vos.h +++ b/src/vos.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vos.h,v 1.9 2002/01/25 21:56:07 tsi Exp $ */ /* * file vos.h * diff --git a/src/vramdac.c b/src/vramdac.c index 9cb5409..7c8acbd 100644 --- a/src/vramdac.c +++ b/src/vramdac.c @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.c,v 1.18 2002/12/11 17:23:33 dawes Exp $ */ /* * includes */ diff --git a/src/vramdac.h b/src/vramdac.h index c7db3c1..b489707 100644 --- a/src/vramdac.h +++ b/src/vramdac.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vramdac.h,v 1.6 2002/04/04 14:05:45 eich Exp $ */ /* * file vramdac.h * diff --git a/src/vtypes.h b/src/vtypes.h index d6609d5..257870b 100644 --- a/src/vtypes.h +++ b/src/vtypes.h @@ -1,4 +1,3 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/rendition/vtypes.h,v 1.8 2001/10/28 03:33:44 tsi Exp $ */ #ifndef _VTYPES_H_ #define _VTYPES_H_ commit cfff99db2648d49e9c3af3cb9d965ea5f306b1f7 Author: Matthieu Herrb <[EMAIL PROTECTED]> Date: Sat Mar 8 23:45:25 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 99011b4380991cd56987f75a6d48ee609d931b2a Author: Dave Airlie <[EMAIL PROTECTED]> Date: Wed Feb 27 13:29:57 2008 +1000 pciaccess: do unmap path diff --git a/src/rendition.c b/src/rendition.c index 07c5d85..513e716 100644 --- a/src/rendition.c +++ b/src/rendition.c @@ -1517,12 +1517,20 @@ renditionMapMem(ScrnInfoPtr pScreenInfo) static Bool renditionUnmapMem(ScrnInfoPtr pScreenInfo) { + renditionPtr pRendition = RENDITIONPTR(pScreenInfo); #ifdef DEBUG ErrorF("Unmapping ...\n"); #endif + +#ifndef XSERVER_LIBPCIACCESS xf86UnMapVidMem(pScreenInfo->scrnIndex, - RENDITIONPTR(pScreenInfo)->board.vmem_base, + pRendition->board.vmem_base, pScreenInfo->videoRam * 1024); +#else + pci_device_unmap_range(pRendition->PciInfo, + pRendition->board.vmem_base, + pScreenInfo->videoRam * 1024); +#endif return TRUE; #ifdef DEBUG0 ErrorF("Done\n"); commit 7e343a778d302474fef1d177006b54743ce0a394 Author: Dave Airlie <[EMAIL PROTECTED]> Date: Wed Feb 27 12:50:43 2008 +1000 pciaccess: make auto-detect work diff --git a/configure.ac b/configure.ac index dc29381..2908bf9 100644 --- a/configure.ac +++ b/configure.ac @@ -46,9 +46,6 @@ AC_ARG_WITH(xorg-module-dir, [Default xorg module directory [[default=$libdir/xorg/modules]]]), [moduledir="$withval"], [moduledir="$libdir/xorg/modules"]) -AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], - [Enable use of libpciaccess (default: disabled)]), - [PCIACCESS=$enableval], [PCIACCESS=no]) # Checks for extensions XORG_DRIVER_CHECK_EXT(RANDR, randrproto) @@ -59,14 +56,21 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_MODULES]) sdkdir=$(pkg-config --variable=sdkdir xorg-server) -AM_CONDITIONAL(PCIACCESS, [test "x$PCIACCESS" = xyes]) -if test "x$PCIACCESS" = xyes; then - AC_DEFINE(PCIACCESS, 1, [Use libpciaccess]) - PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.7.0]) +# 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"]) +AC_CHECK_HEADER(xf1bpp.h,[AC_DEFINE(HAVE_XF1BPP, 1, [Have 1bpp support])],[]) +AC_CHECK_HEADER(xf4bpp.h,[AC_DEFINE(HAVE_XF4BPP, 1, [Have 4bpp support])],[]) +CPPFLAGS="$SAVE_CPPFLAGS" + +if test "x$XSERVER_LIBPCIACCESS" = xyes; then + PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS" fi - -# Checks for libraries. +AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) # Checks for header files. AC_HEADER_STDC diff --git a/src/rendition.c b/src/rendition.c index 5bc6c9e..07c5d85 100644 --- a/src/rendition.c +++ b/src/rendition.c @@ -64,7 +64,7 @@ #include "rendition_shadow.h" #include "vbe.h" -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS # include <pciaccess.h> # define DEVICE_ID(p) (p)->device_id #else @@ -109,7 +109,7 @@ static const int MAX_VTOTAL = 2184; static const OptionInfoRec * renditionAvailableOptions(int, int); static void renditionIdentify(int); -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS static Bool renditionPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev, intptr_t match_data); #else @@ -163,7 +163,7 @@ static SymTabRec renditionChipsets[] = { {-1, NULL} }; -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS #define RENDITION_DEVICE_MATCH(d, i) \ { 0x1163, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) } @@ -185,7 +185,7 @@ _X_EXPORT DriverRec RENDITION={ RENDITION_VERSION_CURRENT, "rendition", renditionIdentify, -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS NULL, #else renditionProbe, @@ -195,7 +195,7 @@ _X_EXPORT DriverRec RENDITION={ 0, NULL, -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS rendition_device_match, renditionPciProbe #endif @@ -333,7 +333,7 @@ renditionIdentify(int flags) -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS static Bool renditionPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev, intptr_t match_data) @@ -570,7 +570,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) if (pScreenInfo->numEntities != 1) return FALSE; -#ifndef PCIACCESS +#ifndef XSERVER_LIBPCIACCESS /* allocate driver private structure */ if (!renditionGetRec(pScreenInfo)) return FALSE; @@ -578,7 +578,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) pRendition=RENDITIONPTR(pScreenInfo); -#ifndef PCIACCESS +#ifndef XSERVER_LIBPCIACCESS /* Get the entity, and make sure it is PCI. */ pRendition->pEnt = xf86GetEntityInfo(pScreenInfo->entityList[0]); if (pRendition->pEnt->location.type != BUS_PCI) @@ -605,7 +605,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) xf86FreeInt10(pInt); } -#ifndef PCIACCESS +#ifndef XSERVER_LIBPCIACCESS /* Find the PCI info for this screen */ pRendition->PciInfo = xf86GetPciInfoForEntity(pRendition->pEnt->index); pRendition->pcitag= pciTag(pRendition->PciInfo->bus, @@ -740,7 +740,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) pRendition->board.accel=0; pRendition->board.vgaio_base = pvgaHW->PIOOffset; pRendition->board.io_base = pRendition->board.vgaio_base -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS + pRendition->PciInfo->regions[1].base_addr; #else + pRendition->PciInfo->ioBase[1] @@ -749,7 +749,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) pRendition->board.mmio_base=0; pRendition->board.vmmio_base=0; pRendition->board.mem_size=0; -#ifndef PCIACCESS +#ifndef XSERVER_LIBPCIACCESS pRendition->board.mem_base=(vu8 *)pRendition->PciInfo->memBase[0]; #endif pRendition->board.vmem_base=NULL; @@ -769,7 +769,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) "Rendition %s @ %lx/%lx\n", renditionChipsets[pRendition->board.chip==V1000_DEVICE ? 0:1] .name, -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS pRendition->PciInfo->regions[1].base_addr, pRendition->PciInfo->regions[0].base_addr #else @@ -1461,13 +1461,13 @@ renditionMapMem(ScrnInfoPtr pScreenInfo) Bool WriteCombine; int mapOption; renditionPtr pRendition = RENDITIONPTR(pScreenInfo); -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS int err; #endif #ifdef DEBUG ErrorF("Mapping ...\n"); -#ifndef PCIACCESS +#ifndef XSERVER_LIBPCIACCESS ErrorF("%d %d %d %x %d\n", pScreenInfo->scrnIndex, VIDMEM_FRAMEBUFFER, pRendition->pcitag, pRendition->board.mem_base, pScreenInfo->videoRam * 1024); @@ -1495,7 +1495,7 @@ renditionMapMem(ScrnInfoPtr pScreenInfo) mapOption = VIDMEM_MMIO; } -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS err = pci_device_map_region(pRendition->PciInfo, 0, TRUE); pRendition->board.vmem_base = pRendition->PciInfo->regions[0].memory; diff --git a/src/vtypes.h b/src/vtypes.h index 0f845ce..d6609d5 100644 --- a/src/vtypes.h +++ b/src/vtypes.h @@ -11,7 +11,7 @@ #include <X11/Xmd.h> #include "xf86Pci.h" -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS #include <pciaccess.h> #endif @@ -180,7 +180,7 @@ typedef struct _renditionRec { struct verite_board_t board; /* information on the board */ struct verite_modeinfo_t mode; /* information on the mode */ -#ifdef PCIACCESS +#ifdef XSERVER_LIBPCIACCESS struct pci_device * PciInfo; #else PCITAG pcitag; /* tag for the PCI config space */ commit 41cba91bc5572a66e8b6f09c9cf4c4c173b29f8f Author: Brice Goglin <[EMAIL PROTECTED]> Date: Tue Aug 7 12:10:15 2007 +0200 RENDITION_VERSION* using PACKAGE_VERSION_* diff --git a/src/rendition.c b/src/rendition.c index a511698..5bc6c9e 100644 --- a/src/rendition.c +++ b/src/rendition.c @@ -80,10 +80,10 @@ #define RENDITION_NAME "RENDITION" #define RENDITION_DRIVER_NAME "rendition" -#define RENDITION_VERSION_NAME "4.1.0" -#define RENDITION_VERSION_MAJOR 4 -#define RENDITION_VERSION_MINOR 1 -#define RENDITION_PATCHLEVEL 0 +#define RENDITION_VERSION_NAME PACKAGE_VERSION +#define RENDITION_VERSION_MAJOR PACKAGE_VERSION_MAJOR +#define RENDITION_VERSION_MINOR PACKAGE_VERSION_MINOR +#define RENDITION_PATCHLEVEL PACKAGE_VERSION_PATCHLEVEL #define RENDITION_VERSION_CURRENT ((RENDITION_VERSION_MAJOR << 24) | \ (RENDITION_VERSION_MINOR << 16) | RENDITION_PATCHLEVEL) commit 73c1f290c1ed767a8c9340ca1404f89baace762e Author: Ian Romanick <[EMAIL PROTECTED]> Date: Tue Mar 6 09:22:44 2007 -0800 Port driver to PCI-rework interfaces. Quick and dirty port to the PCI-rework interfaces. Test on a V2100 cards. This is the only Rendition hardware to which I have access. V1000 and / or V2200 may be broken, but I doubt it. Comments in the source claim that acceleration is buggy, and it is disabled by default. I *did not* do any testing with acceleration. diff --git a/configure.ac b/configure.ac index cb26177..dc29381 100644 --- a/configure.ac +++ b/configure.ac @@ -46,6 +46,9 @@ AC_ARG_WITH(xorg-module-dir, [Default xorg module directory [[default=$libdir/xorg/modules]]]), [moduledir="$withval"], [moduledir="$libdir/xorg/modules"]) +AC_ARG_ENABLE(pciaccess, AS_HELP_STRING([--enable-pciaccess], + [Enable use of libpciaccess (default: disabled)]), + [PCIACCESS=$enableval], [PCIACCESS=no]) # Checks for extensions XORG_DRIVER_CHECK_EXT(RANDR, randrproto) @@ -56,6 +59,13 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_MODULES]) sdkdir=$(pkg-config --variable=sdkdir xorg-server) +AM_CONDITIONAL(PCIACCESS, [test "x$PCIACCESS" = xyes]) +if test "x$PCIACCESS" = xyes; then + AC_DEFINE(PCIACCESS, 1, [Use libpciaccess]) + PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.7.0]) + XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS" +fi + # Checks for libraries. # Checks for header files. diff --git a/src/rendition.c b/src/rendition.c index 4cfcecb..a511698 100644 --- a/src/rendition.c +++ b/src/rendition.c @@ -64,6 +64,14 @@ #include "rendition_shadow.h" #include "vbe.h" +#ifdef PCIACCESS +# include <pciaccess.h> +# define DEVICE_ID(p) (p)->device_id +#else +# define DEVICE_ID(p) (p)->chipType +#endif + + /* * defines */ @@ -101,7 +109,12 @@ static const int MAX_VTOTAL = 2184; static const OptionInfoRec * renditionAvailableOptions(int, int); static void renditionIdentify(int); +#ifdef PCIACCESS +static Bool renditionPciProbe(DriverPtr drv, int entity_num, + struct pci_device *dev, intptr_t match_data); +#else static Bool renditionProbe(DriverPtr, int); +#endif static Bool renditionPreInit(ScrnInfoPtr, int); static Bool renditionScreenInit(int, ScreenPtr, int, char **); static Bool renditionSwitchMode(int, DisplayModePtr, int); @@ -150,21 +163,42 @@ static SymTabRec renditionChipsets[] = { {-1, NULL} }; +#ifdef PCIACCESS +#define RENDITION_DEVICE_MATCH(d, i) \ + { 0x1163, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) } + +static const struct pci_id_match rendition_device_match[] = { + RENDITION_DEVICE_MATCH(PCI_CHIP_V1000, CHIP_RENDITION_V1000), + RENDITION_DEVICE_MATCH(PCI_CHIP_V2x00, CHIP_RENDITION_V2x00), + + { 0, 0, 0 } +}; +#else static PciChipsets renditionPCIchipsets[] = { { CHIP_RENDITION_V1000, PCI_CHIP_V1000, RES_SHARED_VGA }, { CHIP_RENDITION_V2x00, PCI_CHIP_V2x00, RES_SHARED_VGA }, { -1, -1, RES_UNDEFINED } }; +#endif _X_EXPORT DriverRec RENDITION={ RENDITION_VERSION_CURRENT, "rendition", renditionIdentify, +#ifdef PCIACCESS + NULL, +#else renditionProbe, +#endif renditionAvailableOptions, NULL, 0, - NULL + NULL, + +#ifdef PCIACCESS + rendition_device_match, + renditionPciProbe +#endif }; static const char *vgahwSymbols[]={ @@ -299,6 +333,49 @@ renditionIdentify(int flags) +#ifdef PCIACCESS +static Bool +renditionPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev, + intptr_t match_data) +{ + ScrnInfoPtr pScrn; + + + /* Allocate a ScrnInfoRec and claim the slot */ + pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL, RES_SHARED_VGA, + NULL, NULL, NULL, NULL); + if (pScrn != NULL) { + renditionPtr pRendition; + + + pScrn->driverVersion = RENDITION_VERSION_CURRENT; + pScrn->driverName = RENDITION_DRIVER_NAME; + pScrn->name = RENDITION_NAME; + pScrn->Probe = NULL; + pScrn->PreInit = renditionPreInit; + pScrn->ScreenInit = renditionScreenInit; + pScrn->SwitchMode = renditionSwitchMode; + pScrn->AdjustFrame = renditionAdjustFrame; + pScrn->EnterVT = renditionEnterVT; + pScrn->LeaveVT = renditionLeaveVT; + pScrn->FreeScreen = renditionFreeScreen; + pScrn->ValidMode = renditionValidMode; + + /* allocate driver private structure */ + pRendition = renditionGetRec(pScrn); + if (pRendition == NULL) { + return FALSE; + } + + pRendition->pEnt = xf86GetEntityInfo(entity_num); + pRendition->PciInfo = dev; + } + + return (pScrn != NULL); +} + +#else + /* * This function is called once, at the start of the first server generation to * do a minimal probe for supported hardware. @@ -356,7 +433,7 @@ renditionProbe(DriverPtr drv, int flags) } return foundScreen; } - +#endif #if 0 static Bool @@ -493,16 +570,20 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) if (pScreenInfo->numEntities != 1) return FALSE; +#ifndef PCIACCESS /* allocate driver private structure */ if (!renditionGetRec(pScreenInfo)) return FALSE; +#endif pRendition=RENDITIONPTR(pScreenInfo); +#ifndef PCIACCESS /* Get the entity, and make sure it is PCI. */ pRendition->pEnt = xf86GetEntityInfo(pScreenInfo->entityList[0]); if (pRendition->pEnt->location.type != BUS_PCI) return FALSE; +#endif if (flags & PROBE_DETECT) { ConfiguredMonitor = @@ -524,10 +605,12 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) xf86FreeInt10(pInt); } +#ifndef PCIACCESS /* Find the PCI info for this screen */ pRendition->PciInfo = xf86GetPciInfoForEntity(pRendition->pEnt->index); pRendition->pcitag= pciTag(pRendition->PciInfo->bus, pRendition->PciInfo->device, pRendition->PciInfo->func); +#endif /* * XXX This could be refined if some VGA memory resources are not @@ -559,7 +642,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) case 15: { - if (PCI_CHIP_V1000 != pRendition->PciInfo->chipType) { + if (PCI_CHIP_V1000 == DEVICE_ID(pRendition->PciInfo)) { xf86DrvMsg( pScreenInfo->scrnIndex, X_ERROR, "Given depth (%d) is not supported by this chipset.\n", pScreenInfo->depth); @@ -633,7 +716,7 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) /* set various fields according to the given options */ /* to be filled in <ml> */ - if (PCI_CHIP_V1000==pRendition->PciInfo->chipType){ + if (PCI_CHIP_V1000 == DEVICE_ID(pRendition->PciInfo)) { pRendition->board.chip=V1000_DEVICE; } else { @@ -656,12 +739,19 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) pRendition->board.accel=0; pRendition->board.vgaio_base = pvgaHW->PIOOffset; - pRendition->board.io_base = - pRendition->board.vgaio_base + pRendition->PciInfo->ioBase[1]; + pRendition->board.io_base = pRendition->board.vgaio_base +#ifdef PCIACCESS + + pRendition->PciInfo->regions[1].base_addr; +#else + + pRendition->PciInfo->ioBase[1] +#endif + ; pRendition->board.mmio_base=0; pRendition->board.vmmio_base=0; pRendition->board.mem_size=0; +#ifndef PCIACCESS pRendition->board.mem_base=(vu8 *)pRendition->PciInfo->memBase[0]; +#endif pRendition->board.vmem_base=NULL; pRendition->board.init=0; @@ -679,8 +769,14 @@ renditionPreInit(ScrnInfoPtr pScreenInfo, int flags) "Rendition %s @ %lx/%lx\n", renditionChipsets[pRendition->board.chip==V1000_DEVICE ? 0:1] .name, +#ifdef PCIACCESS + pRendition->PciInfo->regions[1].base_addr, + pRendition->PciInfo->regions[0].base_addr +#else pRendition->PciInfo->ioBase[1], - pRendition->PciInfo->memBase[0]); + pRendition->PciInfo->memBase[0] +#endif + ); /* First of all get a "clean" starting state */ verite_resetboard(pScreenInfo); @@ -1365,13 +1461,18 @@ renditionMapMem(ScrnInfoPtr pScreenInfo) Bool WriteCombine; int mapOption; renditionPtr pRendition = RENDITIONPTR(pScreenInfo); +#ifdef PCIACCESS + int err; +#endif #ifdef DEBUG ErrorF("Mapping ...\n"); +#ifndef PCIACCESS ErrorF("%d %d %d %x %d\n", pScreenInfo->scrnIndex, VIDMEM_FRAMEBUFFER, pRendition->pcitag, pRendition->board.mem_base, pScreenInfo->videoRam * 1024); #endif +#endif if (pRendition->board.chip == V1000_DEVICE){ /* Some V1000 boards are known to have problems with Write-Combining */ @@ -1394,12 +1495,19 @@ renditionMapMem(ScrnInfoPtr pScreenInfo) mapOption = VIDMEM_MMIO; } +#ifdef PCIACCESS + err = pci_device_map_region(pRendition->PciInfo, 0, TRUE); + pRendition->board.vmem_base = pRendition->PciInfo->regions[0].memory; + + return (err == 0); +#else pRendition->board.vmem_base= xf86MapPciMem(pScreenInfo->scrnIndex, mapOption, pRendition->pcitag, (unsigned long)pRendition->board.mem_base, pScreenInfo->videoRam * 1024); return TRUE; +#endif #ifdef DEBUG0 ErrorF("Done\n"); diff --git a/src/vtypes.h b/src/vtypes.h index c9b9606..0f845ce 100644 --- a/src/vtypes.h +++ b/src/vtypes.h @@ -11,6 +11,9 @@ #include <X11/Xmd.h> #include "xf86Pci.h" +#ifdef PCIACCESS +#include <pciaccess.h> +#endif /* * defines @@ -177,8 +180,12 @@ typedef struct _renditionRec { struct verite_board_t board; /* information on the board */ struct verite_modeinfo_t mode; /* information on the mode */ +#ifdef PCIACCESS + struct pci_device * PciInfo; +#else PCITAG pcitag; /* tag for the PCI config space */ pciVideoPtr PciInfo; /* PCI config data */ +#endif EntityInfoPtr pEnt; /* entity information */ CloseScreenProcPtr CloseScreen; /* wrap CloseScreen */ xf86CursorInfoPtr CursorInfoRec; /* Cursor data */ commit 1a2a9e76aa9b8fbd821c41fd67646a7c35180b48 Author: Ian Romanick <[EMAIL PROTECTED]> Date: Tue Mar 6 09:16:44 2007 -0800 Move renditionTypes, renditionChipsets, and renditionPCIchipsets earlier in file. diff --git a/src/rendition.c b/src/rendition.c index 5fcd6d3..4cfcecb 100644 --- a/src/rendition.c +++ b/src/rendition.c @@ -138,6 +138,24 @@ OptionInfoRec const renditionOptions[]={ { -1, NULL, OPTV_NONE, {0}, FALSE } }; +enum renditionTypes { + CHIP_RENDITION_V1000, + CHIP_RENDITION_V2x00 +}; + +/* supported chipsets */ +static SymTabRec renditionChipsets[] = { + {CHIP_RENDITION_V1000, "V1000"}, + {CHIP_RENDITION_V2x00, "V2x00"}, + {-1, NULL} +}; + +static PciChipsets renditionPCIchipsets[] = { + { CHIP_RENDITION_V1000, PCI_CHIP_V1000, RES_SHARED_VGA }, + { CHIP_RENDITION_V2x00, PCI_CHIP_V2x00, RES_SHARED_VGA }, + { -1, -1, RES_UNDEFINED } +}; -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]