summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2024-05-13 15:22:20 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2024-05-13 15:22:20 -0700
commitf6ed544a2c98bd4e3b086ce456d90204194d128b (patch)
treed71d17f0271c98b09873f00f283e439d9fccbcd3
parent6254a73abbc7306b98b493ad4c6f4e448517c70b (diff)
Raise minimum supported Xserver version to 1.18 (ABI_VIDEODRV_VERSION 20.0)
Already effectively required by use of XNFcallocarray() introduced in xorg/xserver@b96dc999 - xserver-1.18.0, released in Nov. 2015. Allows dropping remnants of code for XAA and pre-pciaccess X servers Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-cirrus/-/merge_requests/6>
-rw-r--r--configure.ac22
-rw-r--r--src/Makefile.am9
-rw-r--r--src/alp.h4
-rw-r--r--src/alp_driver.c170
-rw-r--r--src/alp_xaa.c687
-rw-r--r--src/alp_xaam.c270
-rw-r--r--src/cir.h6
-rw-r--r--src/cir_dga.c66
-rw-r--r--src/cir_driver.c9
-rw-r--r--src/lg.h4
-rw-r--r--src/lg_blit.h (renamed from src/lg_xaa.h)8
-rw-r--r--src/lg_driver.c60
-rw-r--r--src/lg_hwcurs.c2
-rw-r--r--src/lg_xaa.c301
14 files changed, 29 insertions, 1589 deletions
diff --git a/configure.ac b/configure.ac
index 6dd1aa4..741f046 100644
--- a/configure.ac
+++ b/configure.ac
@@ -59,7 +59,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.4 xproto fontsproto $REQUIRED_MODULES])
+PKG_CHECK_MODULES(XORG, [xorg-server >= 1.18 xproto fontsproto $REQUIRED_MODULES])
# Checks for libraries.
SAVE_CPPFLAGS="$CPPFLAGS"
@@ -67,28 +67,8 @@ 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"
-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])
-
if test "x$XSERVER_LIBPCIACCESS" = xyes; then
PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
diff --git a/src/Makefile.am b/src/Makefile.am
index bc8732d..82e8530 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -42,13 +42,6 @@ cirrus_drv_la_SOURCES = \
alp_i2c.c \
lg_driver.c \
lg.h \
+ lg_blit.h \
lg_hwcurs.c \
lg_i2c.c
-
-if XAA
-cirrus_drv_la_SOURCES += \
- alp_xaa.c \
- alp_xaam.c \
- lg_xaa.c \
- lg_xaa.h
-endif
diff --git a/src/alp.h b/src/alp.h
index c09e24b..f2ff19d 100644
--- a/src/alp.h
+++ b/src/alp.h
@@ -40,10 +40,6 @@ typedef struct {
} AlpRegRec, *AlpRegPtr;
extern Bool AlpHWCursorInit(ScreenPtr pScreen, int size);
-#ifdef HAVE_XAA_H
-extern Bool AlpXAAInit(ScreenPtr pScreen);
-extern Bool AlpXAAInitMMIO(ScreenPtr pScreen);
-#endif
extern Bool AlpDGAInit(ScreenPtr pScreen);
extern Bool AlpI2CInit(ScrnInfoPtr pScrn);
diff --git a/src/alp_driver.c b/src/alp_driver.c
index ab6f84a..eedabe5 100644
--- a/src/alp_driver.c
+++ b/src/alp_driver.c
@@ -31,11 +31,6 @@
/* This driver needs to be modified to not use vgaHW for multihead operation */
#include "vgaHW.h"
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
-#include "xf86RAC.h"
-#include "xf86Resources.h"
-#endif
-
/* All drivers initialising the SW cursor need this */
#include "mipointer.h"
@@ -50,13 +45,6 @@
/* Framebuffer memory manager */
#include "xf86fbman.h"
-#if HAVE_XF4BPP
-#include "xf4bpp.h"
-#endif
-#if HAVE_XF1BPP
-#include "xf1bpp.h"
-#endif
-
#include "fb.h"
@@ -109,12 +97,7 @@ static void AlpSetClock(CirPtr pCir, vgaHWPtr hwp, int freq);
static void AlpOffscreenAccelInit(ScrnInfoPtr pScrn);
static void AlpDisplayPowerManagementSet(ScrnInfoPtr pScrn,
- int PowerManagementMode, int flags);
-
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
-static void PC98CIRRUS755xEnable(ScrnInfoPtr pScrn);
-static void PC98CIRRUS755xDisable(ScrnInfoPtr pScrn);
-#endif
+ int PowerManagementMode, int flags);
/*
* This is intentionally screen-independent. It indicates the binding
@@ -490,12 +473,7 @@ AlpPreInit(ScrnInfoPtr pScrn, int flags)
pCir = CIRPTR(pScrn);
pCir->pScrn = pScrn;
-
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- pCir->PIOReg = hwp->PIOOffset + 0x3CE;
-#else
- pCir->PIOReg = 0x3CE;
-#endif
+ pCir->PIOReg = 0x3CE; /* was hwp->PIOOffset + 0x3CE */
/* Get the entity, and make sure it is PCI. */
pCir->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
@@ -513,9 +491,6 @@ AlpPreInit(ScrnInfoPtr pScrn, int flags)
PCI_DEV_FUNC(pCir->PciInfo));
#endif
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- if (!xf86IsPc98())
-#endif
if (xf86LoadSubModule(pScrn, "int10"))
{
xf86DrvMsg(pScrn->scrnIndex,X_INFO,"initializing int10\n");
@@ -1055,51 +1030,20 @@ AlpPreInit(ScrnInfoPtr pScrn, int flags)
/* Set display resolution */
xf86SetDpi(pScrn, 0, 0);
- /* Load bpp-specific modules */
- switch (pScrn->bitsPerPixel) {
-#ifdef HAVE_XF1BPP
- case 1:
- if (xf86LoadSubModule(pScrn, "xf1bpp") == NULL) {
- AlpFreeRec(pScrn);
- return FALSE;
- }
- break;
-#endif
-#ifdef HAVE_XF4BPP
- case 4:
- if (xf86LoadSubModule(pScrn, "xf4bpp") == NULL) {
- AlpFreeRec(pScrn);
- return FALSE;
- }
- break;
-#endif
- case 8:
- case 16:
- case 24:
- case 32:
- if (xf86LoadSubModule(pScrn, "fb") == NULL) {
- AlpFreeRec(pScrn);
- return FALSE;
- }
- break;
+ /* Load fb module */
+ if (xf86LoadSubModule(pScrn, "fb") == NULL) {
+ AlpFreeRec(pScrn);
+ return FALSE;
}
- /* Load XAA if needed */
+ /* Use shadowfb for acceleration */
if (!pCir->NoAccel) {
-#ifdef HAVE_XAA_H
- if (!xf86LoadSubModule(pScrn, "xaa"))
-#else
- if (1)
-#endif
- {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Falling back to shadowfb\n");
- pCir->NoAccel = TRUE;
- pCir->shadowFB = TRUE;
- }
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Falling back to shadowfb\n");
+ pCir->NoAccel = TRUE;
+ pCir->shadowFB = TRUE;
}
-
/* Load ramdac if needed */
if (pCir->HWCursor) {
if (!xf86LoadSubModule(pScrn, "ramdac")) {
@@ -1413,11 +1357,6 @@ AlpModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
vgaHWProtect(pScrn, FALSE);
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- if (xf86IsPc98())
- PC98CIRRUS755xEnable(pScrn);
-#endif
-
return TRUE;
}
@@ -1556,22 +1495,8 @@ AlpScreenInit(SCREEN_INIT_ARGS_DECL)
*/
switch (pScrn->bitsPerPixel) {
-#ifdef HAVE_XF1BPP
case 1:
- ret = xf1bppScreenInit(pScreen, FbBase,
- width, height,
- pScrn->xDpi, pScrn->yDpi,
- displayWidth);
- break;
-#endif
-#ifdef HAVE_XF4BPP
case 4:
- ret = xf4bppScreenInit(pScreen, FbBase,
- width, height,
- pScrn->xDpi, pScrn->yDpi,
- displayWidth);
- break;
-#endif
case 8:
case 16:
case 24:
@@ -1650,14 +1575,8 @@ AlpScreenInit(SCREEN_INIT_ARGS_DECL)
}
}
- if (!pCir->NoAccel) { /* Initialize XAA functions */
+ if (!pCir->NoAccel) { /* Initialize acceleration functions */
AlpOffscreenAccelInit(pScrn);
-#ifdef HAVE_XAA_H
- if (!(pCir->UseMMIO ? AlpXAAInitMMIO(pScreen) :
- AlpXAAInit(pScreen)))
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Could not initialize XAA\n");
-#endif
}
#if 1
@@ -1835,11 +1754,6 @@ AlpLeaveVT(VT_FUNC_ARGS_DECL)
AlpRestore(pScrn);
vgaHWLock(hwp);
-
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- if (xf86IsPc98())
- PC98CIRRUS755xDisable(pScrn);
-#endif
}
@@ -1864,11 +1778,6 @@ AlpCloseScreen(CLOSE_SCREEN_ARGS_DECL)
CirUnmapMem(pCir, pScrn->scrnIndex);
}
-#ifdef HAVE_XAA_H
- if (pCir->AccelInfoRec)
- XAADestroyInfoRec(pCir->AccelInfoRec);
- pCir->AccelInfoRec = NULL;
-#endif
if (pCir->CursorInfoRec)
xf86DestroyCursorInfoRec(pCir->CursorInfoRec);
pCir->CursorInfoRec = NULL;
@@ -1879,11 +1788,6 @@ AlpCloseScreen(CLOSE_SCREEN_ARGS_DECL)
pScrn->vtSema = FALSE;
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- if (xf86IsPc98())
- PC98CIRRUS755xDisable(pScrn);
-#endif
-
pScreen->CloseScreen = pCir->CloseScreen;
return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
@@ -2148,53 +2052,3 @@ AlpOffscreenAccelInit(ScrnInfoPtr pScrn)
box.y2 - pScrn->virtualY);
}
}
-
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
-static void
-PC98CIRRUS755xEnable(ScrnInfoPtr pScrn) /* enter_aile() */
-{
- unsigned int index,data;
- vgaHWPtr hwp = VGAHWPTR(pScrn);
-
- outb(0xfac, 0x02);
-
- outb(0x68, 0x0e);
- outb(0x6a, 0x07);
- outb(0x6a, 0x8f);
- outb(0x6a, 0x06);
-
- outw(VGA_SEQ_INDEX, 0x1206); /* unlock cirrus special */
-
- index = hwp->IOBase + VGA_CRTC_INDEX_OFFSET;
- data = hwp->IOBase + VGA_CRTC_DATA_OFFSET;
- outb(index, 0x3c);
- outb(data, inb(data) & 0xef);
- outb(index, 0x1a);
- outb(data, inb(data) & 0xf3);
-}
-
-static void
-PC98CIRRUS755xDisable(ScrnInfoPtr pScrn) /* leave_aile() */
-{
- unsigned int index,data;
- vgaHWPtr hwp = VGAHWPTR(pScrn);
-
- outw(VGA_SEQ_INDEX, 0x1206); /* unlock cirrus special */
-
- index = hwp->IOBase + VGA_CRTC_INDEX_OFFSET;
- data = hwp->IOBase + VGA_CRTC_DATA_OFFSET;
- outb(index, 0x3c);
- outb(data, 0x71);
- outb(index, 0x1a);
- outb(data, inb(data) | 0x0c);
-
- outb(0xfac,0x00);
-
- outb(0x68, 0x0f);
- outb(0x6a, 0x07);
- outb(0x6a, 0x8e);
- outb(0x6a, 0x21);
- outb(0x6a, 0x69);
- outb(0x6a, 0x06);
-}
-#endif
diff --git a/src/alp_xaa.c b/src/alp_xaa.c
deleted file mode 100644
index ba2d6ef..0000000
--- a/src/alp_xaa.c
+++ /dev/null
@@ -1,687 +0,0 @@
-/* (c) Itai Nahshon */
-
-#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 "cir.h"
-#define _ALP_PRIVATE_
-#include "alp.h"
-
-#ifdef HAVE_XAA_H
-#define WAIT outb(pCir->PIOReg, 0x31); \
- while(inb(pCir->PIOReg + 1) & pCir->chip.alp->waitMsk){};
-#define WAIT_1 outb(pCir->PIOReg, 0x31); \
- while(inb(pCir->PIOReg + 1) & 0x1){};
-
-static const CARD16 translated_rop[] =
-{
- /* GXclear */ 0x0032U,
- /* GXand */ 0x0532U,
- /* GXandreverse */ 0x0932U,
- /* GXcopy */ 0x0D32U,
- /* GXandinversted */ 0x5032U,
- /* GXnoop */ 0x0632U,
- /* GXxor */ 0x5932U,
- /* GXor */ 0x6D32U,
- /* GXnor */ 0x9032U,
- /* GXequiv */ 0x9532U,
- /* GXinvert */ 0x0B32U,
- /* GXorReverse */ 0xAD32U,
- /* GXcopyInverted */ 0xD032U,
- /* GXorInverted */ 0xD632U,
- /* GXnand */ 0xDA32U,
- /* GXset */ 0x0E32U
-};
-
-#if 1
-#define SetupForRop(rop) outw(pCir->PIOReg, translated_rop[rop])
-#else
-#define SetupForRop(rop) outw(pCir->PIOReg, 0x0D32)
-#endif
-
-static void AlpSync(ScrnInfoPtr pScrn)
-{
- CirPtr pCir = CIRPTR(pScrn);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSync\n");
-#endif
- WAIT_1;
- return;
-}
-
-static void
-AlpSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir,
- int rop, unsigned int planemask,
- int trans_color)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int pitch = pCir->pitch;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupForScreenToScreenCopy xdir=%d ydir=%d rop=%x planemask=%x trans_color=%x\n",
- xdir, ydir, rop, planemask, trans_color);
-#endif
- WAIT;
- SetupForRop(rop);
- /* Set dest pitch */
- outw(pCir->PIOReg, ((pitch << 8) & 0xff00) | 0x24);
- outw(pCir->PIOReg, ((pitch) & 0x1f00) | 0x25);
- /* Set source pitch */
- outw(pCir->PIOReg, ((pitch << 8) & 0xff00) | 0x26);
- outw(pCir->PIOReg, ((pitch) & 0x1f00) | 0x27);
-}
-
-static void
-AlpSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1, int x2,
- int y2, int w, int h)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int source, dest;
- int hh, ww;
- int decrement = 0;
- int pitch = pCir->pitch;
-
- ww = (w * pScrn->bitsPerPixel / 8) - 1;
- hh = h - 1;
- dest = y2 * pitch + x2 * pScrn->bitsPerPixel / 8;
- source = y1 * pitch + x1 * pScrn->bitsPerPixel / 8;
- if (dest > source) {
- decrement = 1 << 8;
- dest += hh * pitch + ww;
- source += hh * pitch + ww;
- }
-
- WAIT;
-
- outw(pCir->PIOReg, decrement | 0x30);
-
- /* Width */
- outw(pCir->PIOReg, ((ww << 8) & 0xff00) | 0x20);
- outw(pCir->PIOReg, ((ww) & 0x1f00) | 0x21);
- /* Height */
- outw(pCir->PIOReg, ((hh << 8) & 0xff00) | 0x22);
- outw(pCir->PIOReg, ((hh) & 0x0700) | 0x23);
-
-
- /* source */
- outw(pCir->PIOReg, ((source << 8) & 0xff00) | 0x2C);
- outw(pCir->PIOReg, ((source) & 0xff00) | 0x2D);
- outw(pCir->PIOReg, ((source >> 8) & 0x3f00)| 0x2E);
-
- /* dest */
- outw(pCir->PIOReg, ((dest << 8) & 0xff00) | 0x28);
- outw(pCir->PIOReg, ((dest) & 0xff00) | 0x29);
- outw(pCir->PIOReg, ((dest >> 8) & 0x3f00) | 0x2A);
- if (!pCir->chip.alp->autoStart)
- outw(pCir->PIOReg, 0x0231);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentScreenToScreenCopy x1=%d y1=%d x2=%d y2=%d w=%d h=%d\n",
- x1, y1, x2, y2, w, h);
- ErrorF("AlpSubsequentScreenToScreenCopy s=%d d=%d ww=%d hh=%d\n",
- source, dest, ww, hh);
-#endif
-
-}
-
-static void
-AlpSetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
- unsigned int planemask)
-{
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
- int pitch = pCir->pitch;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupForSolidFill color=%x rop=%x planemask=%x\n",
- color, rop, planemask);
-#endif
- WAIT;
-
- SetupForRop(rop);
-
- switch (pCir -> Chipset)
- {
- case PCI_CHIP_GD7548:
- /* The GD7548 does not (apparently) support solid filling
- directly, it always need an actual source.
- We therefore use it as a pattern fill with a solid
- pattern */
- {
- int source = pAlp->monoPattern8x8;
- /* source = 8x8 solid mono pattern */
- outw(pCir->PIOReg, ((source << 8) & 0xff00) | 0x2C);
- outw(pCir->PIOReg, ((source) & 0xff00) | 0x2D);
- outw(pCir->PIOReg, ((source >> 8) & 0x3f00) | 0x2E);
- /* memset() may not be the fastest */
- memset(pCir->FbBase + pAlp->monoPattern8x8, 0xFF, 8);
- write_mem_barrier();
- break;
- }
- default:
- /* GR33 = 0x04 => does not exist on GD7548 */
- outw(pCir->PIOReg, 0x0433);
- }
-
- /* GR30 = color expansion, pattern copy */
- /* Choses 8bpp / 16bpp color expansion */
- outw(pCir->PIOReg, 0xC030 |((pScrn->bitsPerPixel - 8) << 9));
-
- outw(pCir->PIOReg, ((color << 8) & 0xff00) | 0x01);
- outw(pCir->PIOReg, ((color) & 0xff00) | 0x11);
- outw(pCir->PIOReg, ((color >> 8) & 0xff00) | 0x13);
- outw(pCir->PIOReg, 0x15);
-
- /* Set dest pitch */
- outw(pCir->PIOReg, ((pitch << 8) & 0xff00) | 0x24);
- outw(pCir->PIOReg, ((pitch) & 0x1f00) | 0x25);
-}
-
-static void
-AlpSubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int dest;
- int hh, ww;
- int pitch = pCir->pitch;
-
- ww = (w * pScrn->bitsPerPixel / 8) - 1;
- hh = h - 1;
- dest = y * pitch + x * pScrn->bitsPerPixel / 8;
-
- WAIT;
-
- /* Width */
- outw(pCir->PIOReg, ((ww << 8) & 0xff00) | 0x20);
- outw(pCir->PIOReg, ((ww) & 0x1f00) | 0x21);
- /* Height */
- outw(pCir->PIOReg, ((hh << 8) & 0xff00) | 0x22);
- outw(pCir->PIOReg, ((hh) & 0x0700) | 0x23);
-
- /* dest */
- outw(pCir->PIOReg, ((dest << 8) & 0xff00) | 0x28);
- outw(pCir->PIOReg, ((dest) & 0xff00) | 0x29);
- outw(pCir->PIOReg, ((dest >> 8) & 0x3f00) | 0x2A);
- if (!pCir->chip.alp->autoStart)
- outw(pCir->PIOReg, 0x0231);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentSolidFillRect x=%d y=%d w=%d h=%d\n",
- x, y, w, h);
-#endif
-
-}
-
-static void
-AlpSetupForMono8x8PatternFill(ScrnInfoPtr pScrn,
- int patx, int paty,
- int fg, int bg,
- int rop, unsigned int planemask)
-{
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
- int pitch = pCir->pitch;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupFor8x8PatternFill pattern=%8x%8x"
- "fg=%x bg=%x rop=%x planemask=%x\n",
- patx, paty, fg, bg, rop, planemask);
-#endif
- WAIT;
-
- SetupForRop(rop);
-
- {
- int source = pAlp->monoPattern8x8;
- /* source = 8x8 solid mono pattern */
- outw(pCir->PIOReg, ((source << 8) & 0xff00) | 0x2C);
- outw(pCir->PIOReg, ((source) & 0xff00) | 0x2D);
- outw(pCir->PIOReg, ((source >> 8) & 0x3f00) | 0x2E);
- }
-
- /* GR30 = color expansion, pattern copy */
- /* Choses 8bpp / 16bpp color expansion */
- if (bg == -1)
- { /* transparency requested */
- outw(pCir->PIOReg, 0xC830 |((pScrn->bitsPerPixel - 8) << 9));
-
- bg = ~fg;
- /* transparent color compare */
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x34);
- outw(pCir->PIOReg, ((bg) & 0xff00) | 0x35);
-
- /* transparent color mask = 0 (all bits matters) */
- outw(pCir->PIOReg, 0x38);
- outw(pCir->PIOReg, 0x39);
- }
- else
- {
- outw(pCir->PIOReg, 0xC030 |((pScrn->bitsPerPixel - 8) << 9));
- }
-
- outw(pCir->PIOReg, ((fg << 8) & 0xff00) | 0x01);
- outw(pCir->PIOReg, ((fg) & 0xff00) | 0x11);
-
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x00);
- outw(pCir->PIOReg, ((bg) & 0xff00) | 0x10);
-
- /* Set dest pitch */
- outw(pCir->PIOReg, ((pitch << 8) & 0xff00) | 0x24);
- outw(pCir->PIOReg, ((pitch) & 0x1f00) | 0x25);
-}
-
-static void
-AlpSubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, int patx, int paty,
- int x, int y, int w, int h)
-{
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
- int dest;
- int hh, ww;
- int pitch = pCir->pitch;
-
- ww = (w * pScrn->bitsPerPixel / 8) - 1;
- hh = h - 1;
- dest = y * pitch + x * pScrn->bitsPerPixel / 8;
-
- WAIT;
- /* memcpy() may not be the fastest */
- memcpy(pCir->FbBase + pAlp->monoPattern8x8, &patx, 4);
- memcpy(pCir->FbBase + pAlp->monoPattern8x8 + 4, &paty, 4);
- write_mem_barrier();
-
- /* Width */
- outw(pCir->PIOReg, ((ww << 8) & 0xff00) | 0x20);
- outw(pCir->PIOReg, ((ww) & 0x1f00) | 0x21);
- /* Height */
- outw(pCir->PIOReg, ((hh << 8) & 0xff00) | 0x22);
- outw(pCir->PIOReg, ((hh) & 0x0700) | 0x23);
-
- /* dest */
- outw(pCir->PIOReg, ((dest << 8) & 0xff00) | 0x28);
- outw(pCir->PIOReg, ((dest) & 0xff00) | 0x29);
- outw(pCir->PIOReg, ((dest >> 8) & 0x3f00) | 0x2A);
- if (!pCir->chip.alp->autoStart)
- outw(pCir->PIOReg, 0x0231);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequent8x8PatternFill x=%d y=%d w=%d h=%d\n",
- x, y, w, h);
-#endif
-
-}
-
-#if 0
-/* XF86 does not support byte-padded scanlines */
-
-static void
-AlpSetupForCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int fg, int bg,
- int rop,
- unsigned int planemask)
-{
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
- int pitch = pCir->pitch;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupForCPUToScreenColorExpandFill "
- "fg=%x bg=%x rop=%x planemask=%x\n",
- fg, bg, rop, planemask);
-#endif
- WAIT;
-
- SetupForRop(rop);
-
- /* GR30 = color expansion, CPU->display copy */
- /* Choses 8bpp / 16bpp color expansion */
- if (bg == -1)
- { /* transparency requested */
- outw(pCir->PIOReg, 0x8C30 |((pScrn->bitsPerPixel - 8) << 9));
-
- bg = ~fg;
- /* transparent color compare */
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x34);
- outw(pCir->PIOReg, ((bg) & 0xff00) | 0x35);
-
- /* transparent color mask = 0 (all bits matters) */
- outw(pCir->PIOReg, 0x38);
- outw(pCir->PIOReg, 0x39);
- }
- else
- {
- outw(pCir->PIOReg, 0x8430 |((pScrn->bitsPerPixel - 8) << 9));
- }
-
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x00);
- outw(pCir->PIOReg, ((bg) & 0xff00) | 0x10);
-
- outw(pCir->PIOReg, ((fg << 8) & 0xff00) | 0x01);
- outw(pCir->PIOReg, ((fg) & 0xff00) | 0x11);
-
- /* Set dest pitch */
- outw(pCir->PIOReg, ((pitch << 8) & 0xff00) | 0x24);
- outw(pCir->PIOReg, ((pitch) & 0x1f00) | 0x25);
-}
-
-static void
-AlpSubsequentCPUToScreenColorExpandFill(
- ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- int skipleft)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int dest;
- int hh, ww;
- int pitch = pCir->pitch;
-
- ww = (((w+7) & ~7) * pScrn->bitsPerPixel / 8) - 1;
- hh = h - 1;
- dest = y * pitch + x * pScrn->bitsPerPixel / 8;
-
- WAIT;
-
- /* Width */
- outw(pCir->PIOReg, ((ww << 8) & 0xff00) | 0x20);
- outw(pCir->PIOReg, ((ww) & 0x1f00) | 0x21);
- /* Height */
- outw(pCir->PIOReg, ((hh << 8) & 0xff00) | 0x22);
- outw(pCir->PIOReg, ((hh) & 0x0700) | 0x23);
-
- /* source = CPU ; description of bit 2 of GR30 in the 7548 manual
- says that if we do color expansion we must zero the source
- address registers (GR2C, GR2D, GR2E) */
- outw(pCir->PIOReg, 0x2C);
- outw(pCir->PIOReg, 0x2D);
- outw(pCir->PIOReg, 0x2E);
-
- /* dest */
- outw(pCir->PIOReg, ((dest << 8) & 0xff00) | 0x28);
- outw(pCir->PIOReg, ((dest) & 0xff00) | 0x29);
- outw(pCir->PIOReg, ((dest >> 8) & 0x3f00) | 0x2A);
- if (!pCir->chip.alp->autoStart)
- outw(pCir->PIOReg, 0x0231);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentCPUToScreenColorExpandFill x=%d y=%d w=%d h=%d\n",
- x, y, w, h);
-#endif
-}
-#endif
-
-#if 1
-static void
-AlpSetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
- int fg, int bg,
- int rop,
- unsigned int planemask)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int pitch = pCir->pitch;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupForCPUToScreenColorExpandFill "
- "fg=%x bg=%x rop=%x planemask=%x, bpp=%d\n",
- fg, bg, rop, planemask, pScrn->bitsPerPixel);
-#endif
- WAIT;
-
- SetupForRop(rop);
-
- /* GR30 = color expansion, CPU->display copy */
- /* Choses 8bpp / 16bpp color expansion */
- if (bg == -1)
- { /* transparency requested */
- if (pScrn->bitsPerPixel > 8) /* 16 bpp */
- {
- outw(pCir->PIOReg, 0x9C30);
-
- bg = ~fg;
- /* transparent color compare */
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x34);
- outw(pCir->PIOReg, ((bg) & 0xff00) | 0x35);
- } else /* 8 bpp */
- {
- outw(pCir->PIOReg, 0x8C30);
-
- bg = ~fg;
- /* transparent color compare */
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x34);
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x35);
- }
-
- /* transparent color mask = 0 (all bits matters) */
- outw(pCir->PIOReg, 0x38);
- outw(pCir->PIOReg, 0x39);
- }
- else
- {
- outw(pCir->PIOReg, 0x8430 |((pScrn->bitsPerPixel - 8) << 9));
- }
-
- outw(pCir->PIOReg, ((bg << 8) & 0xff00) | 0x00);
- outw(pCir->PIOReg, ((bg) & 0xff00) | 0x10);
-
- outw(pCir->PIOReg, ((fg << 8) & 0xff00) | 0x01);
- outw(pCir->PIOReg, ((fg) & 0xff00) | 0x11);
-
- /* Set dest pitch */
- outw(pCir->PIOReg, ((pitch << 8) & 0xff00) | 0x24);
- outw(pCir->PIOReg, ((pitch) & 0x1f00) | 0x25);
-}
-
-static void
-AlpSubsequentScanlineCPUToScreenColorExpandFill(
- ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- int skipleft)
-{
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
-
- int pitch = pCir->pitch;
-
- pAlp->SubsequentColorExpandScanlineByteWidth =
- (w * pScrn->bitsPerPixel / 8) - 1;
- pAlp->SubsequentColorExpandScanlineDWordWidth =
- (w + 31) >> 5;
- pAlp->SubsequentColorExpandScanlineDest =
- y * pitch + x * pScrn->bitsPerPixel / 8;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentScanlineCPUToScreenColorExpandFill x=%d y=%d w=%d h=%d skipleft=%d\n",
- x, y, w, h, skipleft);
-#endif
-}
-
-static void
-AlpSubsequentColorExpandScanline(
- ScrnInfoPtr pScrn,
- int bufno)
-{
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
- int dest=pAlp->SubsequentColorExpandScanlineDest;
- int ww=pAlp->SubsequentColorExpandScanlineByteWidth;
- int width=pAlp->SubsequentColorExpandScanlineDWordWidth;
- CARD32* from;
- volatile CARD32 *to;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentColorExpandScanline\n");
-#endif
-
- pAlp->SubsequentColorExpandScanlineDest += pCir->pitch;
-
- to = (CARD32*) pCir->FbBase;
- from = (CARD32*) (pCir->ScanlineColorExpandBuffers[bufno]);
- WAIT_1;
-
- /* Width */
- outw(pCir->PIOReg, ((ww << 8) & 0xff00) | 0x20);
- outw(pCir->PIOReg, ((ww) & 0x1f00) | 0x21);
-
- /* Height = 1 */
- outw(pCir->PIOReg, 0x22);
- outw(pCir->PIOReg, 0x23);
-
- /* source = CPU ; description of bit 2 of GR30 in the 7548 manual
- says that if we do color expansion we must zero the source
- address registers (GR2C, GR2D, GR2E) */
- outw(pCir->PIOReg, 0x2C);
- outw(pCir->PIOReg, 0x2D);
- outw(pCir->PIOReg, 0x2E);
-
- /* dest */
- outw(pCir->PIOReg, ((dest << 8) & 0xff00) | 0x28);
- outw(pCir->PIOReg, ((dest) & 0xff00) | 0x29);
- write_mem_barrier();
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentColorExpandScanline (2)\n");
-#endif
-
- outw(pCir->PIOReg, ((dest >> 8) & 0x3f00) | 0x2A);
- if (!pCir->chip.alp->autoStart)
- outw(pCir->PIOReg, 0x0231);
-
- {
- int i;
- for (i=0; i<width; i++)
- *to=*(from++);
- write_mem_barrier();
- }
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentColorExpandScanline (3)\n");
-#endif
-}
-#endif
-
-static void
-AlpAccelEngineInit(ScrnInfoPtr pScrn)
-{
- CirPtr pCir = CIRPTR(pScrn);
-
- outw(pCir->PIOReg, 0x200E); /* enable writes to gr33 */
- /* Setup things for autostart */
- if (pCir->properties & ACCEL_AUTOSTART) {
- outw(pCir->PIOReg, 0x8031); /* enable autostart */
- pCir->chip.alp->waitMsk = 0x10;
- pCir->chip.alp->autoStart = TRUE;
- } else {
- pCir->chip.alp->waitMsk = 0x1;
- pCir->chip.alp->autoStart = FALSE;
- }
-}
-
-Bool
-AlpXAAInit(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- CirPtr pCir = CIRPTR(pScrn);
- AlpPtr pAlp = ALPPTR(pCir);
- XAAInfoRecPtr XAAPtr;
-
- pCir->InitAccel = AlpAccelEngineInit;
-#ifdef ALP_DEBUG
- ErrorF("AlpXAAInit\n");
-#endif
-
- XAAPtr = XAACreateInfoRec();
- if (!XAAPtr) return FALSE;
-
- /* Pixmap cache */
- XAAPtr->Flags |= LINEAR_FRAMEBUFFER;
- XAAPtr->Sync = AlpSync;
-
- XAAPtr->SetupForScreenToScreenCopy = AlpSetupForScreenToScreenCopy;
- XAAPtr->SubsequentScreenToScreenCopy = AlpSubsequentScreenToScreenCopy;
- XAAPtr->ScreenToScreenCopyFlags =
- NO_TRANSPARENCY | NO_PLANEMASK;
-
- XAAPtr->SetupForSolidFill = AlpSetupForSolidFill;
- XAAPtr->SubsequentSolidFillRect = AlpSubsequentSolidFillRect;
- XAAPtr->SubsequentSolidFillTrap = NULL;
- XAAPtr->SolidFillFlags = NO_PLANEMASK;
-
- if (pCir->Chipset == PCI_CHIP_GD7548) {
- if (pAlp->monoPattern8x8) {
- XAAPtr->SetupForMono8x8PatternFill
- = AlpSetupForMono8x8PatternFill;
- XAAPtr->SubsequentMono8x8PatternFillRect
- = AlpSubsequentMono8x8PatternFillRect;
- XAAPtr->SubsequentMono8x8PatternFillTrap = NULL;
- XAAPtr->Mono8x8PatternFillFlags =
- NO_PLANEMASK |
- HARDWARE_PATTERN_PROGRAMMED_BITS | BIT_ORDER_IN_BYTE_MSBFIRST;
- }
-#if 1
- /* kludge: since XF86 does not support byte-padded
- mono bitmaps (only dword-padded), use the
- scanline version */
- XAAPtr->SetupForScanlineCPUToScreenColorExpandFill =
- AlpSetupForScanlineCPUToScreenColorExpandFill;
- XAAPtr->SubsequentScanlineCPUToScreenColorExpandFill =
- AlpSubsequentScanlineCPUToScreenColorExpandFill;
- XAAPtr->SubsequentColorExpandScanline =
- AlpSubsequentColorExpandScanline;
- {
- const int NumScanlineColorExpandBuffers = 2;
- int i;
- int buffer_size = (pCir->pScrn->virtualX + 31) & ~31;
-#ifdef ALP_DEBUG
- ErrorF("Computing buffers for %d pixel lines\n",
- pCir->pScrn->virtualX);
-#endif
- XAAPtr->NumScanlineColorExpandBuffers =
- NumScanlineColorExpandBuffers;
- XAAPtr->ScanlineColorExpandBuffers =
- pCir->ScanlineColorExpandBuffers = (unsigned char **)
- (malloc(sizeof(unsigned char *) *
- NumScanlineColorExpandBuffers));
- /* TODO: are those mallocs to be freed ? */
-
- for(i=0; i<NumScanlineColorExpandBuffers; i++)
- pCir->ScanlineColorExpandBuffers[i] = (unsigned char *)
- malloc(buffer_size);
- }
- XAAPtr->ScanlineCPUToScreenColorExpandFillFlags =
- NO_PLANEMASK | BIT_ORDER_IN_BYTE_MSBFIRST |
- SCANLINE_PAD_DWORD | ROP_NEEDS_SOURCE;
-#endif
-#if 0
- /* Currently disabled: XF86 sends DWORD-padded data,
- not byte-padded */
- XAAPtr->SetupForCPUToScreenColorExpandFill =
- AlpSetupForCPUToScreenColorExpandFill;
- XAAPtr->SubsequentCPUToScreenColorExpandFill =
- AlpSubsequentCPUToScreenColorExpandFill;
- XAAPtr->ColorExpandBase = pCir->FbBase + 4;
- XAAPtr->CPUToScreenColorExpandFillFlags =
- NO_PLANEMASK | BIT_ORDER_IN_BYTE_MSBFIRST |
- SCANLINE_PAD_DWORD | ROP_NEEDS_SOURCE |
- CPU_TRANSFER_PAD_DWORD | CPU_TRANSFER_BASE_FIXED;
-#endif
- }
-
- AlpAccelEngineInit(pScrn);
-
- pCir->AccelInfoRec = XAAPtr;
-
- if (!XAAInit(pScreen, XAAPtr))
- return FALSE;
-
- return TRUE;
-}
-#endif
diff --git a/src/alp_xaam.c b/src/alp_xaam.c
deleted file mode 100644
index 8e9fd52..0000000
--- a/src/alp_xaam.c
+++ /dev/null
@@ -1,270 +0,0 @@
-/* (c) Itai Nahshon */
-/* #define DEBUG */
-
-#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 "cir.h"
-#define _ALP_PRIVATE_
-#include "alp.h"
-
-#ifdef HAVE_XAA_H
-#ifdef DEBUG
-#define minb(p) \
- (ErrorF("minb(%X)\n", p),\
- MMIO_IN8(pCir->chip.alp->BLTBase, (p)))
-#define moutb(p,v) \
- (ErrorF("moutb(%X, %X)\n", p,v),\
- MMIO_OUT8(pCir->chip.alp->BLTBase, (p),(v)))
-#define vga_minb(p) \
- (ErrorF("minb(%X)\n", p),\
- MMIO_IN8(hwp->MMIOBase, (hwp->MMIOOffset + (p))))
-#define vga_moutb(p,v) \
- { ErrorF("moutb(%X, %X)\n", p,v);\
- MMIO_OUT8(hwp->MMIOBase, (hwp->MMIOOffset + (p)),(v));}
-#define minl(p) \
- (ErrorF("minl(%X)\n", p),\
- MMIO_IN32(pCir->chip.alp->BLTBase, (p)))
-#define moutl(p,v) \
- (ErrorF("moutl(%X, %X)\n", p,v),\
- MMIO_OUT32(pCir->chip.alp->BLTBase, (p),(v)))
-#else
-#define minb(p) MMIO_IN8(pCir->chip.alp->BLTBase, (p))
-#define moutb(p,v) MMIO_OUT8(pCir->chip.alp->BLTBase, (p),(v))
-#define vga_minb(p) MMIO_IN8(hwp->MMIIOBase, (hwp->MMIOOffset + (p)))
-#define vga_moutb(p,v) MMIO_OUT8(hwp->MMIOBase, (hwp->MMIOOffset + (p)),(v))
-#define minl(p) MMIO_IN32(pCir->chip.alp->BLTBase, (p))
-#define moutl(p,v) MMIO_OUT32(pCir->chip.alp->BLTBase, (p),(v))
-#endif
-
-static const CARD8 translated_rop[] =
-{
- /* GXclear */ 0x00U,
- /* GXand */ 0x05U,
- /* GXandreverse */ 0x09U,
- /* GXcopy */ 0x0DU,
- /* GXandinversted */ 0x50U,
- /* GXnoop */ 0x06U,
- /* GXxor */ 0x59U,
- /* GXor */ 0x6DU,
- /* GXnor */ 0x90U,
- /* GXequiv */ 0x95U,
- /* GXinvert */ 0x0BU,
- /* GXorReverse */ 0xADU,
- /* GXcopyInverted */ 0xD0U,
- /* GXorInverted */ 0xD6U,
- /* GXnand */ 0xDAU,
- /* GXset */ 0x0EU
-};
-
-#define WAIT while(minl(0x40) & pCir->chip.alp->waitMsk){};
-#define WAIT_1 while((minl(0x40)) & 0x1){};
-
-static void AlpSync(ScrnInfoPtr pScrn)
-{
- CirPtr pCir = CIRPTR(pScrn);
-#ifdef ALP_DEBUG
- ErrorF("AlpSync mm\n");
-#endif
- WAIT_1;
- return;
-}
-
-static void
-AlpSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop,
- unsigned int planemask, int trans_color)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int pitch = pCir->pitch;
-
- WAIT;
-
- pCir->chip.alp->transRop = translated_rop[rop] << 16;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupForScreenToScreenCopy xdir=%d ydir=%d rop=%x planemask=%x trans_color=%x\n",
- xdir, ydir, rop, planemask, trans_color);
-#endif
- moutl(0x0C, (pitch << 16) | pitch);
-
-}
-
-static void
-AlpSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1, int x2,
- int y2, int w, int h)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int source, dest;
- int hh, ww;
- int decrement = 0;
- int pitch = pCir->pitch;
-
- ww = ((w * pScrn->bitsPerPixel / 8) - 1) & 0x1fff;
- hh = (h - 1) & 0x1fff;
- dest = y2 * pitch + x2 * pScrn->bitsPerPixel / 8;
- source = y1 * pitch + x1 * pScrn->bitsPerPixel / 8;
- if (dest > source) {
- decrement = 1;
- dest += hh * pitch + ww;
- source += hh * pitch + ww;
- }
-
- WAIT;
-
- /* Width / Height */
- moutl(0x08, (hh << 16) | ww);
- /* source */
- moutl(0x14, source & 0x3fffff);
- moutl(0x18, pCir->chip.alp->transRop | decrement);
-
- /* dest */
- write_mem_barrier();
- moutl(0x10, dest & 0x3fffff);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentScreenToScreenCopy x1=%d y1=%d x2=%d y2=%d w=%d h=%d\n",
- x1, y1, x2, y2, w, h);
- ErrorF("AlpSubsequentScreenToScreenCopy s=%d d=%d ww=%d hh=%d\n",
- source, dest, ww, hh);
-#endif
- if (!pCir->chip.alp->autoStart) {
- CARD32 val = minl(0x40);
- moutl(0x40,val | 0x02);
- }
- write_mem_barrier();
-}
-
-
-static void
-AlpSetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
- unsigned int planemask)
-{
- CirPtr pCir = CIRPTR(pScrn);
- int pitch = pCir->pitch;
-
- WAIT;
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSetupForSolidFill color=%x rop=%x planemask=%x\n",
- color, rop, planemask);
-#endif
-
- moutl(0x04, color & 0xffffff);
-
- /* Set dest pitch */
- moutl(0x0C, pitch & 0x1fff);
- moutl(0x18, (((pScrn->bitsPerPixel - 8) << 1))
- | translated_rop[rop] << 16
- | 0x040000C0);
-}
-
-static void
-AlpSubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h)
-{
- int dest;
- int hh, ww;
- CirPtr pCir = CIRPTR(pScrn);
- int pitch = pCir->pitch;
-
- ww = ((w * pScrn->bitsPerPixel / 8) - 1) & 0x1fff;
- hh = (h - 1) & 0x7ff;
- dest = y * pitch + x * pScrn->bitsPerPixel / 8;
-
- WAIT;
-
- /* Width / Height */
- write_mem_barrier();
- moutl(0x08, (hh << 16) | ww);
-
-#ifdef ALP_DEBUG
- ErrorF("AlpSubsequentSolidFillRect x=%d y=%d w=%d h=%d\n",
- x, y, w, h);
-#endif
- /* dest */
- moutl(0x10, (dest & 0x3fffff));
-
- if (!pCir->chip.alp->autoStart) {
- CARD32 val = minl(0x40);
- moutl(0x40, val | 0x02);
- }
- write_mem_barrier();
-}
-
-static void
-AlpAccelEngineInit(ScrnInfoPtr pScrn)
-{
- vgaHWPtr hwp = VGAHWPTR(pScrn);
- CirPtr pCir = CIRPTR(pScrn);
-
- if (pCir->Chipset != PCI_CHIP_GD7548) {
- vga_moutb(0x3CE, 0x0E); /* enable writes to gr33 */
- vga_moutb(0x3CF, 0x20); /* enable writes to gr33 */
- }
- if (pCir->properties & ACCEL_AUTOSTART) {
- moutl(0x40, 0x80); /* enable autostart */
- pCir->chip.alp->waitMsk = 0x10;
- pCir->chip.alp->autoStart = TRUE;
- } else {
- pCir->chip.alp->waitMsk = 0x1;
- pCir->chip.alp->autoStart = FALSE;
- }
-}
-
-Bool
-AlpXAAInitMMIO(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- CirPtr pCir = CIRPTR(pScrn);
- XAAInfoRecPtr XAAPtr;
-
- pCir->InitAccel = AlpAccelEngineInit;
-#ifdef ALP_DEBUG
- ErrorF("AlpXAAInitMM\n");
-#endif
-
- XAAPtr = XAACreateInfoRec();
- if (!XAAPtr) return FALSE;
-
- XAAPtr->Flags |= LINEAR_FRAMEBUFFER;
- XAAPtr->Sync = AlpSync;
-
- XAAPtr->SetupForScreenToScreenCopy = AlpSetupForScreenToScreenCopy;
- XAAPtr->SubsequentScreenToScreenCopy = AlpSubsequentScreenToScreenCopy;
- XAAPtr->ScreenToScreenCopyFlags =
- (NO_TRANSPARENCY | NO_PLANEMASK);
-
- XAAPtr->SetupForSolidFill = AlpSetupForSolidFill;
- XAAPtr->SubsequentSolidFillRect = AlpSubsequentSolidFillRect;
- XAAPtr->SubsequentSolidFillTrap = NULL;
- XAAPtr->SolidFillFlags = NO_PLANEMASK;
-
- switch (pCir->Chipset) {
- case PCI_CHIP_GD5480:
- case PCI_CHIP_GD5446:
- pCir->chip.alp->BLTBase = pCir->IOBase + 0x100;
- break;
- default:
- pCir->chip.alp->BLTBase = pCir->IOBase;
- break;
- }
-
- AlpAccelEngineInit(pScrn);
-
- pCir->AccelInfoRec = XAAPtr;
-
- if (!XAAInit(pScreen, XAAPtr))
- return FALSE;
-
- return TRUE;
-}
-
-#endif
diff --git a/src/cir.h b/src/cir.h
index dba7b65..1d1affa 100644
--- a/src/cir.h
+++ b/src/cir.h
@@ -4,9 +4,6 @@
#define CIR_H
#include "xf86Cursor.h"
-#ifdef HAVE_XAA_H
-#include "xaa.h"
-#endif
#include "xf86i2c.h"
#include <string.h>
#include <stdlib.h>
@@ -48,9 +45,6 @@ typedef struct {
Bool NoAccel;
Bool HWCursor;
Bool UseMMIO;
-#ifdef HAVE_XAA_H
- XAAInfoRecPtr AccelInfoRec;
-#endif
xf86CursorInfoPtr CursorInfoRec;
int DGAnumModes;
DGAModePtr DGAModes;
diff --git a/src/cir_dga.c b/src/cir_dga.c
index bf3a9dd..92d32da 100644
--- a/src/cir_dga.c
+++ b/src/cir_dga.c
@@ -30,10 +30,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86Pci.h"
-#ifdef HAVE_XAA_H
-#include "xaa.h"
-#include "xaalocal.h"
-#endif
#include "vgaHW.h"
#include "cir.h"
#include "dgaproc.h"
@@ -43,15 +39,6 @@ static Bool Cir_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
static Bool Cir_SetMode(ScrnInfoPtr, DGAModePtr);
static int Cir_GetViewport(ScrnInfoPtr);
static void Cir_SetViewport(ScrnInfoPtr, int, int, int);
-#ifdef HAVE_XAA_H
-static void Cir_Sync(ScrnInfoPtr);
-static void Cir_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
-static void Cir_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
-/*
-static void Cir_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int,
- unsigned long);
-*/
-#endif
static
DGAFunctionRec CirDGAFuncs = {
@@ -60,13 +47,7 @@ DGAFunctionRec CirDGAFuncs = {
Cir_SetMode,
Cir_SetViewport,
Cir_GetViewport,
-#ifdef HAVE_XAA_H
- Cir_Sync,
- Cir_FillRect,
- Cir_BlitRect,
-#else
NULL, NULL, NULL,
-#endif
NULL /* Cir_BlitTransRect */
};
@@ -215,50 +196,3 @@ Cir_GetViewport(
return pCir->DGAViewportStatus;
}
-#ifdef HAVE_XAA_H
-static void
-Cir_Sync(
- ScrnInfoPtr pScrn
-){
- CirPtr pCir = CIRPTR(pScrn);
- if(pCir->AccelInfoRec) {
- (*pCir->AccelInfoRec->Sync)(pScrn);
- }
-}
-
-static void
-Cir_FillRect (
- ScrnInfoPtr pScrn,
- int x, int y, int w, int h,
- unsigned long color
-){
- CirPtr pCir = CIRPTR(pScrn);
-
- if(pCir->AccelInfoRec) {
- (*pCir->AccelInfoRec->SetupForSolidFill)(pScrn, color, GXcopy, ~0);
- (*pCir->AccelInfoRec->SubsequentSolidFillRect)(pScrn, x, y, w, h);
- SET_SYNC_FLAG(pCir->AccelInfoRec);
- }
-}
-
-static void
-Cir_BlitRect(
- ScrnInfoPtr pScrn,
- int srcx, int srcy,
- int w, int h,
- int dstx, int dsty
-){
- CirPtr pCir = CIRPTR(pScrn);
-
- if(pCir->AccelInfoRec) {
- int xdir = ((srcx < dstx) && (srcy == dsty)) ? -1 : 1;
- int ydir = (srcy < dsty) ? -1 : 1;
-
- (*pCir->AccelInfoRec->SetupForScreenToScreenCopy)(
- pScrn, xdir, ydir, GXcopy, ~0, -1);
- (*pCir->AccelInfoRec->SubsequentScreenToScreenCopy)(
- pScrn, srcx, srcy, dstx, dsty, w, h);
- SET_SYNC_FLAG(pCir->AccelInfoRec);
- }
-}
-#endif
diff --git a/src/cir_driver.c b/src/cir_driver.c
index b18a7e8..bc1e4b3 100644
--- a/src/cir_driver.c
+++ b/src/cir_driver.c
@@ -19,11 +19,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
-#include "xf86Resources.h"
-#endif
-/* All drivers need this */
-
/* Drivers that need to access the PCI config space directly need this */
#include "xf86Pci.h"
@@ -230,11 +225,7 @@ CIRProbe(DriverPtr drv, int flags)
pPci->device_id, pPci->bus, pPci->domain, pPci->dev, pPci->func);
xf86DrvMsg(0, X_ERROR,
"cirrus: This driver cannot operate until it has been unloaded.\n");
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 13
- xf86UnclaimPciSlot(pPci);
-#else
xf86UnclaimPciSlot(pPci, devSections[0]);
-#endif
free(devSections);
return FALSE;
}
diff --git a/src/lg.h b/src/lg.h
index 4c1ea7b..1ced815 100644
--- a/src/lg.h
+++ b/src/lg.h
@@ -58,10 +58,6 @@ typedef struct {
/* lg_driver.c */
extern LgLineDataRec LgLineData[];
-#ifdef HAVE_XAA_H
-/* lg_xaa.c */
-extern Bool LgXAAInit(ScreenPtr pScreen);
-#endif
/* lg_hwcurs.c */
extern Bool LgHWCursorInit(ScreenPtr pScreen);
diff --git a/src/lg_xaa.h b/src/lg_blit.h
index cd8fc93..b5edd90 100644
--- a/src/lg_xaa.h
+++ b/src/lg_blit.h
@@ -1,8 +1,8 @@
-#ifndef __LG_XAA_H
-#define __LG_XAA_H
+#ifndef __LG_BLIT_H
+#define __LG_BLIT_H
/*
- * XAA acceleration for CL-GD546x -- The Laugna family
+ * bitBLT acceleration for CL-GD546x -- The Laguna family
*
* lg_xaa.h
*
@@ -176,4 +176,4 @@ enum { /* Select transparency compare */
-#endif /* __LG_XAA_H */
+#endif /* __LG_BLIT_H */
diff --git a/src/lg_driver.c b/src/lg_driver.c
index b08c152..5ecdbd7 100644
--- a/src/lg_driver.c
+++ b/src/lg_driver.c
@@ -44,11 +44,6 @@
*/
#include "vgaHW.h"
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
-#include "xf86RAC.h"
-#include "xf86Resources.h"
-#endif
-
/*
* All drivers initialising the SW cursor need this.
*/
@@ -433,12 +428,7 @@ LgPreInit(ScrnInfoPtr pScrn, int flags)
pCir = CIRPTR(pScrn);
pCir->pScrn = pScrn;
-
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12
- pCir->PIOReg = hwp->PIOOffset + 0x3CE;
-#else
- pCir->PIOReg = 0x3CE;
-#endif
+ pCir->PIOReg = 0x3CE; /* was hwp->PIOOffset + 0x3CE */
/*
* Get the entity, and make sure it is PCI.
@@ -974,35 +964,21 @@ LgPreInit(ScrnInfoPtr pScrn, int flags)
xf86SetDpi(pScrn, 0, 0);
/*
- * Load bpp-specific modules.
+ * Load fb module.
*/
- switch (pScrn->bitsPerPixel) {
- case 8:
- case 16:
- case 24:
- case 32:
- if (xf86LoadSubModule(pScrn, "fb") == NULL) {
- LgFreeRec(pScrn);
- return FALSE;
- }
- break;
+ if (xf86LoadSubModule(pScrn, "fb") == NULL) {
+ LgFreeRec(pScrn);
+ return FALSE;
}
/*
- * Load XAA if needed.
+ * Use shadowfb for acceleration.
*/
if (!pCir->NoAccel) {
-#ifdef HAVE_XAA_H
- if (!xf86LoadSubModule(pScrn, "xaa"))
-#else
- if (1)
-#endif
- {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Falling back to shadowfb\n");
- pCir->NoAccel = TRUE;
- pCir->shadowFB = TRUE;
- }
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Falling back to shadowfb\n");
+ pCir->NoAccel = TRUE;
+ pCir->shadowFB = TRUE;
}
/*
@@ -1763,16 +1739,6 @@ LgScreenInit(SCREEN_INIT_ARGS_DECL)
*/
xf86SetBlackWhitePixels(pScreen);
-#ifdef HAVE_XAA_H
- /*
- * Initialize XAA functions.
- */
- if (!pCir->NoAccel) {
- if (!LgXAAInit(pScreen))
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Could not initialize XAA\n");
- }
-#endif
#if 1
pCir->DGAModeInit = LgModeInit;
if (!CirDGAInit(pScreen))
@@ -2046,12 +2012,6 @@ LgCloseScreen(CLOSE_SCREEN_ARGS_DECL)
CirUnmapMem(pCir, pScrn->scrnIndex);
}
-#ifdef HAVE_XAA_H
- if (pCir->AccelInfoRec)
- XAADestroyInfoRec(pCir->AccelInfoRec);
- pCir->AccelInfoRec = NULL;
-#endif
-
if (pCir->CursorInfoRec)
xf86DestroyCursorInfoRec(pCir->CursorInfoRec);
pCir->CursorInfoRec = NULL;
diff --git a/src/lg_hwcurs.c b/src/lg_hwcurs.c
index 51862b2..7d085ec 100644
--- a/src/lg_hwcurs.c
+++ b/src/lg_hwcurs.c
@@ -26,7 +26,7 @@
#include "cir.h"
#define _LG_PRIVATE_
#include "lg.h"
-#include "lg_xaa.h" /* For BitBLT engine macros */
+#include "lg_blit.h" /* For BitBLT engine macros */
/*
#define LG_CURSOR_DEBUG
diff --git a/src/lg_xaa.c b/src/lg_xaa.c
deleted file mode 100644
index 2bb836d..0000000
--- a/src/lg_xaa.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * XAA acceleration for CL-GD546x -- The Laugna family
- *
- * lg_xaa.c
- *
- * (c) 1998 Corin Anderson.
- * corina@the4cs.com
- * Tukwila, WA
- *
- * Much of this code is inspired by the XAA acceleration from XFree86
- * 3.3.3, laguna_acl.c
- */
-
-#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 "cir.h"
-#define _LG_PRIVATE_
-#include "lg.h"
-
-#ifdef HAVE_XAA_H
-#include "lg_xaa.h"
-
-/* Laguna raster operations, source is OP1 and destination is OP0. */
-/* The order in this array is important! */
-static int lgRop[16] = {
- /* Lg Op X name */
-
- 0x00, /* 0 GXclear */
- 0x88, /* S.D GXand */
- 0x44, /* S.~D GXandReverse */
- 0xCC, /* S GXcopy */
- 0x22, /* ~S.D GXandInverted */
- 0xAA, /* D GXnoop */
- 0x66, /* S~=D GXxor */
- 0xEE, /* S+D GXor */
- 0x77, /* ~S.~D GXnor */
- 0x99, /* S=D GXequiv */
- 0x55, /* ~D GXinvert */
- 0xDD, /* S+~D GXorReverse */
- 0x33, /* ~S GXcopyInverted */
- 0xBB, /* ~S+D GXorInverted */
- 0x11, /* ~S+~D GXnand */
- 0xFF /* 1 GXset */
-};
-
-#if 0
-/* Laguna raster operations, source is OP2 and destination is OP0. */
-static int lgPatRop[16] = {
- /* Lg Op X name */
-
- 0x00, /* 0 GXclear */
- 0xA0, /* S.D GXand */
- 0x50, /* S.~D GXandReverse */
- 0xF0, /* S GXcopy */
- 0x0A, /* ~S.D GXandInverted */
- 0xAA, /* D GXnoop */
- 0x5A, /* S~=D GXxor */
- 0xFA, /* S+D GXor */
- 0x05, /* ~S.~D GXnor */
- 0xA5, /* S=D GXequiv */
- 0x55, /* ~D GXinvert */
- 0xF5, /* S+~D GXorReverse */
- 0x0F, /* ~S GXcopyInverted */
- 0xAF, /* ~S+D GXorInverted */
- 0x5F, /* ~S+~D GXnand */
- 0xFF /* 1 GXset */
-};
-#endif
-
-
-static void LgSetBitmask(CirPtr pCir, const CARD32 m);
-static void LgWaitQAvail(CirPtr pCir, int n);
-static CARD32 LgExpandColor(CARD32 color, int bpp);
-static void LgSync(ScrnInfoPtr pScrn);
-static void LgSetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
- unsigned int planemask);
-
-static void LgSubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y,
- int w, int h);
-static void LgSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir,
- int rop, unsigned int planemask,
- int transparency_color);
-static void LgSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
- int x2, int y2, int w, int h);
-
-
-/**************************************************** LgXAAInit *****/
-
-Bool
-LgXAAInit(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- CirPtr pCir = CIRPTR(pScrn);
- XAAInfoRecPtr XAAPtr;
-
- XAAPtr = XAACreateInfoRec();
- if (!XAAPtr)
- return FALSE;
-
- /*
- * Solid color fills.
- */
- XAAPtr->SetupForSolidFill = LgSetupForSolidFill;
- XAAPtr->SubsequentSolidFillRect = LgSubsequentSolidFillRect;
- XAAPtr->SubsequentSolidFillTrap = NULL;
- XAAPtr->SolidFillFlags = 0;
-
- /*
- * Screen-to-screen copies.
- */
- XAAPtr->SetupForScreenToScreenCopy = LgSetupForScreenToScreenCopy;
- XAAPtr->SubsequentScreenToScreenCopy = LgSubsequentScreenToScreenCopy;
- /* Maybe ONLY_LEFT_TO_RIGHT_BITBLT or ONLY_TWO_BITBLT_DIRECTIONS? */
- XAAPtr->ScreenToScreenCopyFlags = ONLY_LEFT_TO_RIGHT_BITBLT;
-
- /*
- * Miscellany.
- */
- XAAPtr->Sync = LgSync;
-
- pCir->AccelInfoRec = XAAPtr;
-
- if (!XAAInit(pScreen, XAAPtr))
- return FALSE;
-
- return TRUE;
-}
-
-/******************************************** Lg XAA helper functions ***/
-
-/*
- * The bitmask is usually all 1's, so it's silly to spend a DWORD write
- * to program the register with the same value each time. Bitmask is
- * about the only register whose value is worth shadowing, so we special-
- * case it.
- */
-static void
-LgSetBitmask(CirPtr pCir, const CARD32 m)
-{
- const LgPtr pLg = LGPTR(pCir);
-
- if (m != pLg->oldBitmask) {
- LgSETBITMASK(m);
- pLg->oldBitmask = m;
- }
-}
-
-/*
- * Return from the function only when there's room somewhere for the
- * upcoming register writes. That means that either PCI retry is enabled
- * (i.e., we let the PCI bus buffer the register writes), or we wait for
- * room in the Laguna's command queue explicitly.
- */
-static void
-LgWaitQAvail(CirPtr pCir, int n)
-{
- if (!0/*lgUsePCIRetry*/) {
- CARD8 qfree;
-
- /* Wait until n entries are open in the command queue */
- do
- qfree = *(volatile CARD8 *)(pCir->IOBase + QFREE);
- while (qfree < n);
- }
-}
-
-
-/* We might want to make this a macro at some point. */
-static CARD32
-LgExpandColor(CARD32 color, int bpp)
-{
- if (8 == bpp)
- color = ((color&0xFF) << 8) | (color&0xFF);
-
- if (8 == bpp || 16 == bpp)
- color = ((color&0xFFFF) << 16) | (color&0xFFFF);
-
- return color;
-}
-
-
-/*************************************************** Lg XAA functions ***/
-
-
-static void
-LgSync(ScrnInfoPtr pScrn)
-{
- const CirPtr pCir = CIRPTR(pScrn);
-#if 0
- LgPtr pLg = LGPTR(pScrn);
-#endif
-
- while (!LgREADY())
- ;
-}
-
-static void
-LgSetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop,
- unsigned int planemask)
-{
-
- const CirPtr pCir = CIRPTR(pScrn);
-
- color = LgExpandColor(color, pScrn->bitsPerPixel);
-
- LgWaitQAvail(pCir, 4);
-
- LgSETBACKGROUND(color);
- LgSETROP(lgRop[rop]);
- LgSETMODE(SCR2SCR | COLORFILL);
- LgSetBitmask(pCir, planemask);
-}
-
-static void
-LgSubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, int w, int h)
-{
- const CirPtr pCir = CIRPTR(pScrn);
-
- /* Wait for room in the command queue. */
- LgWaitQAvail(pCir, 2);
-
- LgSETDSTXY(x, y);
- LgSETEXTENTS(w, h);
-}
-
-static void
-LgSetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir,
- int rop, unsigned int planemask, int transparency_color)
-{
- int bltmode = 0;
- const CirPtr pCir = CIRPTR(pScrn);
- const LgPtr pLg = LGPTR(pCir);
-
- pLg->blitTransparent = (transparency_color != -1);
- pLg->blitYDir = ydir;
-
- LgWaitQAvail(pCir, 4);
-
- /* We set the rop up here because the LgSETROP macro conveniently
- (really -- it is convenient!) clears the transparency bits
- in DRAWDEF. We'll set those bits appropriately later. */
- LgSETROP(lgRop[rop]);
-
- if (ydir < 0)
- bltmode |= BLITUP;
- if (pLg->blitTransparent) {
- /* Gotta extend the transparency_color to the full 32-bit
- size of the register. */
- transparency_color = LgExpandColor(transparency_color,
- pScrn->bitsPerPixel);
-
- bltmode |= COLORTRANS;
- LgSETBACKGROUND(transparency_color);
- LgSETTRANSPARENCY(TRANSEQ);
- } else {
- LgSETTRANSPARENCY(TRANSNONE);
- }
-
- LgSETMODE(SCR2SCR | COLORSRC | bltmode);
- LgSetBitmask(pCir, planemask);
-}
-
-static void
-LgSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
- int x2, int y2, int w, int h)
-{
- const CirPtr pCir = CIRPTR(pScrn);
- const LgPtr pLg = LGPTR(pCir);
-
- /*
- * We have set the flag indicating that xdir must be one,
- * so we can assume that here.
- */
- if (pLg->blitYDir == -1) {
- y1 += h - 1;
- y2 += h - 1;
- }
-
- if (pLg->blitTransparent) {
- /* We're doing a transparent blit. We'll need to point
- OP2 to the color compare mask. */
- LgWaitQAvail(pCir, 4);
- LgSETTRANSMASK(x1, y1);
- } else {
- LgWaitQAvail(pCir, 3);
- }
- LgSETSRCXY(x1, y1);
- LgSETDSTXY(x2, y2);
- LgSETEXTENTS(w, h);
-}
-#endif