summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-06-05 11:02:54 +0100
committerDave Airlie <airlied@redhat.com>2012-06-05 11:02:54 +0100
commit619e99731f772ff8d9d93cd1d6d83de5d450574b (patch)
tree82e1f5ff555862f765a6f9392fce6aa7ea157168
parentd2e16c62b5054f34a439e504bfa261fb71f5d7de (diff)
nouveau: port to compat server API.
This ports to the new server API. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/compat-api.h55
-rw-r--r--src/nv_driver.c66
2 files changed, 84 insertions, 37 deletions
diff --git a/src/compat-api.h b/src/compat-api.h
index 1bb7724..d0f8c1d 100644
--- a/src/compat-api.h
+++ b/src/compat-api.h
@@ -38,4 +38,59 @@
#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 SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
+
+#define XF86_ENABLEDISABLEFB_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 SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+#define FREE_SCREEN_ARGS(x) (x)
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS(flags) pScrn
+
+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
+
+#endif
+
#endif
diff --git a/src/nv_driver.c b/src/nv_driver.c
index cdfb25e..9a7b9c2 100644
--- a/src/nv_driver.c
+++ b/src/nv_driver.c
@@ -40,18 +40,17 @@
static const OptionInfoRec * NVAvailableOptions(int chipid, int busid);
static void NVIdentify(int flags);
static Bool NVPreInit(ScrnInfoPtr pScrn, int flags);
-static Bool NVScreenInit(int Index, ScreenPtr pScreen, int argc,
- char **argv);
-static Bool NVEnterVT(int scrnIndex, int flags);
-static void NVLeaveVT(int scrnIndex, int flags);
-static Bool NVCloseScreen(int scrnIndex, ScreenPtr pScreen);
+static Bool NVScreenInit(SCREEN_INIT_ARGS_DECL);
+static Bool NVEnterVT(VT_FUNC_ARGS_DECL);
+static void NVLeaveVT(VT_FUNC_ARGS_DECL);
+static Bool NVCloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool NVSaveScreen(ScreenPtr pScreen, int mode);
static void NVCloseDRM(ScrnInfoPtr);
/* Optional functions */
-static Bool NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags);
-static void NVAdjustFrame(int scrnIndex, int x, int y, int flags);
-static void NVFreeScreen(int scrnIndex, int flags);
+static Bool NVSwitchMode(SWITCH_MODE_ARGS_DECL);
+static void NVAdjustFrame(ADJUST_FRAME_ARGS_DECL);
+static void NVFreeScreen(FREE_SCREEN_ARGS_DECL);
/* Internally used functions */
@@ -300,9 +299,9 @@ NVPciProbe(DriverPtr drv, int entity_num, struct pci_device *pci_dev,
#define MAX_CHIPS MAXSCREENS
Bool
-NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
+NVSwitchMode(SWITCH_MODE_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
return xf86SetSingleMode(pScrn, mode, RR_Rotate_0);
}
@@ -313,10 +312,9 @@ NVSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
*/
/* Usually mandatory */
void
-NVAdjustFrame(int scrnIndex, int x, int y, int flags)
+NVAdjustFrame(ADJUST_FRAME_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
-
+ SCRN_INFO_PTR(arg);
drmmode_adjust_frame(pScrn, x, y);
}
@@ -327,9 +325,9 @@ NVAdjustFrame(int scrnIndex, int x, int y, int flags)
/* Mandatory */
static Bool
-NVEnterVT(int scrnIndex, int flags)
+NVEnterVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVPtr pNv = NVPTR(pScrn);
int ret;
@@ -355,9 +353,9 @@ NVEnterVT(int scrnIndex, int flags)
/* Mandatory */
static void
-NVLeaveVT(int scrnIndex, int flags)
+NVLeaveVT(VT_FUNC_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVPtr pNv = NVPTR(pScrn);
int ret;
@@ -379,19 +377,14 @@ NVFlushCallback(CallbackListPtr *list, pointer user_data, pointer call_data)
}
static void
-NVBlockHandler (
- int i,
- pointer blockData,
- pointer pTimeout,
- pointer pReadmask
-)
+NVBlockHandler (BLOCKHANDLER_ARGS_DECL)
{
- ScreenPtr pScreen = screenInfo.screens[i];
- ScrnInfoPtr pScrn = xf86Screens[i];
+ SCREEN_PTR(arg);
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrn);
pScreen->BlockHandler = pNv->BlockHandler;
- (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
+ (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS);
pScreen->BlockHandler = NVBlockHandler;
if (pScrn->vtSema && !pNv->NoAccel)
@@ -414,7 +407,7 @@ NVCreateScreenResources(ScreenPtr pScreen)
pScreen->CreateScreenResources = NVCreateScreenResources;
drmmode_fbcon_copy(pScreen);
- if (!NVEnterVT(pScrn->scrnIndex, 0))
+ if (!NVEnterVT(VT_FUNC_ARGS(0)))
return FALSE;
if (!pNv->NoAccel) {
@@ -434,9 +427,9 @@ NVCreateScreenResources(ScreenPtr pScreen)
/* Mandatory */
static Bool
-NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
+NVCloseScreen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrn);
drmmode_screen_fini(pScreen);
@@ -445,7 +438,7 @@ NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
nouveau_dri2_fini(pScreen);
if (pScrn->vtSema) {
- NVLeaveVT(scrnIndex, 0);
+ NVLeaveVT(VT_FUNC_ARGS(0));
pScrn->vtSema = FALSE;
}
@@ -487,21 +480,20 @@ NVCloseScreen(int scrnIndex, ScreenPtr pScreen)
pScrn->vtSema = FALSE;
pScreen->CloseScreen = pNv->CloseScreen;
pScreen->BlockHandler = pNv->BlockHandler;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
/* Free up any persistent data structures */
/* Optional */
static void
-NVFreeScreen(int scrnIndex, int flags)
+NVFreeScreen(FREE_SCREEN_ARGS_DECL)
{
/*
* This only gets called when a screen is being deleted. It does not
* get called routinely at the end of a server generation.
*/
-
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ SCRN_INFO_PTR(arg);
NVPtr pNv = NVPTR(pScrn);
if (!pNv)
@@ -515,7 +507,7 @@ NVFreeScreen(int scrnIndex, int flags)
#define NVPreInitFail(fmt, args...) do { \
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%d: "fmt, __LINE__, ##args); \
- NVFreeScreen(pScrn->scrnIndex, 0); \
+ NVFreeScreen(FREE_SCREEN_ARGS(pScrn)); \
return FALSE; \
} while(0)
@@ -1062,7 +1054,7 @@ NVLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
/* This gets called at the start of each server generation */
static Bool
-NVScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+NVScreenInit(SCREEN_INIT_ARGS_DECL)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
NVPtr pNv = NVPTR(pScrn);
@@ -1166,7 +1158,7 @@ NVScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
}
break;
default:
- xf86DrvMsg(scrnIndex, X_ERROR,
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Internal error: invalid bpp (%d) in NVScreenInit\n",
pScrn->bitsPerPixel);
ret = FALSE;