diff options
author | Dave Airlie <airlied@redhat.com> | 2012-06-06 12:44:53 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-06-06 12:44:53 +0100 |
commit | 659390ecdb36bb5e65b41a867257f3b9583e45de (patch) | |
tree | ee68bdcb04ce78c4621e9d0cd57d0c33bf64e330 | |
parent | 2228b7f80cc2f2a13dc00fd659b592407f1bbef1 (diff) |
i128: convert to compat API.
convert i128 to new compat API.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/compat-api.h | 99 | ||||
-rw-r--r-- | src/i128.h | 5 | ||||
-rw-r--r-- | src/i128IBMDAC.c | 2 | ||||
-rw-r--r-- | src/i128_driver.c | 62 | ||||
-rw-r--r-- | src/i128accel.c | 2 | ||||
-rw-r--r-- | src/i128dga.c | 8 | ||||
-rw-r--r-- | src/i128exa.c | 8 |
8 files changed, 144 insertions, 43 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index d7ff091..3db1afd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,6 +29,7 @@ i128_drv_la_LDFLAGS = -module -avoid-version i128_drv_ladir = @moduledir@/drivers i128_drv_la_SOURCES = \ + compat-api.h \ i128accel.c \ i128dga.c \ i128exa.c \ 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 + +#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS scrnIndex, pScreen + +#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags +#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0 + +#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags +#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0 + +#define FREE_SCREEN_ARGS_DECL int arg, int flags + +#define VT_FUNC_ARGS_DECL int arg, int flags +#define VT_FUNC_ARGS pScrn->scrnIndex, 0 + +#define XF86_SCRN_ARG(x) ((x)->scrnIndex) +#else +#define SCRN_ARG_TYPE ScrnInfoPtr +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) + +#define SCREEN_ARG_TYPE ScreenPtr +#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) + +#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS pScreen + +#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y +#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y + +#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode +#define SWITCH_MODE_ARGS(arg, m) arg, m + +#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg + +#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg +#define VT_FUNC_ARGS pScrn + +#define XF86_SCRN_ARG(x) (x) + +#endif + +#endif @@ -22,6 +22,7 @@ #include "xf86DDC.h" #include "i128reg.h" +#include "compat-api.h" struct source_format { int render_format; int i128_format; @@ -133,8 +134,8 @@ typedef struct { /* Prototypes */ -void I128AdjustFrame(int scrnIndex, int x, int y, int flags); -Bool I128SwitchMode(int scrnIndex, DisplayModePtr mode, int flags); +void I128AdjustFrame(ADJUST_FRAME_ARGS_DECL); +Bool I128SwitchMode(SWITCH_MODE_ARGS_DECL); Bool I128HWCursorInit(ScreenPtr pScreen); diff --git a/src/i128IBMDAC.c b/src/i128IBMDAC.c index 14acba9..8bd78e9 100644 --- a/src/i128IBMDAC.c +++ b/src/i128IBMDAC.c @@ -50,7 +50,7 @@ Bool I128IBMHWCursorInit(ScrnInfoPtr pScrn) { xf86CursorInfoPtr infoPtr; - ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; + ScreenPtr pScreen = xf86ScrnToScreen(pScrn); I128Ptr pI128 = I128PTR(pScrn); if (!pI128->HWCursor) diff --git a/src/i128_driver.c b/src/i128_driver.c index bdb999e..e416101 100644 --- a/src/i128_driver.c +++ b/src/i128_driver.c @@ -79,19 +79,18 @@ static const OptionInfoRec * I128AvailableOptions(int chipid, int busid); static void I128Identify(int flags); static Bool I128Probe(DriverPtr drv, int flags); static Bool I128PreInit(ScrnInfoPtr pScrn, int flags); -static Bool I128ScreenInit(int Index, ScreenPtr pScreen, int argc, - char **argv); -static Bool I128EnterVT(int scrnIndex, int flags); -static void I128LeaveVT(int scrnIndex, int flags); -static Bool I128CloseScreen(int scrnIndex, ScreenPtr pScreen); +static Bool I128ScreenInit(SCREEN_INIT_ARGS_DECL); +static Bool I128EnterVT(VT_FUNC_ARGS_DECL); +static void I128LeaveVT(VT_FUNC_ARGS_DECL); +static Bool I128CloseScreen(CLOSE_SCREEN_ARGS_DECL); static Bool I128SaveScreen(ScreenPtr pScreen, int mode); static void I128DumpBaseRegisters(ScrnInfoPtr pScrn); static void I128DumpIBMDACRegisters(ScrnInfoPtr pScrn, volatile CARD32 *vrbg); /* Optional functions */ -static void I128FreeScreen(int scrnIndex, int flags); -static ModeStatus I128ValidMode(int scrnIndex, DisplayModePtr mode, +static void I128FreeScreen(FREE_SCREEN_ARGS_DECL); +static ModeStatus I128ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags); static void I128DisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, @@ -1406,9 +1405,10 @@ I128Restore(ScrnInfoPtr pScrn) /* Usually mandatory */ Bool -I128SwitchMode(int scrnIndex, DisplayModePtr mode, int flags) +I128SwitchMode(SWITCH_MODE_ARGS_DECL) { - return I128ModeInit(xf86Screens[scrnIndex], mode); + SCRN_INFO_PTR(arg); + return I128ModeInit(pScrn, mode); } @@ -1442,7 +1442,7 @@ I128ModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode) /* This gets called at the start of each server generation */ static Bool -I128ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +I128ScreenInit(SCREEN_INIT_ARGS_DECL) { ScrnInfoPtr pScrn; I128Ptr pI128; @@ -1454,7 +1454,7 @@ I128ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* * First get the ScrnInfoRec */ - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); pI128 = I128PTR(pScrn); @@ -1477,7 +1477,7 @@ I128ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Darken the screen for aesthetic reasons and set the viewport */ I128SaveScreen(pScreen, SCREEN_SAVER_ON); - pScrn->AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + pScrn->AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); /* * The next step is to setup the screen's visuals, and initialise the @@ -1628,14 +1628,13 @@ I128ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) */ /* Usually mandatory */ void -I128AdjustFrame(int scrnIndex, int x, int y, int flags) +I128AdjustFrame(ADJUST_FRAME_ARGS_DECL) { - ScrnInfoPtr pScrn; + SCRN_INFO_PTR(arg); int Base; I128Ptr pI128; #define I128_PAN_MASK 0x01FFFFE0 - pScrn = xf86Screens[scrnIndex]; pI128 = I128PTR(pScrn); if (pI128->ShowCache && y && pScrn->vtSema) @@ -1661,13 +1660,13 @@ I128AdjustFrame(int scrnIndex, int x, int y, int flags) /* Mandatory */ static Bool -I128EnterVT(int scrnIndex, int flags) +I128EnterVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); if (!I128ModeInit(pScrn, pScrn->currentMode)) return FALSE; - I128AdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0); + I128AdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0)); return TRUE; } @@ -1679,9 +1678,9 @@ I128EnterVT(int scrnIndex, int flags) /* Mandatory */ static void -I128LeaveVT(int scrnIndex, int flags) +I128LeaveVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); I128Restore(pScrn); } @@ -1696,9 +1695,9 @@ I128LeaveVT(int scrnIndex, int flags) /* Mandatory */ static Bool -I128CloseScreen(int scrnIndex, ScreenPtr pScreen) +I128CloseScreen(CLOSE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I128Ptr pI128 = I128PTR(pScrn); if (pScrn->vtSema) { @@ -1718,7 +1717,7 @@ I128CloseScreen(int scrnIndex, ScreenPtr pScreen) pScrn->vtSema = FALSE; pScreen->CloseScreen = pI128->CloseScreen; - return (*pScreen->CloseScreen)(scrnIndex, pScreen); + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); } @@ -1726,16 +1725,17 @@ I128CloseScreen(int scrnIndex, ScreenPtr pScreen) /* Optional */ static void -I128FreeScreen(int scrnIndex, int flags) +I128FreeScreen(FREE_SCREEN_ARGS_DECL) { + SCRN_INFO_PTR(arg); /* * This only gets called when a screen is being deleted. It does not * get called routinely at the end of a server generation. */ if (xf86LoaderCheckSymbol("vgaHWFreeHWRec")) - vgaHWFreeHWRec(xf86Screens[scrnIndex]); - - I128FreeRec(xf86Screens[scrnIndex]); + vgaHWFreeHWRec(pScrn); + + I128FreeRec(pScrn); } @@ -1743,7 +1743,7 @@ I128FreeScreen(int scrnIndex, int flags) /* Optional */ static ModeStatus -I128ValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) +I128ValidMode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags) { int lace; @@ -1775,7 +1775,7 @@ I128SaveScreen(ScreenPtr pScreen, int mode) Bool on; if (pScreen != NULL) - pScrn = xf86Screens[pScreen->myNum]; + pScrn = xf86ScreenToScrn(pScreen); on = xf86IsUnblank(mode); @@ -1945,7 +1945,7 @@ I128getDDC(ScrnInfoPtr pScrn) } /* Read and output monitor info using DDC2 over I2C bus */ if (pI128->I2C) { - MonInfo = xf86DoEDID_DDC2(pScrn->scrnIndex, pI128->I2C); + MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), pI128->I2C); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "I2C Monitor info: %p\n", (void *)MonInfo); xf86PrintEDID(MonInfo); @@ -1954,7 +1954,7 @@ I128getDDC(ScrnInfoPtr pScrn) if (!MonInfo) { /* Read and output monitor info using DDC1 */ if (pI128->ddc1Read) { - MonInfo = xf86DoEDID_DDC1(pScrn->scrnIndex, NULL, pI128->ddc1Read ) ; + MonInfo = xf86DoEDID_DDC1(XF86_SCRN_ARG(pScrn), NULL, pI128->ddc1Read ) ; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "DDC Monitor info: %p\n", (void *)MonInfo); xf86PrintEDID(MonInfo); diff --git a/src/i128accel.c b/src/i128accel.c index 6fb8c0f..ddeecb3 100644 --- a/src/i128accel.c +++ b/src/i128accel.c @@ -416,7 +416,7 @@ Bool I128XaaInit(ScreenPtr pScreen) { XAAInfoRecPtr infoPtr; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I128Ptr pI128 = I128PTR(pScrn); BoxRec AvailFBArea; CARD32 buf_ctrl; diff --git a/src/i128dga.c b/src/i128dga.c index 8bc2fcb..11a150f 100644 --- a/src/i128dga.c +++ b/src/i128dga.c @@ -46,7 +46,7 @@ DGAFunctionRec I128_DGAFuncs = { Bool I128DGAInit(ScreenPtr pScreen) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I128Ptr pI128 = I128PTR(pScrn); DGAModePtr modes = NULL, newmodes = NULL, currentMode; DisplayModePtr pMode, firstMode; @@ -153,7 +153,7 @@ I128_SetMode( pScrn->displayWidth = OldDisplayWidth[index]; - I128SwitchMode(index, pScrn->currentMode, 0); + I128SwitchMode(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode)); pI128->DGAactive = FALSE; } else { if(!pI128->DGAactive) { /* save the old parameters */ @@ -165,7 +165,7 @@ I128_SetMode( pScrn->displayWidth = pMode->bytesPerScanline / (pMode->bitsPerPixel >> 3); - I128SwitchMode(index, pMode->mode, 0); + I128SwitchMode(SWITCH_MODE_ARGS(pScrn, pMode->mode)); } return TRUE; @@ -190,7 +190,7 @@ I128_SetViewport( ){ I128Ptr pI128 = I128PTR(pScrn); - I128AdjustFrame(pScrn->pScreen->myNum, x, y, flags); + I128AdjustFrame(ADJUST_FRAME_ARGS(pScrn, x, y)); pI128->DGAViewportStatus = 0; /* I128AdjustFrame loops until finished */ } diff --git a/src/i128exa.c b/src/i128exa.c index f4e831f..13bba11 100644 --- a/src/i128exa.c +++ b/src/i128exa.c @@ -41,11 +41,11 @@ #include "i128reg.h" #define PI128_FROM_PIXMAP(x) \ - I128Ptr pI128 = I128PTR(xf86Screens[x->drawable.pScreen->myNum]) + I128Ptr pI128 = I128PTR(xf86ScreenToScrn(x->drawable.pScreen)) #define PI128_FROM_SCREEN(x) \ - I128Ptr pI128 = I128PTR(xf86Screens[x->myNum]) + I128Ptr pI128 = I128PTR(xf86ScreenToScrn(x)) #define PI128_FROM_PICTURE(x) \ - I128Ptr pI128 = I128PTR(xf86Screens[x->pDrawable->pScreen->myNum]) + I128Ptr pI128 = I128PTR(xf86ScreenToScrn(x->pDrawable->pScreen)) /* we might be able to do something smarter than this */ #define ENG_PIPELINE_READY() \ @@ -604,7 +604,7 @@ Bool I128ExaInit(ScreenPtr pScreen) { ExaDriverPtr pExa; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); I128Ptr pI128 = I128PTR(pScrn); if (!(pExa = exaDriverAlloc())) { |