summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac20
-rw-r--r--man/i740.man47
-rw-r--r--src/Makefile.am1
-rw-r--r--src/compat-api.h73
-rw-r--r--src/i740.h12
-rw-r--r--src/i740_accel.c422
-rw-r--r--src/i740_dga.c78
-rw-r--r--src/i740_driver.c73
-rw-r--r--src/i740_video.c1
9 files changed, 66 insertions, 661 deletions
diff --git a/configure.ac b/configure.ac
index 6dd6327..06a3978 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,7 +58,7 @@ XORG_DRIVER_CHECK_EXT(XV, videoproto)
XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
# Obtain compiler/linker options for the driver dependencies
-PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_MODULES])
+PKG_CHECK_MODULES(XORG, [xorg-server >= 1.18 xproto fontsproto $REQUIRED_MODULES])
# Checks for libraries.
SAVE_CPPFLAGS="$CPPFLAGS"
@@ -74,24 +74,6 @@ if test "x$XSERVER_LIBPCIACCESS" = xyes; then
fi
AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
-AC_ARG_ENABLE(xaa,
- AS_HELP_STRING([--enable-xaa],
- [Enable legacy X Acceleration Architecture (XAA) [default=auto]]),
- [XAA="$enableval"],
- [XAA=auto])
-if test "x$XAA" != xno; then
- save_CFLAGS=$CFLAGS
- save_CPPFLAGS=$CPPFLAGS
- CFLAGS=$XORG_CFLAGS
- CPPFLAGS="$XORG_CFLAGS"
- AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no)
- CFLAGS=$save_CFLAGS
- CPPFLAGS=$save_CPPFLAGS
-fi
-AC_MSG_CHECKING([whether to include XAA support])
-AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
-AC_MSG_RESULT([$XAA])
-
AC_SUBST([moduledir])
DRIVER_NAME=i740
diff --git a/man/i740.man b/man/i740.man
index 230db43..81c1c53 100644
--- a/man/i740.man
+++ b/man/i740.man
@@ -1,9 +1,8 @@
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/i740/i740.man,v 1.2 2001/01/27 18:20:48 dawes Exp $
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
-.TH I740 __drivermansuffix__ __vendorversion__
+.TH I740 __drivermansuffix__ 2009-05-11 __vendorversion__
.SH NAME
-i740 \- Intel i740 video driver
+i740 - Intel i740 video driver for Xorg
.SH SYNOPSIS
.nf
.B "Section \*qDevice\*q"
@@ -14,16 +13,18 @@ i740 \- Intel i740 video driver
.fi
.SH DESCRIPTION
.B i740
-is an __xservername__ driver for Intel i740 video cards.
+is an Xorg driver for Intel i740 video cards.
.SH SUPPORTED HARDWARE
The
.B i740
-driver supports Intel 740 based cards. A list of cards reported to work
+driver supports Intel 740 based cards.
+A list of cards reported to work
is provided in the README file with the driver source.
.SH CONFIGURATION DETAILS
-Please refer to __xconfigfile__(__filemansuffix__) for general configuration
-details. This section only covers configuration details specific to this
-driver.
+Please refer to
+.BR xorg.conf (__filemansuffix__)
+for general configuration details.
+This section only covers configuration details specific to this driver.
.PP
The driver auto-detects all device information necessary to initialize
the card.
@@ -43,31 +44,42 @@ The following driver
are supported on all chipsets:
.TP
.BI "Option \*qNoAccel\*q \*q" boolean \*q
-Disable or enable 2D acceleration. Default: acceleration is enabled.
+Disable or enable 2D acceleration.
+Default: acceleration is enabled.
.TP
.BI "Option \*qSWCursor\*q \*q" boolean \*q
-Request a software cursor (hardware is default). Default: off
+Request a software cursor (hardware is default).
+Default: off
.TP
.BI "Option \*qSDRAM\*q \*q" boolean \*q
-Force the use of SDRAM timings. Default: off
+Force the use of SDRAM timings.
+Default: off
.TP
.BI "Option \*qSGRAM\*q \*q" boolean \*q
-Force the use of SGRAM timings. Default: off
+Force the use of SGRAM timings.
+Default: off
.TP
.BI "Option \*qSlowRam\*q \*q" boolean \*q
-Force the use of slower ram timings. Default: off
+Force the use of slower ram timings.
+Default: off
.TP
.BI "Option \*qDac6Bit\*q \*q" boolean \*q
-Force the use of a 6 Bit Dac (8 Bit is the default). Default: off
+Force the use of a 6 Bit Dac (8 Bit is the default).
+Default: off
.TP
.BI "Option \*qUsePIO\*q \*q" boolean \*q
-Force the use of programmed IO (Memory mapped is the default). Default: off
+Force the use of programmed IO (Memory mapped is the default).
+Default: off
.PP
Note: the i740 X server should automatically detect whether your card
-has SGRAM or SDRAM. Use the \*qsgram\*q and \*qsdram\*q options if it is
+has SGRAM or SDRAM.
+Use the \*qsgram\*q and \*qsdram\*q options if it is
incorrectly detected.
.SH "SEE ALSO"
-__xservername__(1), __xconfigfile__(__filemansuffix__), Xserver(1), X(__miscmansuffix__)
+.BR Xorg (1),
+.BR xorg.conf (__filemansuffix__),
+.BR Xserver (1),
+.BR X (__miscmansuffix__)
.SH AUTHORS
Authors include: Kevin E Martin and Daryll Strauss of Precision Insight, Inc.
.PP
@@ -75,4 +87,3 @@ The XFree86 version of this driver was donated to The XFree86 Project by
Precision Insight, Inc., Cedar Park, TX, USA
.PP
The Xorg version of this driver originally came from XFree86 4.4rc2.
-
diff --git a/src/Makefile.am b/src/Makefile.am
index 0b9f47a..7c0cfa6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -30,7 +30,6 @@ i740_drv_ladir = @moduledir@/drivers
i740_drv_la_SOURCES = \
compat-api.h \
- i740_accel.c \
i740_cursor.c \
i740_dga.c \
i740_dga.h \
diff --git a/src/compat-api.h b/src/compat-api.h
index 89976e4..35e22b4 100644
--- a/src/compat-api.h
+++ b/src/compat-api.h
@@ -28,77 +28,12 @@
#ifndef COMPAT_API_H
#define COMPAT_API_H
-#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
-#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
-#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
-#endif
-
-#ifndef XF86_HAS_SCRN_CONV
-#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
-#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
-#endif
-
-#ifndef XF86_SCRN_INTERFACE
-
-#define SCRN_ARG_TYPE int
-#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
-
-#define SCREEN_ARG_TYPE int
-#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
-
-#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
-
-#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
-#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
-
-#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
-#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
-
-#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
-#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
-
-#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
-#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
-
-#define FREE_SCREEN_ARGS_DECL int arg, int flags
-
-#define VT_FUNC_ARGS_DECL int arg, int flags
-#define VT_FUNC_ARGS pScrn->scrnIndex, 0
-
-#define XF86_SCRN_ARG(x) ((x)->scrnIndex)
-#else
-#define SCRN_ARG_TYPE ScrnInfoPtr
-#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
-
-#define SCREEN_ARG_TYPE ScreenPtr
-#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
-
-#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
-
#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
-#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
-#define BLOCKHANDLER_ARGS arg, pTimeout
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr pScreen, pointer pTimeout
+#define BLOCKHANDLER_ARGS pScreen, pTimeout
#else
-#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
-#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
-#endif
-
-#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
-#define CLOSE_SCREEN_ARGS pScreen
-
-#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
-#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
-
-#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
-#define SWITCH_MODE_ARGS(arg, m) arg, m
-
-#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
-
-#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
-#define VT_FUNC_ARGS pScrn
-
-#define XF86_SCRN_ARG(x) (x)
-
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr pScreen, pointer pTimeout, pointer pReadmask
+#define BLOCKHANDLER_ARGS pScreen, pTimeout, pReadmask
#endif
#endif
diff --git a/src/i740.h b/src/i740.h
index f41e7f0..8b602f2 100644
--- a/src/i740.h
+++ b/src/i740.h
@@ -41,9 +41,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "i740_reg.h"
#include "i740_macros.h"
-#ifdef HAVE_XAA_H
-#include "xaa.h"
-#endif
#include "xf86Cursor.h"
#include "compat-api.h"
@@ -112,9 +109,6 @@ typedef struct _I740Rec {
int HasSGRAM;
I740RegRec SavedReg;
I740RegRec ModeReg;
-#ifdef HAVE_XAA_H
- XAAInfoRecPtr AccelInfoRec;
-#endif
xf86CursorInfoPtr CursorInfoRec;
FBAreaPtr CursorData;
CloseScreenProcPtr CloseScreen;
@@ -154,13 +148,13 @@ typedef struct _I740Rec {
#define I740PTR(p) ((I740Ptr)((p)->driverPrivate))
extern Bool I740CursorInit(ScreenPtr pScreen);
-extern Bool I740AccelInit(ScreenPtr pScreen);
+
void I740SetPIOAccess(I740Ptr pI740);
void I740SetMMIOAccess(I740Ptr pI740);
void I740InitVideo(ScreenPtr pScreen);
-Bool I740SwitchMode(SWITCH_MODE_ARGS_DECL);
-void I740AdjustFrame(ADJUST_FRAME_ARGS_DECL);
+Bool I740SwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
+void I740AdjustFrame(ScrnInfoPtr pScrn, int x, int y);
Bool I740_I2CInit(ScrnInfoPtr pScrn);
diff --git a/src/i740_accel.c b/src/i740_accel.c
deleted file mode 100644
index b574752..0000000
--- a/src/i740_accel.c
+++ /dev/null
@@ -1,422 +0,0 @@
-
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-All Rights Reserved.
-
-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, sub license, 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 NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS 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.
-
-**************************************************************************/
-
-/*
- * Authors:
- * Daryll Strauss <daryll@precisioninsight.com>
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "xf86.h"
-#include "xf86_OSproc.h"
-
-#include "compiler.h"
-
-#include "xf86Pci.h"
-
-#include "vgaHW.h"
-
-#include "xf86xv.h"
-#include "i740.h"
-
-#ifdef HAVE_XAA_H
-static unsigned int i740Rop[16] = {
- 0x00, /* GXclear */
- 0x88, /* GXand */
- 0x44, /* GXandReverse */
- 0xCC, /* GXcopy */
- 0x22, /* GXandInvert */
- 0xAA, /* GXnoop */
- 0x66, /* GXxor */
- 0xEE, /* GXor */
- 0x11, /* GXnor */
- 0x99, /* GXequiv */
- 0x55, /* GXinvert */
- 0xDD, /* GXorReverse */
- 0x33, /* GXcopyInvert */
- 0xBB, /* GXorInverted */
- 0x77, /* GXnand */
- 0xFF /* GXset */
-};
-
-static unsigned int i740PatternRop[16] = {
- 0x00, /* GXclear */
- 0xA0, /* GXand */
- 0x50, /* GXandReverse */
- 0xF0, /* GXcopy */
- 0x0A, /* GXandInvert */
- 0xAA, /* GXnoop */
- 0x5A, /* GXxor */
- 0xFA, /* GXor */
- 0x05, /* GXnor */
- 0xA5, /* GXequiv */
- 0x55, /* GXinvert */
- 0xF5, /* GXorReverse */
- 0x0F, /* GXcopyInvert */
- 0xAF, /* GXorInverted */
- 0x5F, /* GXnand */
- 0xFF /* GXset */
-};
-
-static void I740SyncPIO(ScrnInfoPtr pScrn);
-static void I740SyncMMIO(ScrnInfoPtr pScrn);
-static void I740SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
- unsigned int planemask);
-static void I740SubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y,
- int w, int h);
-static void I740SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir,
- int ydir, int rop,
- unsigned int planemask,
- int transparency_color);
-static void I740SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
- int x2, int y2, int w, int h);
-static void I740SetupForMono8x8PatternFill(ScrnInfoPtr pScrn,
- int pattx, int patty,
- int fg, int bg, int rop,
- unsigned int planemask);
-static void I740SubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn,
- int pattx, int patty,
- int x, int y, int w, int h);
-#if 0
-static void I740SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int bg, int fg, int rop,
- unsigned int planemask);
-static void I740SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- int skipleft);
-#endif
-#endif
-/*
- * The following function sets up the supported acceleration. Call it
- * from the FbInit() function in the SVGA driver, or before ScreenInit
- * in a monolithic server.
- */
-Bool
-I740AccelInit(ScreenPtr pScreen)
-{
-#ifdef HAVE_XAA_H
- XAAInfoRecPtr infoPtr;
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- I740Ptr pI740 = I740PTR(pScrn);
-
- pI740->AccelInfoRec = infoPtr = XAACreateInfoRec();
- if (!infoPtr)
- return FALSE;
-
- if (pScrn->bitsPerPixel == 32) {
- infoPtr->Flags = 0; /* Disables all acceleration */
- return TRUE;;
- }
-
- infoPtr->Flags = PIXMAP_CACHE | OFFSCREEN_PIXMAPS | LINEAR_FRAMEBUFFER;
-
- /* Sync */
- if (pI740->usePIO)
- infoPtr->Sync = I740SyncPIO;
- else
- infoPtr->Sync = I740SyncMMIO;
-
- infoPtr->CachePixelGranularity = 8 / pI740->cpp;
-
- /* Solid filled rectangles */
- infoPtr->SolidFillFlags = NO_PLANEMASK;
- infoPtr->SetupForSolidFill = I740SetupForSolidFill;
- infoPtr->SubsequentSolidFillRect = I740SubsequentSolidFillRect;
-
- /* Screen to screen copy */
- infoPtr->ScreenToScreenCopyFlags = (NO_PLANEMASK | NO_TRANSPARENCY);
- infoPtr->SetupForScreenToScreenCopy = I740SetupForScreenToScreenCopy;
- infoPtr->SubsequentScreenToScreenCopy = I740SubsequentScreenToScreenCopy;
-
- /* 8x8 pattern fills */
- infoPtr->SetupForMono8x8PatternFill = I740SetupForMono8x8PatternFill;
- infoPtr->SubsequentMono8x8PatternFillRect =
- I740SubsequentMono8x8PatternFillRect;
- infoPtr->Mono8x8PatternFillFlags =
- NO_PLANEMASK | HARDWARE_PATTERN_SCREEN_ORIGIN |
- BIT_ORDER_IN_BYTE_MSBFIRST;
-
- /* CPU to screen color expansion */
- /* Currently XAA is limited to only DWORD padding. The 3.3 driver
- * uses NO_PAD scanlines b/c of problems with using the chip in
- * DWORD mode. Once other padding modes are available in XAA this
- * Code can be turned back on.
- */
-#if 0
-#ifndef ALLOW_PCI_COLOR_EXP
- if (pI740->Chipset != PCI_CHIP_I740_PCI) {
-#endif
- /*
- * Currently, we are not properly able to read the bitblt engine
- * busy bit on the PCI i740 card. When we are able to do so, we
- * can re-enable color expansion.
- */
- infoPtr->CPUToScreenColorExpandFillFlags = NO_PLANEMASK |
-#ifdef USE_DWORD_COLOR_EXP
- SCANLINE_PAD_DWORD |
-#endif
- CPU_TRANSFER_PAD_QWORD |
- SYNC_AFTER_COLOR_EXPAND | BIT_ORDER_IN_BYTE_MSBFIRST;
- infoPtr->ColorExpandBase =
- (unsigned char *) (pI740->MMIOBase + BLTDATA);
- infoPtr->ColorExpandRange = 0x10000;
- infoPtr->SetupForCPUToScreenColorExpandFill =
- I740SetupForCPUToScreenColorExpandFill;
- infoPtr->SubsequentCPUToScreenColorExpandFill =
- I740SubsequentCPUToScreenColorExpandFill;
-#ifndef ALLOW_PCI_COLOR_EXP
- }
-#endif
-#endif
- return XAAInit(pScreen, infoPtr);
-#else
- return FALSE;
-#endif
-}
-
-#ifdef HAVE_XAA_H
-
-static void
-I740SyncPIO(ScrnInfoPtr pScrn)
-{
- WAIT_ENGINE_IDLE_PIO();
-}
-
-static void
-I740SyncMMIO(ScrnInfoPtr pScrn)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- WAIT_ENGINE_IDLE_MMIO();
-}
-
-static void
-I740SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
- unsigned int planemask)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
-
- pI740->bltcmd.BR00 = ((pScrn->displayWidth * pI740->cpp) << 16) |
- (pScrn->displayWidth * pI740->cpp);
- pI740->bltcmd.BR01 = color;
- pI740->bltcmd.BR04 = SOLID_PAT_SELECT | PAT_IS_MONO | i740PatternRop[rop];
-}
-
-static void
-I740SubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- WAIT_LP_FIFO(12);
- OUTREG(LP_FIFO, 0x6000000A);
- OUTREG(LP_FIFO, pI740->bltcmd.BR00);
- OUTREG(LP_FIFO, pI740->bltcmd.BR01);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, pI740->bltcmd.BR04);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, (y * pScrn->displayWidth + x) * pI740->cpp);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, (h << 16) | (w * pI740->cpp));
-}
-
-static void
-I740SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop,
- unsigned int planemask, int transparency_color)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- pI740->bltcmd.BR00 = (((pScrn->displayWidth * pI740->cpp) << 16) |
- (pScrn->displayWidth * pI740->cpp));
-
- pI740->bltcmd.BR04 = SRC_IS_IN_COLOR | SRC_USE_SRC_ADDR | i740Rop[rop];
- if (xdir == -1)
- pI740->bltcmd.BR04 |= BLT_RIGHT_TO_LEFT;
- else
- pI740->bltcmd.BR04 |= BLT_LEFT_TO_RIGHT;
-
- if (ydir == -1)
- pI740->bltcmd.BR04 |= BLT_BOT_TO_TOP;
- else
- pI740->bltcmd.BR04 |= BLT_TOP_TO_BOT;
-
- pI740->bltcmd.BR01 = 0x00000000;
-
-}
-
-static void
-I740SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
- int x2, int y2, int w, int h)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- if (pI740->bltcmd.BR04 & BLT_BOT_TO_TOP) {
- pI740->bltcmd.BR06 = (y1 + h - 1) * pScrn->displayWidth * pI740->cpp;
- pI740->bltcmd.BR07 = (y2 + h - 1) * pScrn->displayWidth * pI740->cpp;
- }
- else {
- pI740->bltcmd.BR06 = y1 * pScrn->displayWidth * pI740->cpp;
- pI740->bltcmd.BR07 = y2 * pScrn->displayWidth * pI740->cpp;
- }
-
- if (pI740->bltcmd.BR04 & BLT_RIGHT_TO_LEFT) {
- pI740->bltcmd.BR06 += (x1 + w - 1) * pI740->cpp + pI740->cpp - 1;
- pI740->bltcmd.BR07 += (x2 + w - 1) * pI740->cpp + pI740->cpp - 1;
- }
- else {
- pI740->bltcmd.BR06 += x1 * pI740->cpp;
- pI740->bltcmd.BR07 += x2 * pI740->cpp;
- }
-
- WAIT_LP_FIFO(12);
- OUTREG(LP_FIFO, 0x6000000A);
- OUTREG(LP_FIFO, pI740->bltcmd.BR00);
- OUTREG(LP_FIFO, pI740->bltcmd.BR01);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, pI740->bltcmd.BR04);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, pI740->bltcmd.BR06);
- OUTREG(LP_FIFO, pI740->bltcmd.BR07);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, (h << 16) | (w * pI740->cpp));
-}
-
-static void
-I740SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int pattx, int patty,
- int fg, int bg, int rop, unsigned int planemask)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- pI740->bltcmd.BR00 = ((pScrn->displayWidth * pI740->cpp) << 16) |
- (pScrn->displayWidth * pI740->cpp);
-
- pI740->bltcmd.BR01 = bg;
- pI740->bltcmd.BR02 = fg;
-
- pI740->bltcmd.BR04 = PAT_IS_MONO | i740PatternRop[rop];
- if (bg == -1)
- pI740->bltcmd.BR04 |= MONO_PAT_TRANSP;
-
- pI740->bltcmd.BR05 = (pattx + patty * pScrn->displayWidth) * pI740->cpp;
-}
-
-static void
-I740SubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, int pattx, int patty,
- int x, int y, int w, int h)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- WAIT_LP_FIFO(12);
- OUTREG(LP_FIFO, 0x6000000A);
- OUTREG(LP_FIFO, pI740->bltcmd.BR00);
- OUTREG(LP_FIFO, pI740->bltcmd.BR01);
- OUTREG(LP_FIFO, pI740->bltcmd.BR02);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, pI740->bltcmd.BR04 | ((y << 20) & PAT_VERT_ALIGN));
- OUTREG(LP_FIFO, pI740->bltcmd.BR05);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, (y * pScrn->displayWidth + x) * pI740->cpp);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, (h << 16) | (w * pI740->cpp));
-}
-
-#if 0
-static void
-I740SetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int bg, int fg,
- int rop, unsigned int planemask)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- pI740->bltcmd.BR00 = (pScrn->displayWidth * pI740->cpp) << 16;
- pI740->bltcmd.BR01 = bg;
- pI740->bltcmd.BR02 = fg;
-#ifdef USE_DWORD_COLOR_EXP
- pI740->bltcmd.BR03 = MONO_DWORD_ALIGN | MONO_USE_COLEXP;
-#else
- pI740->bltcmd.BR03 = MONO_BIT_ALIGN | MONO_USE_COLEXP;
-#endif
- pI740->bltcmd.BR04 = SRC_IS_MONO | SRC_USE_BLTDATA | i740Rop[rop];
- if (bg == -1)
- pI740->bltcmd.BR04 |= MONO_SRC_TRANSP;
-}
-
-static void
-I740SubsequentCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, int x, int y,
- int w, int h, int skipleft)
-{
- I740Ptr pI740;
-
- pI740 = I740PTR(pScrn);
- pI740->AccelInfoRec->Sync(pScrn);
- OUTREG(LP_FIFO, 0x6000000A);
- OUTREG(LP_FIFO, pI740->bltcmd.BR00);
- OUTREG(LP_FIFO, pI740->bltcmd.BR01);
- OUTREG(LP_FIFO, pI740->bltcmd.BR02);
- OUTREG(LP_FIFO, pI740->bltcmd.BR03 | (skipleft & MONO_SRC_LEFT_CLIP));
- OUTREG(LP_FIFO, pI740->bltcmd.BR04);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, (y * pScrn->displayWidth + x) * pI740->cpp);
- OUTREG(LP_FIFO, 0x00000000);
- OUTREG(LP_FIFO, 0x00000000);
-#ifdef USE_DWORD_COLOR_EXP
- /*
- * This extra wait is necessary to keep the bitblt engine from
- * locking up, but I am not sure why it is needed. If we take it
- * out, "x11perf -copyplane10" will lock the bitblt engine. When
- * the bitblt engine is locked, it is waiting for mono data to be
- * written to the BLTDATA region, which seems to imply that some of
- * the data that was written was lost. This might be fixed by
- * BLT_SKEW changes. Update: The engine still locks up with this
- * extra wait. More investigation (and time) is needed.
- */
- WAIT_BLT_IDLE();
-#endif
- OUTREG(LP_FIFO, (h << 16) | (w * pI740->cpp));
-}
-#endif
-
-#endif
diff --git a/src/i740_dga.c b/src/i740_dga.c
index 2ad9188..e03d329 100644
--- a/src/i740_dga.c
+++ b/src/i740_dga.c
@@ -32,9 +32,6 @@
#include "vgaHW.h"
#include "xf86xv.h"
#include "i740.h"
-#ifdef HAVE_XAA_H
-#include "xaalocal.h"
-#endif
#include "dgaproc.h"
#include "i740_dga.h"
@@ -44,34 +41,13 @@ static Bool I740_SetMode(ScrnInfoPtr, DGAModePtr);
static int I740_GetViewport(ScrnInfoPtr);
static void I740_SetViewport(ScrnInfoPtr, int, int, int);
-#ifdef HAVE_XAA_H
-static void I740_Sync(ScrnInfoPtr);
-static void I740_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
-static void I740_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
-
-#if 0
-static void I740_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int,
- unsigned long);
-#endif
-#endif
static DGAFunctionRec I740DGAFuncs = {
I740_OpenFramebuffer,
NULL,
I740_SetMode,
I740_SetViewport,
I740_GetViewport,
-#ifdef HAVE_XAA_H
- I740_Sync,
- I740_FillRect,
- I740_BlitRect,
-#if 0
- I740_BlitTransRect
-#else
- NULL
-#endif
-#else
NULL, NULL, NULL, NULL
-#endif
};
Bool
@@ -101,10 +77,6 @@ I740DGAInit(ScreenPtr pScreen)
currentMode->mode = pMode;
currentMode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE;
-#ifdef HAVE_XAA_H
- if (pI740->AccelInfoRec)
- currentMode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
-#endif
if (pMode->Flags & V_DBLSCAN)
currentMode->flags |= DGA_DOUBLESCAN;
if (pMode->Flags & V_INTERLACE)
@@ -157,8 +129,8 @@ I740_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode)
if (!pMode) { /* restore the original mode */
if (pI740->DGAactive) {
pScrn->currentMode = I740SavedDGAModes[index];
- I740SwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode));
- I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0));
+ I740SwitchMode(pScrn, pScrn->currentMode);
+ I740AdjustFrame(pScrn, 0, 0);
pI740->DGAactive = FALSE;
}
}
@@ -168,7 +140,7 @@ I740_SetMode(ScrnInfoPtr pScrn, DGAModePtr pMode)
pI740->DGAactive = TRUE;
}
- I740SwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode));
+ I740SwitchMode(pScrn, pMode->mode);
}
return TRUE;
@@ -188,7 +160,7 @@ I740_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags)
I740Ptr pI740 = I740PTR(pScrn);
vgaHWPtr hwp = VGAHWPTR(pScrn);
- I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
+ I740AdjustFrame(pScrn, x, y);
/* wait for retrace */
while ((hwp->readST01(hwp) & 0x08));
@@ -197,48 +169,6 @@ I740_SetViewport(ScrnInfoPtr pScrn, int x, int y, int flags)
pI740->DGAViewportStatus = 0;
}
-#ifdef HAVE_XAA_H
-static void
-I740_FillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h,
- unsigned long color)
-{
- I740Ptr pI740 = I740PTR(pScrn);
-
- if (pI740->AccelInfoRec) {
- (*pI740->AccelInfoRec->SetupForSolidFill) (pScrn, color, GXcopy, ~0);
- (*pI740->AccelInfoRec->SubsequentSolidFillRect) (pScrn, x, y, w, h);
- SET_SYNC_FLAG(pI740->AccelInfoRec);
- }
-}
-
-static void
-I740_Sync(ScrnInfoPtr pScrn)
-{
- I740Ptr pI740 = I740PTR(pScrn);
-
- if (pI740->AccelInfoRec) {
- (*pI740->AccelInfoRec->Sync) (pScrn);
- }
-}
-
-static void
-I740_BlitRect(ScrnInfoPtr pScrn,
- int srcx, int srcy, int w, int h, int dstx, int dsty)
-{
- I740Ptr pI740 = I740PTR(pScrn);
-
- if (pI740->AccelInfoRec) {
- int xdir = ((srcx < dstx) && (srcy == dsty)) ? -1 : 1;
- int ydir = (srcy < dsty) ? -1 : 1;
-
- (*pI740->AccelInfoRec->SetupForScreenToScreenCopy) (pScrn, xdir, ydir,
- GXcopy, ~0, -1);
- (*pI740->AccelInfoRec->SubsequentScreenToScreenCopy) (pScrn, srcx, srcy,
- dstx, dsty, w, h);
- SET_SYNC_FLAG(pI740->AccelInfoRec);
- }
-}
-#endif
#if 0
static void
I740_BlitTransRect(ScrnInfoPtr pScrn,
diff --git a/src/i740_driver.c b/src/i740_driver.c
index 0bc81a4..75e57b5 100644
--- a/src/i740_driver.c
+++ b/src/i740_driver.c
@@ -53,10 +53,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include "xf86.h"
#include "xf86_OSproc.h"
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
-#include "xf86Resources.h"
-#include "xf86RAC.h"
-#endif
#include "xf86cmap.h"
/* If the driver uses port I/O directly, it needs: */
@@ -101,25 +97,25 @@ static Bool I740Probe(DriverPtr drv, int flags);
static Bool I740PreInit(ScrnInfoPtr pScrn, int flags);
/* Initialize a screen */
-static Bool I740ScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool I740ScreenInit(ScreenPtr pScreen, int argc, char **argv);
/* Enter from a virtual terminal */
-static Bool I740EnterVT(VT_FUNC_ARGS_DECL);
+static Bool I740EnterVT(ScrnInfoPtr pScrn);
/* Leave to a virtual terminal */
-static void I740LeaveVT(VT_FUNC_ARGS_DECL);
+static void I740LeaveVT(ScrnInfoPtr pScrn);
/* Close down each screen we initialized */
-static Bool I740CloseScreen(CLOSE_SCREEN_ARGS_DECL);
+static Bool I740CloseScreen(ScreenPtr pScreen);
/* Change screensaver state */
static Bool I740SaveScreen(ScreenPtr pScreen, int mode);
/* Cleanup server private data */
-static void I740FreeScreen(FREE_SCREEN_ARGS_DECL);
+static void I740FreeScreen(ScrnInfoPtr pScrn);
/* Check if a mode is valid on the hardware */
-static ModeStatus I740ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
+static ModeStatus I740ValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode,
Bool verbose, int flags);
/* Switch to various Display Power Management System levels */
@@ -247,7 +243,7 @@ I740GetRec(ScrnInfoPtr pScrn)
if (pScrn->driverPrivate)
return TRUE;
- pScrn->driverPrivate = xnfcalloc(sizeof(I740Rec), 1);
+ pScrn->driverPrivate = XNFcallocarray(sizeof(I740Rec), 1);
return TRUE;
}
@@ -698,7 +694,7 @@ I740PreInit(ScrnInfoPtr pScrn, int flags)
pI740->MaxClock = 86000;
}
}
- clockRanges = xnfcalloc(sizeof(ClockRange), 1);
+ clockRanges = XNFcallocarray(sizeof(ClockRange), 1);
clockRanges->next = NULL;
clockRanges->minClock = 12000; /* !!! What's the min clock? !!! */
clockRanges->maxClock = pI740->MaxClock;
@@ -712,10 +708,7 @@ I740PreInit(ScrnInfoPtr pScrn, int flags)
if (I740MapMem(pScrn)) {
if (I740_I2CInit(pScrn)) {
xf86MonPtr MonInfo;
-
- if ((MonInfo =
- xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),
- pI740->rc_i2c))) {
+ if ((MonInfo = xf86DoEDID_DDC2(pScrn, pI740->rc_i2c))) {
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"DDC Monitor info: %p\n", MonInfo);
xf86PrintEDID(MonInfo);
@@ -770,11 +763,9 @@ I740PreInit(ScrnInfoPtr pScrn, int flags)
pI740->NoAccel =
xf86ReturnOptValBool(pI740->Options, OPTION_NOACCEL, FALSE);
if (!pI740->NoAccel) {
- if (!xf86LoadSubModule(pScrn, "xaa")) {
- xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
- "No acceleration available\n");
- pI740->NoAccel = 1;
- }
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "No acceleration available\n");
+ pI740->NoAccel = 1;
}
if (!xf86ReturnOptValBool(pI740->Options, OPTION_SW_CURSOR, FALSE)) {
@@ -1585,7 +1576,7 @@ I740LoadPalette24(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
}
static Bool
-I740ScreenInit(SCREEN_INIT_ARGS_DECL)
+I740ScreenInit(ScreenPtr pScreen, int argc, char **argv)
{
ScrnInfoPtr pScrn;
vgaHWPtr hwp;
@@ -1612,7 +1603,7 @@ I740ScreenInit(SCREEN_INIT_ARGS_DECL)
return FALSE;
I740SaveScreen(pScreen, SCREEN_SAVER_ON);
- I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
+ I740AdjustFrame(pScrn, pScrn->frameX0, pScrn->frameY0);
miClearVisualTypes();
@@ -1658,10 +1649,8 @@ I740ScreenInit(SCREEN_INIT_ARGS_DECL)
}
if (!pI740->NoAccel) {
- if (!I740AccelInit(pScreen)) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Hardware acceleration initialization failed\n");
- }
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Hardware acceleration not available\n");
}
if (pScrn->bitsPerPixel > 8) {
@@ -1731,16 +1720,14 @@ I740ScreenInit(SCREEN_INIT_ARGS_DECL)
}
Bool
-I740SwitchMode(SWITCH_MODE_ARGS_DECL)
+I740SwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
{
- SCRN_INFO_PTR(arg);
return I740ModeInit(pScrn, mode);
}
void
-I740AdjustFrame(ADJUST_FRAME_ARGS_DECL)
+I740AdjustFrame(ScrnInfoPtr pScrn, int x, int y)
{
- SCRN_INFO_PTR(arg);
int Base;
vgaHWPtr hwp;
@@ -1774,20 +1761,17 @@ I740AdjustFrame(ADJUST_FRAME_ARGS_DECL)
}
static Bool
-I740EnterVT(VT_FUNC_ARGS_DECL)
+I740EnterVT(ScrnInfoPtr pScrn)
{
- SCRN_INFO_PTR(arg);
-
if (!I740ModeInit(pScrn, pScrn->currentMode))
return FALSE;
- I740AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
+ I740AdjustFrame(pScrn, pScrn->frameX0, pScrn->frameY0);
return TRUE;
}
static void
-I740LeaveVT(VT_FUNC_ARGS_DECL)
+I740LeaveVT(ScrnInfoPtr pScrn)
{
- SCRN_INFO_PTR(arg);
vgaHWPtr hwp;
hwp = VGAHWPTR(pScrn);
@@ -1796,7 +1780,7 @@ I740LeaveVT(VT_FUNC_ARGS_DECL)
}
static Bool
-I740CloseScreen(CLOSE_SCREEN_ARGS_DECL)
+I740CloseScreen(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn;
vgaHWPtr hwp;
@@ -1813,33 +1797,26 @@ I740CloseScreen(CLOSE_SCREEN_ARGS_DECL)
I740UnmapMem(pScrn);
vgaHWUnmapMem(pScrn);
-#ifdef HAVE_XAA_H
- if (pI740->AccelInfoRec)
- XAADestroyInfoRec(pI740->AccelInfoRec);
- pI740->AccelInfoRec = 0;
-#endif
if (pI740->CursorInfoRec)
xf86DestroyCursorInfoRec(pI740->CursorInfoRec);
pI740->CursorInfoRec = 0;
pScrn->vtSema = FALSE;
pScreen->CloseScreen = pI740->CloseScreen;
- return (*pScreen->CloseScreen) (CLOSE_SCREEN_ARGS);
+ return (*pScreen->CloseScreen) (pScreen);
}
static void
-I740FreeScreen(FREE_SCREEN_ARGS_DECL)
+I740FreeScreen(ScrnInfoPtr pScrn)
{
- SCRN_INFO_PTR(arg);
I740FreeRec(pScrn);
if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
vgaHWFreeHWRec(pScrn);
}
static ModeStatus
-I740ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
+I740ValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags)
{
- SCRN_INFO_PTR(arg);
if (mode->Flags & V_INTERLACE) {
if (verbose) {
xf86DrvMsg(pScrn->scrnIndex, X_PROBED,
diff --git a/src/i740_video.c b/src/i740_video.c
index 958d4e8..1f7e9b9 100644
--- a/src/i740_video.c
+++ b/src/i740_video.c
@@ -908,7 +908,6 @@ I740QueryImageAttributes(ScrnInfoPtr pScrn, int id, unsigned short *w,
static void
I740BlockHandler(BLOCKHANDLER_ARGS_DECL)
{
- SCREEN_PTR(arg);
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
I740Ptr pI740 = I740PTR(pScrn);
I740PortPrivPtr pPriv = GET_PORT_PRIVATE(pScrn);