summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-01 12:55:19 +0100
committerDave Airlie <airlied@redhat.com>2012-06-01 12:55:19 +0100
commit86f1d894cd3c06a61abbd16e3e73d60db2c98621 (patch)
treea0baa95e47a3307885bbad2fe8edf5a4ed2cabdc
parent378e55e375cbb659d66d6739891553d7a83e6a65 (diff)
downloadxorg-driver-xf86-video-vesa-86f1d894cd3c06a61abbd16e3e73d60db2c98621.tar.gz
vesa: add api 13 compat layer.
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/compat-api.h57
-rw-r--r--src/vesa.c80
2 files changed, 98 insertions, 39 deletions
diff --git a/src/compat-api.h b/src/compat-api.h
index 1bb7724..d4d3882 100644
--- a/src/compat-api.h
+++ b/src/compat-api.h
@@ -38,4 +38,61 @@
#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 SCRN_OR_INDEX_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 SCRN_OR_INDEX_ARG(x) (x)
+
+#endif
+
#endif
diff --git a/src/vesa.c b/src/vesa.c
index ab64060..8ac77da 100644
--- a/src/vesa.c
+++ b/src/vesa.c
@@ -75,17 +75,16 @@ static Bool VESAPciProbe(DriverPtr drv, int entity_num,
struct pci_device *dev, intptr_t match_data);
#endif
static Bool VESAPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool VESAScreenInit(int Index, ScreenPtr pScreen, int argc,
- char **argv);
-static Bool VESAEnterVT(int scrnIndex, int flags);
-static void VESALeaveVT(int scrnIndex, int flags);
-static Bool VESACloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool VESAScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool VESAEnterVT(VT_FUNC_ARGS_DECL);
+static void VESALeaveVT(VT_FUNC_ARGS_DECL);
+static Bool VESACloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool VESASaveScreen(ScreenPtr pScreen, int mode);
-static Bool VESASwitchMode(int scrnIndex, DisplayModePtr pMode, int flags);
+static Bool VESASwitchMode(SWITCH_MODE_ARGS_DECL);
static Bool VESASetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode);
-static void VESAAdjustFrame(int scrnIndex, int x, int y, int flags);
-static void VESAFreeScreen(int scrnIndex, int flags);
+static void VESAAdjustFrame(ADJUST_FRAME_ARGS_DECL);
+static void VESAFreeScreen(FREE_SCREEN_ARGS_DECL);
static void VESAFreeRec(ScrnInfoPtr pScrn);
static VESAPtr VESAGetRec(ScrnInfoPtr pScrn);
@@ -342,11 +341,11 @@ vesaModesCloseEnough(DisplayModePtr edid, DisplayModePtr vbe)
}
static ModeStatus
-VESAValidMode(int scrn, DisplayModePtr p, Bool flag, int pass)
+VESAValidMode(SCRN_ARG_TYPE arg, DisplayModePtr p, Bool flag, int pass)
{
+ SCRN_INFO_PTR(arg);
static int warned = 0;
int found = 0;
- ScrnInfoPtr pScrn = xf86Screens[scrn];
VESAPtr pVesa = VESAGetRec(pScrn);
MonPtr mon = pScrn->monitor;
ModeStatus ret = MODE_BAD;
@@ -357,7 +356,7 @@ VESAValidMode(int scrn, DisplayModePtr p, Bool flag, int pass)
if (pass != MODECHECK_FINAL) {
if (!warned) {
- xf86DrvMsg(scrn, X_WARNING, "VESAValidMode called unexpectedly\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "VESAValidMode called unexpectedly\n");
warned = 1;
}
return MODE_OK;
@@ -740,7 +739,7 @@ VESAPreInit(ScrnInfoPtr pScrn, int flags)
#ifdef HAVE_PANELID
else {
void *panelid = VBEReadPanelID(pVesa->pVbe);
- VBEInterpretPanelID(pScrn->scrnIndex, panelid);
+ VBEInterpretPanelID(SCRN_OR_INDEX_ARG(pScrn), panelid);
free(panelid);
}
#endif
@@ -918,19 +917,19 @@ vesaCreateScreenResources(ScreenPtr pScreen)
}
static void
-vesaEnableDisableFBAccess(int scrnIndex, Bool enable)
+vesaEnableDisableFBAccess(SCRN_ARG_TYPE arg, Bool enable)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
VESAPtr pVesa = VESAGetRec(pScrn);
pVesa->accessEnabled = enable;
- pVesa->EnableDisableFBAccess(scrnIndex, enable);
+ pVesa->EnableDisableFBAccess(arg, enable);
}
static Bool
-VESAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+VESAScreenInit(SCREEN_INIT_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VESAPtr pVesa = VESAGetRec(pScrn);
VisualPtr visual;
VbeModeInfoBlock *mode;
@@ -988,7 +987,7 @@ VESAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
return (FALSE);
/* set the viewport */
- VESAAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ VESAAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
/* Blank the screen for aesthetic reasons. */
VESASaveScreen(pScreen, SCREEN_SAVER_ON);
@@ -1117,30 +1116,31 @@ VESAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
}
static Bool
-VESAEnterVT(int scrnIndex, int flags)
+VESAEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
if (!VESASetMode(pScrn, pScrn->currentMode))
return FALSE;
- VESAAdjustFrame(scrnIndex, pScrn->frameX0, pScrn->frameY0, 0);
+ VESAAdjustFrame(ADJUST_FRAME_ARGS(pScrn, pScrn->frameX0, pScrn->frameY0));
return TRUE;
}
static void
-VESALeaveVT(int scrnIndex, int flags)
+VESALeaveVT(VT_FUNC_ARGS_DECL)
{
- VESASaveRestore(xf86Screens[scrnIndex], MODE_RESTORE);
+ SCRN_INFO_PTR(arg);
+ VESASaveRestore(pScrn, MODE_RESTORE);
}
static Bool
-VESACloseScreen(int scrnIndex, ScreenPtr pScreen)
+VESACloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
VESAPtr pVesa = VESAGetRec(pScrn);
if (pScrn->vtSema) {
- VESASaveRestore(xf86Screens[scrnIndex], MODE_RESTORE);
+ VESASaveRestore(pScrn, MODE_RESTORE);
if (pVesa->savedPal)
VBESetGetPaletteData(pVesa->pVbe, TRUE, 0, 256,
pVesa->savedPal, FALSE, TRUE);
@@ -1160,21 +1160,21 @@ VESACloseScreen(int scrnIndex, ScreenPtr pScreen)
pScrn->EnableDisableFBAccess = pVesa->EnableDisableFBAccess;
pScreen->CreateScreenResources = pVesa->CreateScreenResources;
pScreen->CloseScreen = pVesa->CloseScreen;
- return pScreen->CloseScreen(scrnIndex, pScreen);
+ return pScreen->CloseScreen(CLOSE_SCREEN_ARGS);
}
static Bool
-VESASwitchMode(int scrnIndex, DisplayModePtr pMode, int flags)
+VESASwitchMode(SWITCH_MODE_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
VESAPtr pVesa = VESAGetRec(pScrn);
Bool ret, disableAccess = pVesa->ModeSetClearScreen && pVesa->accessEnabled;
if (disableAccess)
- pScrn->EnableDisableFBAccess(scrnIndex,FALSE);
- ret = VESASetMode(xf86Screens[scrnIndex], pMode);
+ pScrn->EnableDisableFBAccess(SCRN_OR_INDEX_ARG(pScrn),FALSE);
+ ret = VESASetMode(pScrn, mode);
if (disableAccess)
- pScrn->EnableDisableFBAccess(scrnIndex,TRUE);
+ pScrn->EnableDisableFBAccess(SCRN_OR_INDEX_ARG(pScrn),TRUE);
return ret;
}
@@ -1235,17 +1235,19 @@ VESASetMode(ScrnInfoPtr pScrn, DisplayModePtr pMode)
}
static void
-VESAAdjustFrame(int scrnIndex, int x, int y, int flags)
+VESAAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- VESAPtr pVesa = VESAGetRec(xf86Screens[scrnIndex]);
+ SCRN_INFO_PTR(arg);
+ VESAPtr pVesa = VESAGetRec(pScrn);
VBESetDisplayStart(pVesa->pVbe, x, y, TRUE);
}
static void
-VESAFreeScreen(int scrnIndex, int flags)
+VESAFreeScreen(FREE_SCREEN_ARGS_DECL)
{
- VESAFreeRec(xf86Screens[scrnIndex]);
+ SCRN_INFO_PTR(arg);
+ VESAFreeRec(pScrn);
}
static Bool
@@ -1735,9 +1737,9 @@ VESADGASetMode(ScrnInfoPtr pScrn, DGAModePtr pDGAMode)
frameY0 = pScrn->frameY0;
}
- if (!(*pScrn->SwitchMode)(scrnIdx, pMode, 0))
+ if (!(*pScrn->SwitchMode)(SWITCH_MODE_ARGS(pScrn, pMode)))
return (FALSE);
- (*pScrn->AdjustFrame)(scrnIdx, frameX0, frameY0, 0);
+ (*pScrn->AdjustFrame)(ADJUST_FRAME_ARGS(pScrn, frameX0, frameY0));
return (TRUE);
}
@@ -1745,7 +1747,7 @@ VESADGASetMode(ScrnInfoPtr pScrn, DGAModePtr pDGAMode)
static void
VESADGASetViewport(ScrnInfoPtr pScrn, int x, int y, int flags)
{
- (*pScrn->AdjustFrame)(pScrn->pScreen->myNum, x, y, flags);
+ (*pScrn->AdjustFrame)(ADJUST_FRAME_ARGS(pScrn, x, y));
}
static int