--- /dev/null
+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 <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
+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 <linux/fb.h>
+
++#include "compat-api.h"
++
+ /* Platform ID*/
+ #define MRVL_DOVE 1
+ #define MRVL_MMP2 2