.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 <airl...@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 <airl...@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 <airl...@redhat.com> Date: Mon Jul 2 11:57:59 2012 +0100 cirrus: bump to 1.5.0 for release. Signed-off-by: Dave Airlie <airl...@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 <johannesoberm...@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 <airl...@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 <airl...@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 <airl...@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 <airl...@redhat.com> Date: Tue Jun 5 19:26:15 2012 +0100 cirrus: convert to compat server API. Signed-off-by: Dave Airlie <airl...@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 <airl...@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 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1sqlwt-00088d...@vasks.debian.org