From f645b6b04e0296aa10e853c7756e45a01b99fd98 Mon Sep 17 00:00:00 2001 From: Aldrik Dunbar Date: Tue, 16 Oct 2012 23:19:09 +0200 Subject: [PATCH] alarm/xf86-video-dove include patch for compatibility with xorg v1.13.0. --- alarm/xf86-video-dove/PKGBUILD | 9 +- ...fb-port-to-compat-api-for-new-server.patch | 475 ++++++++++++++++++ 2 files changed, 481 insertions(+), 3 deletions(-) create mode 100644 alarm/xf86-video-dove/dovefb-port-to-compat-api-for-new-server.patch diff --git a/alarm/xf86-video-dove/PKGBUILD b/alarm/xf86-video-dove/PKGBUILD index 736c1dd2d..534cc91fd 100644 --- a/alarm/xf86-video-dove/PKGBUILD +++ b/alarm/xf86-video-dove/PKGBUILD @@ -6,7 +6,7 @@ buildarch=4 pkgname="xf86-video-dove" pkgver=0.3.4 -pkgrel=6 +pkgrel=7 arch=('armv7h') url="http://www.solid-run.com/mw/index.php/CuBox_Drivers#GPU_Drivers" license=('GPL2') @@ -14,10 +14,12 @@ depends=('marvell-libgfx') makedepends=('pkgconfig' 'xorg-server-devel' 'resourceproto' 'scrnsaverproto') options=('!libtool' '!strip') source=("http://archlinuxarm.org/builder/src/xf86-video-dove-0.3.4.tar.gz" - "xorg.conf") + "xorg.conf" + "dovefb-port-to-compat-api-for-new-server.patch") build() { cd "${srcdir}/${pkgname}-${pkgver}" + patch -p1 -i "${srcdir}/dovefb-port-to-compat-api-for-new-server.patch" CFLAGS="${CFLAGS} -I/usr/include/HAL -g -DMRVL_SUPPORT_RANDR=1 -DMRVL_SUPPORT_EXA=1 -DDUMP_RAW_VIDEO=0 -DMRVL_USE_OFFSCREEN_HEAP=0 -DMRVL_EXA_MODE=2 -DMRVL_EXA_ENABLE_UP_DOWNLOAD=2 -DMRVL_EXA_FORCE_HW_LOAD=0 -DMRVL_EXA_ALLOC_PIXMAP_FROM_SYSTEM=0 -DMRVL_EXA_PERF_PROFILING=0 -DMRVL_EXA_TRACE_FALLBACK=0 -DMRVL_EXA_XBGR_SUPPORT=1 -DMRVL_XV_SUPPORT_RGB_FORMAT=1 -DMRVL_XV_TEX_VIDEO=1 -DMRVL_XV_OVERLAY_VIDEO=1 -DMRVL_XV_DEFERRED_STALL_GPU=1 -DMRVL_XV_USE_FAKE_FENCE_STALL=1 -DMRVL_RANDR_EDID_MODES=1 -DMRVL_CRTC_SUPPORT_ROTATION=1 -DMRVL_PLATFORM_INFO=1" autoreconf -i @@ -37,5 +39,6 @@ package() { } md5sums=('b48a969dfab79a66c1817463380fa89c' - '03294f82a3df0ccdf63f62ea1e4d027a') + '03294f82a3df0ccdf63f62ea1e4d027a' + '0cf362fde4ca25572f8f264fb424e082') diff --git a/alarm/xf86-video-dove/dovefb-port-to-compat-api-for-new-server.patch b/alarm/xf86-video-dove/dovefb-port-to-compat-api-for-new-server.patch new file mode 100644 index 000000000..fb1ec7282 --- /dev/null +++ b/alarm/xf86-video-dove/dovefb-port-to-compat-api-for-new-server.patch @@ -0,0 +1,475 @@ +diff -rupN xf86-video-dove-0.3.4.orig/src/compat-api.h xf86-video-dove-0.3.4/src/compat-api.h +--- xf86-video-dove-0.3.4.orig/src/compat-api.h 1970-01-01 01:00:00.000000000 +0100 ++++ xf86-video-dove-0.3.4/src/compat-api.h 2012-10-16 22:21:27.589861729 +0200 +@@ -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 ++ */ ++ ++/* 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 +diff -rupN xf86-video-dove-0.3.4.orig/src/dovefb.c xf86-video-dove-0.3.4/src/dovefb.c +--- xf86-video-dove-0.3.4.orig/src/dovefb.c 2011-03-07 18:52:09.000000000 +0100 ++++ xf86-video-dove-0.3.4/src/dovefb.c 2012-10-16 22:21:49.705464928 +0200 +@@ -78,9 +78,8 @@ static Bool FBDevPciProbe(DriverPtr drv, + struct pci_device *dev, intptr_t match_data); + #endif + static Bool FBDevPreInit(ScrnInfoPtr pScrn, int flags); +-static Bool FBDevScreenInit(int Index, ScreenPtr pScreen, int argc, +- char **argv); +-static Bool FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen); ++static Bool FBDevScreenInit(SCREEN_INIT_ARGS_DECL); ++static Bool FBDevCloseScreen(CLOSE_SCREEN_ARGS_DECL); + static void * FBDevWindowLinear(ScreenPtr pScreen, CARD32 row, CARD32 offset, int mode, + CARD32 *size, void *closure); + static void FBDevPointerMoved(int index, int x, int y); +@@ -329,9 +328,9 @@ mrvl_scn_validMode(int scrnIndex, Displa + } + + Bool +-mrvl_scn_switchMode(int scrnIndex, DisplayModePtr mode, int flags) ++mrvl_scn_switchMode(SWITCH_MODE_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + Bool ret; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Preparing to switch single mode\n"); +@@ -346,9 +345,9 @@ mrvl_scn_switchMode(int scrnIndex, Displ + extern int mrvl_crtc_set_pos(xf86CrtcPtr crtc, int x, int y); + + void +-mrvl_scn_adjustFrame(int scrnIndex, int x, int y, int flags) ++mrvl_scn_adjustFrame(ADJUST_FRAME_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); + xf86OutputPtr output = config->output[config->compat_output]; + xf86CrtcPtr crtc = output->crtc; +@@ -485,9 +484,9 @@ static Bool mrvlRestoreServerScreen(Scrn + } + + Bool +-mrvl_scn_entervt(int scrnIndex, int flags) ++mrvl_scn_entervt(VT_FUNC_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + MRVLGetPrivateByScrn(pScrn); + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Preparing to enter VT\n"); +@@ -512,10 +511,10 @@ mrvl_scn_entervt(int scrnIndex, int flag + + // + void +-mrvl_scn_leavevt(int scrnIndex, int flags) ++mrvl_scn_leavevt(VT_FUNC_ARGS_DECL) + { ++ SCRN_INFO_PTR(arg); + int i; +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); + MRVLGetPrivateByScrn(pScrn); + +@@ -1252,9 +1251,9 @@ FBDevShadowInit(ScreenPtr pScreen) + + + static Bool +-FBDevScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) ++FBDevScreenInit(SCREEN_INIT_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + FBDevPtr fPtr = FBDEVPTR(pScrn); + VisualPtr visual; + int init_picture = 0; +@@ -1281,7 +1280,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + #endif + + if (NULL == (fPtr->fbmem = fbdevHWMapVidmem(pScrn))) { +- xf86DrvMsg(scrnIndex,X_ERROR,"mapping of video memory" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"mapping of video memory" + " failed\n"); + return FALSE; + } +@@ -1292,17 +1291,17 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + fbdevHWSave(pScrn); + + if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"mode initialization failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"mode initialization failed\n"); + return FALSE; + } + fbdevHWSaveScreen(pScreen, SCREEN_SAVER_ON); +- fbdevHWAdjustFrame(scrnIndex,0,0,0); ++ fbdevHWAdjustFrame(ADJUST_FRAME_ARGS(pScrn, 0, 0)); + + /* mi layer */ + miClearVisualTypes(); + if (pScrn->bitsPerPixel > 8) { + if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed" + " for %d bits per pixel [1]\n", + pScrn->bitsPerPixel); + return FALSE; +@@ -1311,14 +1310,14 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + if (!miSetVisualTypes(pScrn->depth, + miGetDefaultVisualMask(pScrn->depth), + pScrn->rgbBits, pScrn->defaultVisual)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed" + " for %d bits per pixel [2]\n", + pScrn->bitsPerPixel); + return FALSE; + } + } + if (!miSetPixmapDepths()) { +- xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"pixmap depth setup failed\n"); + return FALSE; + } + +@@ -1334,7 +1333,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + (pScrn->bitsPerPixel / 8); + + if (pScrn->displayWidth != pScrn->virtualX) { +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Pitch updated to %d after ModeInit\n", + pScrn->displayWidth); + } +@@ -1367,14 +1366,14 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + case FBDEVHW_PLANES: + if (fPtr->rotate) + { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: rotate not supported for afb\n"); + ret = FALSE; + break; + } + if (fPtr->shadowFB) + { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: shadow framebuffer not supported" + " for afb\n"); + ret = FALSE; +@@ -1399,7 +1398,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + init_picture = 1; + break; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: invalid number of bits per" + " pixel (%d) encountered in" + " FBDevScreenInit()\n", pScrn->bitsPerPixel); +@@ -1410,7 +1409,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + case FBDEVHW_INTERLEAVED_PLANES: + /* This should never happen ... + * we should check for this much much earlier ... */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: interleaved planes are not yet " + "supported by the fbdev driver\n"); + ret = FALSE; +@@ -1418,20 +1417,20 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + case FBDEVHW_TEXT: + /* This should never happen ... + * we should check for this much much earlier ... */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: text mode is not supported by the " + "fbdev driver\n"); + ret = FALSE; + break; + case FBDEVHW_VGA_PLANES: + /* Not supported yet */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: EGA/VGA Planes are not yet " + "supported by the fbdev driver\n"); + ret = FALSE; + break; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: unrecognised hardware type (%d) " + "encountered in FBDevScreenInit()\n", type); + ret = FALSE; +@@ -1490,7 +1489,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + pScrn->vtSema = TRUE; + + if (fPtr->shadowFB && !FBDevShadowInit(pScreen)) { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "shadow framebuffer initialization failed\n"); + return FALSE; + } +@@ -1498,12 +1497,12 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + if (!fPtr->rotate) + FBDevDGAInit(pScrn, pScreen); + else { +- xf86DrvMsg(scrnIndex, X_INFO, "display rotated; disabling DGA\n"); +- xf86DrvMsg(scrnIndex, X_INFO, "using driver rotation; disabling " ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "display rotated; disabling DGA\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "using driver rotation; disabling " + "XRandR\n"); + xf86DisableRandR(); + if (pScrn->bitsPerPixel == 24) +- xf86DrvMsg(scrnIndex, X_WARNING, "rotation might be broken at 24 " ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "rotation might be broken at 24 " + "bits per pixel\n"); + } + +@@ -1521,7 +1520,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + #ifdef USE_AFB + case FBDEVHW_PLANES: + if (!afbCreateDefColormap(pScreen)) { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: afbCreateDefColormap " + "failed in FBDevScreenInit()\n"); + return FALSE; +@@ -1530,29 +1529,29 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + #endif + case FBDEVHW_PACKED_PIXELS: + if (!miCreateDefColormap(pScreen)) { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: miCreateDefColormap failed " + "in FBDevScreenInit()\n"); + return FALSE; + } + break; + case FBDEVHW_INTERLEAVED_PLANES: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: interleaved planes are not yet " + "supported by the fbdev driver\n"); + return FALSE; + case FBDEVHW_TEXT: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: text mode is not supported by " + "the fbdev driver\n"); + return FALSE; + case FBDEVHW_VGA_PLANES: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: EGA/VGA planes are not yet " + "supported by the fbdev driver\n"); + return FALSE; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: unrecognised fbdev hardware type " + "(%d) encountered in FBDevScreenInit()\n", type); + return FALSE; +@@ -1574,7 +1573,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + #if MRVL_SUPPORT_EXA + if (fPtr->UseExa) + { +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Start to initialize vivnate hal module\n"); + fPtr->UseGPU = TRUE; + } +@@ -1588,11 +1587,11 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + // Set up hal layer for Exa and Xv. + if( ! mrvlExaInitHal(pScreen) ) + { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to initialize vivnate hal module\n"); + return FALSE; + } +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Initialize vivnate hal module successfully\n"); + } + #endif +@@ -1647,11 +1646,11 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + /* Initialize Xv support. */ + DovefbXVInitVideo (pScreen); + +- xf86DrvMsg(scrnIndex, X_INFO, "Xv acceleration is loaded successfully\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Xv acceleration is loaded successfully\n"); + } + else + { +- xf86DrvMsg(scrnIndex, X_INFO, "Xv acceleration is disabled\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Xv acceleration is disabled\n"); + } + + /* Initialize hw cursor. */ +@@ -1660,7 +1659,7 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Can not initialize h/w cursor\n"); + return FALSE; + } +- xf86DrvMsg(scrnIndex, X_INFO, "HW cursor init okay.\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "HW cursor init okay.\n"); + } + + /* ----------------------------------------- */ +@@ -1682,18 +1681,18 @@ FBDevScreenInit(int scrnIndex, ScreenPtr + //pScrn->modes = xf86CVTMode(1024, 768, 60.0, FALSE, FALSE); + #endif + +- xf86DrvMsg(scrnIndex, X_INFO, "Leave FBDevScreenInit().\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Leave FBDevScreenInit().\n"); + + return TRUE; + } + + static Bool +-FBDevCloseScreen(int scrnIndex, ScreenPtr pScreen) ++FBDevCloseScreen(CLOSE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + FBDevPtr fPtr = FBDEVPTR(pScrn); +- +- xf86DrvMsg(scrnIndex, X_INFO, "FBDevCloseScreen.\n"); ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "FBDevCloseScreen.\n"); + fbdevHWRestore(pScrn); + fbdevHWUnmapVidmem(pScrn); + if (fPtr->shadow) { +@@ -1750,7 +1749,7 @@ FBDevCloseScreen(int scrnIndex, ScreenPt + /* Restore resolution for fb console */ + mrvlRestoreFBScreen(pScrn); + +- return (*pScreen->CloseScreen)(scrnIndex, pScreen); ++ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); + } + + +@@ -1859,9 +1858,9 @@ FBDevDGASetMode(ScrnInfoPtr pScrn, DGAMo + frameY0 = pScrn->frameY0; + } + +- if (!(*pScrn->SwitchMode)(scrnIdx, pMode, 0)) ++ if (!(*pScrn->SwitchMode)(SWITCH_MODE_ARGS(pScrn, pScrn->currentMode))) + return FALSE; +- (*pScrn->AdjustFrame)(scrnIdx, frameX0, frameY0, 0); ++ (*pScrn->AdjustFrame)(ADJUST_FRAME_ARGS(pScrn, frameX0, frameY0)); + + return TRUE; + } +@@ -1869,7 +1868,7 @@ FBDevDGASetMode(ScrnInfoPtr pScrn, DGAMo + static void + FBDevDGASetViewport(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 +diff -rupN xf86-video-dove-0.3.4.orig/src/dovefb_driver.h xf86-video-dove-0.3.4/src/dovefb_driver.h +--- xf86-video-dove-0.3.4.orig/src/dovefb_driver.h 2011-03-07 18:52:09.000000000 +0100 ++++ xf86-video-dove-0.3.4/src/dovefb_driver.h 2012-10-16 22:21:27.589861730 +0200 +@@ -40,6 +40,8 @@ + + #include + ++#include "compat-api.h" ++ + /* Platform ID*/ + #define MRVL_DOVE 1 + #define MRVL_MMP2 2