xserver-xorg-video-cirrus: Changes to 'upstream-experimental'
.gitignore | 70 +++++++++-
COPYING | 68 +++++++++-
ChangeLog | 67 ----------
Makefile.am | 13 +-
README | 24 +++
configure.ac | 66 ++++++----
man/.cvsignore | 2
man/Makefile.am | 63 +++------
man/cirrus.man | 6
src/.cvsignore | 6
src/CirrusClk.c | 5
src/Makefile.am | 5
src/alp.h | 4
src/alp_driver.c | 336 ++++++++++++++++++++++++++++------------------------
src/alp_hwcurs.c | 7 -
src/alp_i2c.c | 3
src/alp_xaa.c | 8 -
src/alp_xaam.c | 10 -
src/cir.h | 13 +-
src/cir_dga.c | 27 ++--
src/cir_driver.c | 68 +++-------
src/cir_pcirename.h | 51 +++++++
src/cir_shadow.c | 22 +--
src/compat-api.h | 99 +++++++++++++++
src/lg.h | 4
src/lg_driver.c | 196 +++++++++---------------------
src/lg_hwcurs.c | 6
src/lg_i2c.c | 3
src/lg_xaa.c | 8 -
src/lg_xaa.h | 1
30 files changed, 705 insertions(+), 556 deletions(-)
New commits:
commit e443ede15981549ff5f6b01f42c3cb8dc909d778
Author: Dave Airlie <airlied@gmail.com>
Date: Fri Jul 13 14:47:40 2012 +1000
cirrus: handle server with no XAA
this fixes cirrus to work with a server with no XAA module.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index 1cc4d93..1157ab1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,24 @@ 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/alp.h b/src/alp.h
index a182d0c..c09e24b 100644
--- a/src/alp.h
+++ b/src/alp.h
@@ -40,8 +40,10 @@ 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 d1300df..e38c613 100644
--- a/src/alp_driver.c
+++ b/src/alp_driver.c
@@ -1088,7 +1088,12 @@ AlpPreInit(ScrnInfoPtr pScrn, int flags)
/* Load XAA if needed */
if (!pCir->NoAccel) {
- if (!xf86LoadSubModule(pScrn, "xaa")) {
+#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;
@@ -1096,6 +1101,7 @@ AlpPreInit(ScrnInfoPtr pScrn, int flags)
}
}
+
/* Load ramdac if needed */
if (pCir->HWCursor) {
if (!xf86LoadSubModule(pScrn, "ramdac")) {
@@ -1650,10 +1656,12 @@ AlpScreenInit(SCREEN_INIT_ARGS_DECL)
if (!pCir->NoAccel) { /* Initialize XAA 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
@@ -1860,9 +1868,11 @@ 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;
diff --git a/src/alp_xaa.c b/src/alp_xaa.c
index 5a43357..b3ddd64 100644
--- a/src/alp_xaa.c
+++ b/src/alp_xaa.c
@@ -16,6 +16,7 @@
#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); \
@@ -683,4 +684,4 @@ AlpXAAInit(ScreenPtr pScreen)
return TRUE;
}
-
+#endif
diff --git a/src/alp_xaam.c b/src/alp_xaam.c
index 79f621d..8e9fd52 100644
--- a/src/alp_xaam.c
+++ b/src/alp_xaam.c
@@ -17,6 +17,7 @@
#define _ALP_PRIVATE_
#include "alp.h"
+#ifdef HAVE_XAA_H
#ifdef DEBUG
#define minb(p) \
(ErrorF("minb(%X)\n", p),\
@@ -266,7 +267,4 @@ AlpXAAInitMMIO(ScreenPtr pScreen)
return TRUE;
}
-
-
-
-
+#endif
diff --git a/src/cir.h b/src/cir.h
index 3915a31..0a5d403 100644
--- a/src/cir.h
+++ b/src/cir.h
@@ -4,7 +4,9 @@
#define CIR_H
#include "xf86Cursor.h"
+#ifdef HAVE_XAA_H
#include "xaa.h"
+#endif
#include "xf86i2c.h"
#include <string.h>
#include <stdlib.h>
@@ -44,7 +46,9 @@ 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 b841be3..bf3a9dd 100644
--- a/src/cir_dga.c
+++ b/src/cir_dga.c
@@ -30,8 +30,10 @@
#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"
@@ -39,15 +41,17 @@
static Bool Cir_OpenFramebuffer(ScrnInfoPtr, char **, unsigned char **,
int *, int *, int *);
static Bool Cir_SetMode(ScrnInfoPtr, DGAModePtr);
-static void Cir_Sync(ScrnInfoPtr);
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 = {
@@ -56,9 +60,13 @@ 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 */
};
@@ -207,14 +215,12 @@ 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);
}
@@ -255,3 +261,4 @@ Cir_BlitRect(
SET_SYNC_FLAG(pCir->AccelInfoRec);
}
}
+#endif
diff --git a/src/lg.h b/src/lg.h
index 985f634..fa716d6 100644
--- a/src/lg.h
+++ b/src/lg.h
@@ -59,8 +59,10 @@ 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_driver.c b/src/lg_driver.c
index ab613d8..13f222d 100644
--- a/src/lg_driver.c
+++ b/src/lg_driver.c
@@ -797,7 +797,12 @@ LgPreInit(ScrnInfoPtr pScrn, int flags)
/* Load XAA if needed */
if (!pCir->NoAccel) {
- if (!xf86LoadSubModule(pScrn, "xaa")) {
+#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;
@@ -1375,10 +1380,12 @@ LgScreenInit(SCREEN_INIT_ARGS_DECL)
*/
xf86SetBlackWhitePixels(pScreen);
+#ifdef HAVE_XAA_H
if (!pCir->NoAccel) { /* Initialize XAA functions */
if (!LgXAAInit(pScreen))
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Could not initialize XAA\n");
}
+#endif
#if 1
pCir->DGAModeInit = LgModeInit;
if (!CirDGAInit(pScreen))
@@ -1609,9 +1616,11 @@ 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);
diff --git a/src/lg_xaa.c b/src/lg_xaa.c
index 45ecea7..5e6e72e 100644
--- a/src/lg_xaa.c
+++ b/src/lg_xaa.c
@@ -26,6 +26,8 @@
#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. */
@@ -296,4 +298,4 @@ LgSubsequentScreenToScreenCopy(ScrnInfoPtr pScrn, int x1, int y1,
LgSETDSTXY(x2, y2);
LgSETEXTENTS(w, h);
}
-
+#endif
commit 46a9e962c6f33509e89d664115a9a2db51c9b67d
Author: Dave Airlie <airlied@redhat.com>
Date: Mon Jul 2 11:57:59 2012 +0100
cirrus: bump to 1.5.0 for release.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/configure.ac b/configure.ac
index e6e22f5..1cc4d93 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-cirrus],
- [1.4.0],
+ [1.5.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-cirrus])
AC_CONFIG_SRCDIR([Makefile.am])
commit 7ae890b29b12609d410f5558640bb0407b0fdd2d
Author: Johannes Obermayr <johannesobermayr@gmx.de>
Date: Sat Jun 9 11:29:02 2012 +0100
use int scrnIndex instead of int i in macro SCREEN_INIT_ARGS_DECL.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/compat-api.h b/src/compat-api.h
index 6bc946f..205ac59 100644
--- a/src/compat-api.h
+++ b/src/compat-api.h
@@ -46,7 +46,7 @@
#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 SCREEN_INIT_ARGS_DECL int scrnIndex, 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
commit bab8041291ff81c81a98aca385cce561ecddc9d1
Author: Dave Airlie <airlied@redhat.com>
Date: Tue Jun 5 19:35:39 2012 +0100
cirrus: drop xf86PciInfo.
This drops usage of deprecated header file.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/CirrusClk.c b/src/CirrusClk.c
index 6fd6270..a8b24ac 100644
--- a/src/CirrusClk.c
+++ b/src/CirrusClk.c
@@ -17,7 +17,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
-#include "xf86PciInfo.h"
#include "xf86Pci.h"
#include "cir.h"
diff --git a/src/alp_driver.c b/src/alp_driver.c
index 77a5ba9..d1300df 100644
--- a/src/alp_driver.c
+++ b/src/alp_driver.c
@@ -24,13 +24,6 @@
/* Everything using inb/outb, etc needs "compiler.h" */
#include "compiler.h"
-/* Drivers for PCI hardware need this */
-#include "xf86PciInfo.h"
-
-#ifndef PCI_CHIP_GD7556 /* for old xf86PciInfo.h */
-#define PCI_CHIP_GD7556 0x004C
-#endif
-
/* Drivers that need to access the PCI config space directly need this */
#include "xf86Pci.h"
diff --git a/src/alp_hwcurs.c b/src/alp_hwcurs.c
index 97c72e1..afab7a0 100644
--- a/src/alp_hwcurs.c
+++ b/src/alp_hwcurs.c
@@ -9,7 +9,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
diff --git a/src/alp_i2c.c b/src/alp_i2c.c
index 7365215..9341543 100644
--- a/src/alp_i2c.c
+++ b/src/alp_i2c.c
@@ -9,7 +9,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
diff --git a/src/alp_xaa.c b/src/alp_xaa.c
index cc8c0d9..5a43357 100644
--- a/src/alp_xaa.c
+++ b/src/alp_xaa.c
@@ -9,7 +9,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
diff --git a/src/alp_xaam.c b/src/alp_xaam.c
index 42bbb31..79f621d 100644
--- a/src/alp_xaam.c
+++ b/src/alp_xaam.c
@@ -10,7 +10,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
diff --git a/src/cir_dga.c b/src/cir_dga.c
index 44abfd9..b841be3 100644
--- a/src/cir_dga.c
+++ b/src/cir_dga.c
@@ -30,7 +30,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "xaa.h"
#include "xaalocal.h"
#include "vgaHW.h"
diff --git a/src/cir_driver.c b/src/cir_driver.c
index c6967da..5468b6b 100644
--- a/src/cir_driver.c
+++ b/src/cir_driver.c
@@ -24,13 +24,6 @@
#endif
/* All drivers need this */
-/* Drivers for PCI hardware need this */
-#include "xf86PciInfo.h"
-
-#ifndef PCI_CHIP_GD7556 /* for old xf86PciInfo.h */
-#define PCI_CHIP_GD7556 0x004C
-#endif
-
/* Drivers that need to access the PCI config space directly need this */
#include "xf86Pci.h"
diff --git a/src/cir_pcirename.h b/src/cir_pcirename.h
index 669b8fe..c1fb249 100644
--- a/src/cir_pcirename.h
+++ b/src/cir_pcirename.h
@@ -146,4 +146,28 @@ typedef struct pci_device *pciVideoPtr;
#endif /* XSERVER_LIBPCIACCESS */
+#ifndef _XF86_PCIINFO_H
+
+#define PCI_VENDOR_CIRRUS 0x1013
+/* Cirrus Logic */
+#define PCI_CHIP_GD7548 0x0038
+#define PCI_CHIP_GD7555 0x0040
+#define PCI_CHIP_GD7556 0x004C
+#define PCI_CHIP_GD5430 0x00A0
+#define PCI_CHIP_GD5434_4 0x00A4
+#define PCI_CHIP_GD5434_8 0x00A8
+#define PCI_CHIP_GD5436 0x00AC
+#define PCI_CHIP_GD5446 0x00B8
+#define PCI_CHIP_GD5480 0x00BC
+#define PCI_CHIP_GD5462 0x00D0
+#define PCI_CHIP_GD5464 0x00D4
+#define PCI_CHIP_GD5464BD 0x00D5
+#define PCI_CHIP_GD5465 0x00D6
+#define PCI_CHIP_6729 0x1100
+#define PCI_CHIP_6832 0x1110
+#define PCI_CHIP_GD7542 0x1200
+#define PCI_CHIP_GD7543 0x1202
+#define PCI_CHIP_GD7541 0x1204
+
+#endif
#endif /* CIRPCIRENAME_H */
diff --git a/src/cir_shadow.c b/src/cir_shadow.c
index 5dc8d08..a9b425b 100644
--- a/src/cir_shadow.c
+++ b/src/cir_shadow.c
@@ -9,7 +9,6 @@
#include "xf86.h"
#include "xf86_OSproc.h"
-#include "xf86PciInfo.h"
#include "xf86Pci.h"
#include "shadowfb.h"
#include "servermd.h"
diff --git a/src/lg_driver.c b/src/lg_driver.c
index 1ae6765..ab613d8 100644
--- a/src/lg_driver.c
+++ b/src/lg_driver.c
@@ -28,9 +28,6 @@
#include "compiler.h"
-/* Drivers for PCI hardware need this */
-#include "xf86PciInfo.h"
-
/* Drivers that need to access the PCI config space directly need this */
#include "xf86Pci.h"
diff --git a/src/lg_hwcurs.c b/src/lg_hwcurs.c
index 80d1dff..4012db0 100644
--- a/src/lg_hwcurs.c
+++ b/src/lg_hwcurs.c
@@ -20,7 +20,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
diff --git a/src/lg_i2c.c b/src/lg_i2c.c
index 145cc2e..3e8c962 100644
--- a/src/lg_i2c.c
+++ b/src/lg_i2c.c
@@ -9,7 +9,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
diff --git a/src/lg_xaa.c b/src/lg_xaa.c
index 7abfb20..45ecea7 100644
--- a/src/lg_xaa.c
+++ b/src/lg_xaa.c
@@ -20,7 +20,6 @@
#include "compiler.h"
#include "xf86Pci.h"
-#include "xf86PciInfo.h"
#include "vgaHW.h"
commit 9a5e19597be4f5ee4c1030e4a716207789e78668
Author: Dave Airlie <airlied@redhat.com>
Date: Tue Jun 5 19:26:15 2012 +0100
cirrus: convert to compat server API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/src/Makefile.am b/src/Makefile.am
index f2cb24f..c649b3d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,7 +34,8 @@ cirrus_drv_la_SOURCES = \
cir.h \
CirrusClk.c \
cir_shadow.c \
- cir_pcirename.h
+ cir_pcirename.h \
+ compat-api.h
cirrus_alpine_la_LTLIBRARIES = cirrus_alpine.la
cirrus_alpine_la_LDFLAGS = -module -avoid-version
diff --git a/src/alp_driver.c b/src/alp_driver.c
index 2e19461..77a5ba9 100644
--- a/src/alp_driver.c
+++ b/src/alp_driver.c
@@ -92,20 +92,20 @@ static void AlpProbeI2C(int scrnIndex);
/* Mandatory functions */
Bool AlpPreInit(ScrnInfoPtr pScrn, int flags);
-Bool AlpScreenInit(int Index, ScreenPtr pScreen, int argc, char **argv);
-Bool AlpEnterVT(int scrnIndex, int flags);
-void AlpLeaveVT(int scrnIndex, int flags);
-static Bool AlpCloseScreen(int scrnIndex, ScreenPtr pScreen);
+Bool AlpScreenInit(SCREEN_INIT_ARGS_DECL);
+Bool AlpEnterVT(VT_FUNC_ARGS_DECL);
+void AlpLeaveVT(VT_FUNC_ARGS_DECL);
+static Bool AlpCloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool AlpSaveScreen(ScreenPtr pScreen, int mode);
/* Required if the driver supports mode switching */
-Bool AlpSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
+Bool AlpSwitchMode(SWITCH_MODE_ARGS_DECL);
/* Required if the driver supports moving the viewport */
-void AlpAdjustFrame(int scrnIndex, int x, int y, int flags);
+void AlpAdjustFrame(ADJUST_FRAME_ARGS_DECL);
/* Optional functions */
-void AlpFreeScreen(int scrnIndex, int flags);
-ModeStatus AlpValidMode(int scrnIndex, DisplayModePtr mode,
+void AlpFreeScreen(FREE_SCREEN_ARGS_DECL);
+ModeStatus AlpValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode,
Bool verbose, int flags);
/* Internally used functions */
static void AlpSave(ScrnInfoPtr pScrn);
@@ -781,7 +781,7 @@ AlpPreInit(ScrnInfoPtr pScrn, int flags)
}
else
xf86SetDDCproperties(pScrn,xf86PrintEDID(
- xf86DoEDID_DDC2(pScrn->scrnIndex,pCir->I2CPtr1)));
+ xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn),pCir->I2CPtr1)));
/* Probe the possible LCD display */
AlpProbeLCD(pScrn);
@@ -1457,9 +1457,9 @@ AlpRestore(ScrnInfoPtr pScrn)
/* This gets called at the start of each server generation */
Bool
-AlpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+AlpScreenInit(SCREEN_INIT_ARGS_DECL)
{
- ScrnInfoPtr pScrn;
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
vgaHWPtr hwp;
CirPtr pCir;
int i, ret;
@@ -1473,11 +1473,6 @@ AlpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
ErrorF("AlpScreenInit\n");
#endif
- /*
- * First get the ScrnInfoRec
- */
- pScrn = xf86Screens[pScreen->myNum];
-
hwp = VGAHWPTR(pScrn);
pCir = CIRPTR(pScrn);
@@ -1513,7 +1508,7 @@ AlpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
AlpSaveScreen(pScreen, SCREEN_SAVER_ON);
/* Set the viewport */
- AlpAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ AlpAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/*
* The next step is to setup the screen's visuals, and initialise the
@@ -1591,7 +1586,7 @@ AlpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
init_picture = 1;
break;
default:
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"X11: Internal error: invalid bpp (%d) in AlpScreenInit\n",
pScrn->bitsPerPixel);
ret = FALSE;
@@ -1747,9 +1742,10 @@ AlpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
/* Usually mandatory */
Bool
-AlpSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+AlpSwitchMode(SWITCH_MODE_ARGS_DECL)
{
- return AlpModeInit(xf86Screens[scrnIndex], mode);
+ SCRN_INFO_PTR(arg);
+ return AlpModeInit(pScrn, mode);
}
@@ -1759,13 +1755,12 @@ AlpSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
*/
/* Usually mandatory */
void
-AlpAdjustFrame(int scrnIndex, int x, int y, int flags)
+AlpAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn;
+ SCRN_INFO_PTR(arg);
int Base, tmp;
vgaHWPtr hwp;
- pScrn = xf86Screens[scrnIndex];
hwp = VGAHWPTR(pScrn);
Base = ((y * pScrn->displayWidth + x) / 8);
@@ -1803,9 +1798,9 @@ AlpAdjustFrame(int scrnIndex, int x, int y, int flags)
/* Mandatory */
Bool
-AlpEnterVT(int scrnIndex, int flags)
+AlpEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
CirPtr pCir = CIRPTR(pScrn);
Bool ret;
@@ -1833,9 +1828,9 @@ AlpEnterVT(int scrnIndex, int flags)
/* Mandatory */
void
-AlpLeaveVT(int scrnIndex, int flags)
+AlpLeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
vgaHWPtr hwp = VGAHWPTR(pScrn);
#ifdef ALP_DEBUG
ErrorF("AlpLeaveVT\n");
@@ -1860,9 +1855,9 @@ AlpLeaveVT(int scrnIndex, int flags)
/* Mandatory */
static Bool
-AlpCloseScreen(int scrnIndex, ScreenPtr pScreen)
+AlpCloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
vgaHWPtr hwp = VGAHWPTR(pScrn);
CirPtr pCir = CIRPTR(pScrn);
@@ -1891,7 +1886,7 @@ AlpCloseScreen(int scrnIndex, ScreenPtr pScreen)
#endif
pScreen->CloseScreen = pCir->CloseScreen;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
@@ -1899,8 +1894,9 @@ AlpCloseScreen(int scrnIndex, ScreenPtr pScreen)
/* Optional */
void
-AlpFreeScreen(int scrnIndex, int flags)
+AlpFreeScreen(FREE_SCREEN_ARGS_DECL)
{
+ SCRN_INFO_PTR(arg);
#ifdef ALP_DEBUG
ErrorF("AlpFreeScreen\n");
#endif
@@ -1909,8 +1905,8 @@ AlpFreeScreen(int scrnIndex, int flags)
* get called routinely at the end of a server generation.
*/
if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
- vgaHWFreeHWRec(xf86Screens[scrnIndex]);
- AlpFreeRec(xf86Screens[scrnIndex]);
+ vgaHWFreeHWRec(pScrn);
+ AlpFreeRec(pScrn);
}
@@ -1918,7 +1914,7 @@ AlpFreeScreen(int scrnIndex, int flags)
/* Optional */
ModeStatus
-AlpValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+AlpValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
int lace;
diff --git a/src/alp_hwcurs.c b/src/alp_hwcurs.c
index 9891eb4..97c72e1 100644
--- a/src/alp_hwcurs.c
+++ b/src/alp_hwcurs.c
@@ -187,7 +187,7 @@ AlpShowCursor(ScrnInfoPtr pScrn)
static Bool
AlpUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
#ifdef ALP_DEBUG
ErrorF("AlpUseHWCursor\n");
#endif
@@ -200,7 +200,7 @@ AlpUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
Bool
AlpHWCursorInit(ScreenPtr pScreen, int size)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
const CirPtr pCir = CIRPTR(pScrn);
const AlpPtr pAlp = ALPPTR(pCir);
diff --git a/src/alp_xaa.c b/src/alp_xaa.c
index 7a96e1a..cc8c0d9 100644
--- a/src/alp_xaa.c
+++ b/src/alp_xaa.c
@@ -588,7 +588,7 @@ AlpAccelEngineInit(ScrnInfoPtr pScrn)
Bool
AlpXAAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
CirPtr pCir = CIRPTR(pScrn);
AlpPtr pAlp = ALPPTR(pCir);
XAAInfoRecPtr XAAPtr;
diff --git a/src/alp_xaam.c b/src/alp_xaam.c
index 3ecc7de..42bbb31 100644
--- a/src/alp_xaam.c
+++ b/src/alp_xaam.c
@@ -222,7 +222,7 @@ AlpAccelEngineInit(ScrnInfoPtr pScrn)
Bool
AlpXAAInitMMIO(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
CirPtr pCir = CIRPTR(pScrn);
XAAInfoRecPtr XAAPtr;
diff --git a/src/cir.h b/src/cir.h
index 861966d..3915a31 100644
--- a/src/cir.h
+++ b/src/cir.h
@@ -9,6 +9,7 @@
#include <string.h>
#include <stdlib.h>
+#include "compat-api.h"
#include "cir_pcirename.h"
/* Card-specific driver information */
@@ -59,7 +60,7 @@ typedef struct {
int rotate;
int ShadowPitch;
unsigned char * ShadowPtr;
- void (*PointerMoved)(int index, int x, int y);
+ void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y);
int pitch;
unsigned char ** ScanlineColorExpandBuffers;
@@ -85,7 +86,7 @@ extern void cirProbeDDC(ScrnInfoPtr pScrn, int index);
extern Bool CirDGAInit(ScreenPtr pScreen);
/* in cir_shadow.c */
-void cirPointerMoved(int index, int x, int y);
+void cirPointerMoved(SCRN_ARG_TYPE arg, int x, int y);
void cirRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void cirRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void cirRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
diff --git a/src/cir_dga.c b/src/cir_dga.c
index f930231..44abfd9 100644
--- a/src/cir_dga.c
+++ b/src/cir_dga.c
@@ -69,7 +69,7 @@ DGAFunctionRec CirDGAFuncs = {
_X_EXPORT Bool
CirDGAInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
CirPtr pCir = CIRPTR(pScrn);
DGAModePtr modes = NULL, newmodes = NULL, currentMode;
DisplayModePtr pMode, firstMode;
@@ -191,7 +191,7 @@ Cir_SetViewport(
CirPtr pCir = CIRPTR(pScrn);
vgaHWPtr hwp = VGAHWPTR(pScrn);
- pScrn->AdjustFrame(pScrn->pScreen->myNum, x, y, flags);
+ pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y));
while((hwp->readST01(hwp) & 0x08));
while(!(hwp->readST01(hwp) & 0x08));
diff --git a/src/cir_shadow.c b/src/cir_shadow.c
index 0716a64..5dc8d08 100644
--- a/src/cir_shadow.c
+++ b/src/cir_shadow.c
@@ -44,9 +44,9 @@ cirRefreshArea(ScrnInfoPtr pScrn, int num, BoxPtr pbox)
}
_X_EXPORT void
-cirPointerMoved(int index, int x, int y)
+cirPointerMoved(SCRN_ARG_TYPE arg, int x, int y)
{
- ScrnInfoPtr pScrn = xf86Screens[index];
+ SCRN_INFO_PTR(arg);
CirPtr pCir = CIRPTR(pScrn);
int newX, newY;
@@ -58,7 +58,7 @@ cirPointerMoved(int index, int x, int y)
newY = pScrn->pScreen->width - x - 1;
}
- (*pCir->PointerMoved)(index, newX, newY);
+ (*pCir->PointerMoved)(arg, newX, newY);
}
_X_EXPORT void
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..6bc946f
--- /dev/null
+++ b/src/compat-api.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <airlied@redhat.com>
+ */
+
+/* this file provides API compat between server post 1.13 and pre it,
+ it should be reused inside as many drivers as possible */
+#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
Reply to: