summaryrefslogtreecommitdiff
path: root/meta-emenlow/packages/xserver-xorg-video-psb
diff options
context:
space:
mode:
authorJeff Dike <jdike@x86_64.user-mode-linux.org>2010-07-21 17:31:45 -0400
committerRichard Purdie <rpurdie@linux.intel.com>2010-07-21 22:39:43 +0100
commite8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304 (patch)
treec8ed16e490e2e30de292c8a10eedb084d5abdea8 /meta-emenlow/packages/xserver-xorg-video-psb
parent0c3b1aa0a5461c9b5f3833feb091f7c8a459ca9b (diff)
downloadopenembedded-core-e8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304.tar.gz
openembedded-core-e8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304.tar.bz2
openembedded-core-e8e3ac9b1e0e4342fc3a6d7b435ddaf93f274304.zip
meta-emenlow: Layer for eMenlow-based systems.
This layer provides a kernel suitable for booting on eMenlow-based systems, plus support for Poulsbo graphics. The Poulsbo support includes a kernel patch for the graphics driver, a couple of libraries, the 2D and 3D X drivers, and a properly configured X server. The closed portions of this support are in the 3D driver, xpsb-glx. This package contains the binaries for the libraries that communicate with the kernel driver and a mesa library which uses those libraries. There is a README in meta-emenlow/ describing how to enable this layer. Where possible, the recipes use bitbake's new .bbappend facility in order to avoid copying recipes from meta/. There are checksums and license information for all of the new packages. Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Diffstat (limited to 'meta-emenlow/packages/xserver-xorg-video-psb')
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch12
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch20
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch35
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch17
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch23
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch12
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch11
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch85
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch11
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch75
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch19
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch84
-rw-r--r--meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb31
13 files changed, 435 insertions, 0 deletions
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch
new file mode 100644
index 0000000000..47da3bce04
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/01_disable_lid_timer.patch
@@ -0,0 +1,12 @@
+diff -Nurp xserver-xorg-video-psb-0.30.0+repack.orig/src/psb_driver.c xserver-xorg-video-psb-0.30.0+repack/src/psb_driver.c
+--- xserver-xorg-video-psb-0.30.0+repack.orig/src/psb_driver.c 2009-04-17 00:00:46.000000000 +0200
++++ xserver-xorg-video-psb-0.30.0+repack/src/psb_driver.c 2009-08-06 18:13:43.000000000 +0200
+@@ -753,7 +753,7 @@ psbInitOutputs(ScrnInfoPtr pScrn)
+
+ xf86GetOptValBool(pPsb->options, OPTION_NOPANEL, &pPsb->noPanel);
+
+- pPsb->lidTimer = TRUE;
++ pPsb->lidTimer = FALSE;
+ xf86GetOptValBool(pPsb->options, OPTION_LIDTIMER, &pPsb->lidTimer);
+
+ xf86GetOptValBool(pPsb->options, OPTION_NOFITTING, &pPsb->noFitting);
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch
new file mode 100644
index 0000000000..98ffa27199
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/dri-h.patch
@@ -0,0 +1,20 @@
+Index: xserver-xorg-video-psb-0.32.1/configure.ac
+===================================================================
+--- xserver-xorg-video-psb-0.32.1.orig/configure.ac
++++ xserver-xorg-video-psb-0.32.1/configure.ac
+@@ -75,12 +75,9 @@ AM_CONDITIONAL(BUILD_EXA, [test "$build_
+ AC_HEADER_STDC
+
+ if test "$DRI" != no; then
+- AC_CHECK_FILE([${sdkdir}/dri.h],
+- [have_dri_h="yes"], [have_dri_h="no"])
+- AC_CHECK_FILE([${sdkdir}/sarea.h],
+- [have_sarea_h="yes"], [have_sarea_h="no"])
+- AC_CHECK_FILE([${sdkdir}/dristruct.h],
+- [have_dristruct_h="yes"], [have_dristruct_h="no"])
++ have_dri_h="yes"
++ have_sarea_h="yes"
++ have_dristruct_h="yes"
+ fi
+
+ AC_MSG_CHECKING([whether to include DRI support])
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch
new file mode 100644
index 0000000000..6065fa5cac
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_mixed.patch
@@ -0,0 +1,35 @@
+--- xserver-xorg-video-psb-0.32.1/src/psb_accel.c.orig 2010-07-04 19:27:48.691227698 +0200
++++ xserver-xorg-video-psb-0.32.1/src/psb_accel.c 2010-07-04 19:27:15.338230809 +0200
+@@ -308,6 +308,14 @@
+ }
+ #endif
+
++static void*
++psbExaCreatePixmap(ScreenPtr pScreen, int w, int h, int depth, int usage_hint, int bpp, int* new_pitch )
++{
++ return NULL;
++}
++static void
++psbExaDestroyPixmap(ScreenPtr pScreen, void* driverPriv ){
++}
+ static Bool
+ psbExaPixmapIsOffscreen(PixmapPtr p)
+ {
+@@ -1313,6 +1321,7 @@
+ pExa->pixmapOffsetAlign = 8;
+ pExa->pixmapPitchAlign = 32 * 4;
+ pExa->flags = EXA_OFFSCREEN_PIXMAPS;
++ pExa->flags |= EXA_HANDLES_PIXMAPS | EXA_MIXED_PIXMAPS;
+ pExa->maxX = 2047;
+ pExa->maxY = 2047;
+ pExa->WaitMarker = psbExaWaitMarker;
+@@ -1328,6 +1337,9 @@
+ pExa->Composite = psbExaSuperComposite;
+ pExa->DoneComposite = psbExaDoneComposite;
+ pExa->PixmapIsOffscreen = psbExaPixmapIsOffscreen;
++ pExa->CreatePixmap = NULL;
++ pExa->CreatePixmap2 = psbExaCreatePixmap;
++ pExa->DestroyPixmap = psbExaDestroyPixmap;
+ pExa->PrepareAccess = psbExaPrepareAccess;
+ pExa->FinishAccess = psbExaFinishAccess;
+ pExa->UploadToScreen = psbExaUploadToScreen;
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch
new file mode 100644
index 0000000000..34798c07e9
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/psb_xvtempfix.patch
@@ -0,0 +1,17 @@
+--- xserver-xorg-video-psb-0.36.0-ref/src/psb_video.c 2010-06-07 22:17:46.302760345 +0200
++++ xserver-xorg-video-psb-0.32/src/psb_video.c 2010-06-10 17:29:23.400003434 +0200
+@@ -686,8 +684,13 @@
+ * coordinates) to the backing pixmap.
+ */
+
+- while (!psbExaGetSuperOffset(pPixmap, &pre_add, &dstBuf))
++ if(!psbExaGetSuperOffset(pPixmap, &pre_add, &dstBuf)){
+ exaMoveInPixmap(pPixmap);
++ if(!psbExaGetSuperOffset(pPixmap, &pre_add, &dstBuf)){
++ return FALSE;
++ }
++ }
++
+
+ dst.buffer = mmKernelBuf(dstBuf);
+ dst.offset = pre_add;
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch
new file mode 100644
index 0000000000..b201d7e314
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/stubs.patch
@@ -0,0 +1,23 @@
+diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_driver.c.orig xserver-xorg-video-psb-0.31.0/src/psb_driver.c
+--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c.orig 2010-04-30 08:58:06.798598457 +0200
++++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2010-04-30 09:03:04.186597975 +0200
+@@ -643,6 +643,19 @@ psbPreInitDRI(ScrnInfoPtr pScrn)
+ return TRUE;
+ }
+
++/* removed in Xserver 1.7, add it again so that proprietary Xpsb can be loaded */
++void
++xf86AddModuleInfo(pointer info, pointer module)
++{
++}
++
++/* removed in mesa, add it again so that proprietary Xpsb can be loaded */
++typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...);
++void
++_glapi_set_warning_func( _glapi_warning_func func )
++{
++}
++
+ static Bool
+ psbPreInitXpsb(ScrnInfoPtr pScrn)
+ {
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch
new file mode 100644
index 0000000000..2c68805871
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/visibility.patch
@@ -0,0 +1,12 @@
+Index: xserver-xorg-video-psb-0.32.1/configure.ac
+===================================================================
+--- xserver-xorg-video-psb-0.32.1.orig/configure.ac
++++ xserver-xorg-video-psb-0.32.1/configure.ac
+@@ -107,6 +107,7 @@ AC_DEFINE(INTEL_PSB_DRIVER, 1, [Compatib
+
+ AC_SUBST([DRI_CFLAGS])
+ AC_SUBST([XORG_CFLAGS])
++XORG_CFLAGS = `echo $XORG_CFLAGS | sed 's/hidden/default/'`
+ AC_SUBST([moduledir])
+
+ DRIVER_NAME=psb
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch
new file mode 100644
index 0000000000..a73a493ec1
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-ignoreacpi.patch
@@ -0,0 +1,11 @@
+--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2009-04-17 11:22:26.000000000 -0700
++++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c.new 2009-08-14 15:41:35.047596131 -0700
+@@ -909,7 +909,7 @@
+ xf86DrvMsg(pScrn->scrnIndex, from, "Use %s cursor.\n",
+ pPsb->sWCursor ? "software" : "hardware");
+
+- pPsb->ignoreACPI = FALSE;
++ pPsb->ignoreACPI = TRUE;
+ from =
+ xf86GetOptValBool(pPsb->options, OPTION_IGNORE_ACPI,
+ &pPsb->ignoreACPI)
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch
new file mode 100644
index 0000000000..defed50363
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xorg-x11-drv-psb-0.31.0-xserver17.patch
@@ -0,0 +1,85 @@
+--- xserver-xorg-video-psb-0.31.0/src/Xpsb.h 2009-04-17 11:22:26.000000000 -0700
++++ xserver-xorg-video-psb-0.31.0/src/Xpsb.h.new 2009-08-28 09:24:16.333677591 -0700
+@@ -38,7 +38,9 @@
+ #include "xf86drm.h"
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
++#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
+ #include "xf86Resources.h"
++#endif
+ #include "compiler.h"
+
+ #define XPSB_VOFFSET_X 0
+--- xserver-xorg-video-psb-0.31.0/src/psb_driver.h 2009-04-17 11:22:25.000000000 -0700
++++ xserver-xorg-video-psb-0.31.0/src/psb_driver.h.new 2009-08-28 09:24:11.822679667 -0700
+@@ -34,7 +34,6 @@
+
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
+-#include "xf86Resources.h"
+ #include "compiler.h"
+ #include "xf86PciInfo.h"
+ #include "vgaHW.h"
+@@ -46,8 +45,10 @@
+ #include "xf86int10.h"
+ #include "mibank.h"
+ #include "dgaproc.h"
++#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
+ #include "xf86Resources.h"
+ #include "xf86RAC.h"
++#endif
+ #include "fb.h"
+ #include "xaa.h"
+ #include "xf86xv.h"
+--- xserver-xorg-video-psb-0.31.0/src/i830_i2c.c 2009-04-17 11:22:24.000000000 -0700
++++ xserver-xorg-video-psb-0.31.0/src/i830_i2c.c.new 2009-08-28 09:33:06.789804272 -0700
+@@ -31,8 +31,10 @@
+
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
++#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
+ #include "xf86Resources.h"
+ #include "xf86RAC.h"
++#endif
+ #include "xf86cmap.h"
+ #include "compiler.h"
+ #include "mibstore.h"
+--- xserver-xorg-video-psb-0.31.0/src/psb_video.c 2009-04-17 11:22:26.000000000 -0700
++++ xserver-xorg-video-psb-0.31.0/src/psb_video.c.new 2009-08-28 09:35:03.874805663 -0700
+@@ -36,7 +36,9 @@
+
+ #include "xf86.h"
+ #include "xf86_OSproc.h"
++#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
+ #include "xf86Resources.h"
++#endif
+ #include "compiler.h"
+
+ #include "xf86xv.h"
+--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2009-04-17 11:22:26.000000000 -0700
++++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c.new 2009-08-28 10:30:32.325553685 -0700
+@@ -317,7 +317,7 @@
+ * This data is accessed by the loader. The name must be the module name
+ * followed by "ModuleData".
+ */
+-XF86ModuleData psbModuleData = { &psbVersionRec, psbSetup, NULL };
++_X_EXPORT XF86ModuleData psbModuleData = { &psbVersionRec, psbSetup, NULL };
+
+ static pointer
+ psbSetup(pointer Module, pointer Options, int *ErrorMajor, int *ErrorMinor)
+@@ -1023,11 +1023,13 @@
+
+ PSB_DEBUG(scrnIndex, 3, "Initializing device\n");
+
++#ifndef XSERVER_LIBPCIACCESS
+ if (xf86RegisterResources(pDevice->pEnt->index, NULL, ResExclusive)) {
+ xf86DrvMsg(scrnIndex, X_ERROR,
+ "Could not registrer device. Resource conflict.\n");
+ return FALSE;
+ }
++#endif
+
+ if (!xf86LoadSubModule(pDevice->pScrns[0], "vgahw"))
+ return FALSE;
+
+
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch
new file mode 100644
index 0000000000..5137a59041
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-assert.patch
@@ -0,0 +1,11 @@
+diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.assert xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c
+--- xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.assert 2010-04-26 13:40:50.000000000 +0200
++++ xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c 2010-04-26 13:48:28.000000000 +0200
+@@ -30,6 +30,7 @@
+ #include "xf86mm.h"
+ #include "xf86drm.h"
+ #include "stdio.h"
++#include <assert.h>
+
+ /*
+ * This is a simple wrapper around libdrm's buffer interface to be used
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch
new file mode 100644
index 0000000000..ca811b6967
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-comment_unused.patch
@@ -0,0 +1,75 @@
+diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.comment_unused xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c
+--- xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c.comment_unused 2009-04-17 20:22:26.000000000 +0200
++++ xserver-xorg-video-psb-0.31.0/libmm/mm_drm.c 2010-04-26 13:40:50.000000000 +0200
+@@ -277,6 +277,7 @@ createFence(struct _MMManager *mm,
+ return &dFence->mf;
+ }
+
++/*
+ static void
+ fenceDestroy(struct _MMFence *mf)
+ {
+@@ -288,6 +289,7 @@ fenceDestroy(struct _MMFence *mf)
+ assert(ret == 0);
+ free(dFence);
+ }
++*/
+
+ static int
+ fenceEmit(struct _MMFence *mf, unsigned fence_class,
+@@ -369,7 +371,7 @@ mmCreateDRM(int drmFD)
+ mm->fenceSignaled = fenceSignaled;
+ mm->fenceWait = fenceWait;
+ mm->fenceError = NULL;
+- mm->fenceDestroy = fenceDestroy;
++ /* mm->fenceDestroy = fenceDestroy; */
+ mm->destroy = destroy;
+ return mm;
+
+diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h.comment_unused xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h
+--- xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h.comment_unused 2009-04-17 20:22:26.000000000 +0200
++++ xserver-xorg-video-psb-0.31.0/libmm/mm_interface.h 2010-04-26 13:45:22.000000000 +0200
+@@ -141,7 +141,7 @@ typedef struct _MMManager
+ int (*fenceWait) (struct _MMFence * mf, unsigned flushMask,
+ unsigned flags);
+ unsigned (*fenceError) (struct _MMFence * mf);
+- void (*fenceDestroy) (struct _MMFence * mf);
++ /* void (*fenceDestroy) (struct _MMFence * mf); */
+ } MMManager;
+
+ /*
+@@ -204,6 +204,7 @@ mmFenceEmit(struct _MMFence *mf, unsigne
+ return mf->man->fenceEmit(mf, class, type, flags);
+ }
+
++/*
+ static inline void
+ mmFenceUnReference(struct _MMFence **mfP)
+ {
+@@ -214,6 +215,7 @@ mmFenceUnReference(struct _MMFence **mfP
+ }
+ *mfP = NULL;
+ }
++*/
+
+ static inline struct _MMFence *
+ mmFenceReference(struct _MMFence *mf)
+diff -p -up xserver-xorg-video-psb-0.31.0/libmm/mm_user.c.comment_unused xserver-xorg-video-psb-0.31.0/libmm/mm_user.c
+--- xserver-xorg-video-psb-0.31.0/libmm/mm_user.c.comment_unused 2009-04-17 20:22:26.000000000 +0200
++++ xserver-xorg-video-psb-0.31.0/libmm/mm_user.c 2010-04-26 13:05:15.000000000 +0200
+@@ -77,6 +77,7 @@ typedef struct _UserSignal
+ UserManager *man;
+ } UserSignal;
+
++/*
+ void
+ mmFenceSignal(struct _MMSignal *signal, unsigned class,
+ unsigned type, unsigned sequence, unsigned error,
+@@ -148,6 +149,7 @@ mmFenceSignal(struct _MMSignal *signal,
+ type |= fence->signalPrevious;
+ }
+ }
++*/
+
+ static int
+ fenceEmit(struct _MMFence *mf, unsigned class, unsigned type, unsigned flags)
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch
new file mode 100644
index 0000000000..8758911c71
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-greedy.patch
@@ -0,0 +1,19 @@
+diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_accel.c.greedy xserver-xorg-video-psb-0.31.0/src/psb_accel.c
+--- xserver-xorg-video-psb-0.31.0/src/psb_accel.c.greedy 2009-04-17 20:22:24.000000000 +0200
++++ xserver-xorg-video-psb-0.31.0/src/psb_accel.c 2010-04-23 14:52:47.000000000 +0200
+@@ -1331,6 +1331,15 @@ psbExaInit(ScrnInfoPtr pScrn)
+ pExa->FinishAccess = psbExaFinishAccess;
+ pExa->UploadToScreen = psbExaUploadToScreen;
+
++ if (!xf86FindOptionValue(pScrn->options, "MigrationHeuristic")) {
++ const char *default_migration = "greedy";
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++ "Using default MigrationHeuristic: %s\n",
++ default_migration);
++ xf86ReplaceStrOption(pScrn->options, "MigrationHeuristic", default_migration);
++ }
++
++
+ if (!exaDriverInit(pScrn->pScreen, pExa)) {
+ goto out_err;
+ }
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch
new file mode 100644
index 0000000000..24cbc0d30e
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb-0.32.1/xserver-xorg-video-psb-0.31.0-loader.patch
@@ -0,0 +1,84 @@
+diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_dri.c.loader xserver-xorg-video-psb-0.31.0/src/psb_dri.c
+--- xserver-xorg-video-psb-0.31.0/src/psb_dri.c.loader 2009-04-17 20:22:24.000000000 +0200
++++ xserver-xorg-video-psb-0.31.0/src/psb_dri.c 2010-03-12 15:03:33.000000000 +0100
+@@ -548,8 +548,6 @@ psbDRIScreenInit(ScreenPtr pScreen)
+
+ PSB_DEBUG(pScrn->scrnIndex, 3, "psbDRIScreenInit\n");
+
+- xf86LoaderReqSymLists(driReqSymbols, NULL);
+-
+ pPsb->pDRIInfo = NULL;
+
+ /*
+diff -p -up xserver-xorg-video-psb-0.31.0/src/psb_driver.c.loader xserver-xorg-video-psb-0.31.0/src/psb_driver.c
+--- xserver-xorg-video-psb-0.31.0/src/psb_driver.c.loader 2010-03-12 13:48:52.000000000 +0100
++++ xserver-xorg-video-psb-0.31.0/src/psb_driver.c 2010-03-12 15:03:26.000000000 +0100
+@@ -329,12 +329,6 @@ psbSetup(pointer Module, pointer Options
+ if (!Initialised) {
+ Initialised = TRUE;
+ xf86AddDriver(&psb, Module, 0);
+- LoaderRefSymLists(fbSymbols, ddcSymbols, shadowSymbols,
+- psbvgahwSymbols,
+-#ifdef XF86DRI
+- psbDRMSymbols, psbDRISymbols,
+-#endif
+- NULL);
+ return (pointer) TRUE;
+ }
+
+@@ -639,7 +633,6 @@ psbPreInitDRI(ScrnInfoPtr pScrn)
+ if (!xf86LoadSubModule(pScrn, "dri"))
+ return FALSE;
+
+- xf86LoaderReqSymLists(psbDRISymbols, psbDRMSymbols, NULL);
+ return TRUE;
+ }
+
+@@ -660,7 +653,6 @@ psbPreInitXpsb(ScrnInfoPtr pScrn)
+
+ pPsb->xpsb = TRUE;
+
+- xf86LoaderReqSymLists(psbXpsbSymbols, NULL);
+ return TRUE;
+ }
+ #endif
+@@ -680,7 +672,6 @@ psbPreInitAccel(ScrnInfoPtr pScrn)
+ if (!xf86LoadSubModule(pScrn, "exa"))
+ return FALSE;
+
+- xf86LoaderReqSymLists(exaSymbols, NULL);
+ }
+
+ xf86DrvMsg(pScrn->scrnIndex, from, "Acceleration %sabled\n",
+@@ -720,7 +711,6 @@ psbPreInitShadowFB(ScrnInfoPtr pScrn)
+ if (!xf86LoadSubModule(pScrn, "shadow"))
+ return FALSE;
+
+- xf86LoaderReqSymLists(shadowSymbols, NULL);
+ }
+
+ xf86DrvMsg(pScrn->scrnIndex, from, "Shadow framebuffer %sabled\n",
+@@ -854,7 +844,6 @@ psbPreInit(ScrnInfoPtr pScrn, int flags)
+
+ if (!xf86LoadSubModule(pScrn, "vbe"))
+ return FALSE;
+- xf86LoaderReqSymLists(vbeSymbols, NULL);
+
+ /*
+ * Parse options and load required modules here.
+@@ -874,7 +863,6 @@ psbPreInit(ScrnInfoPtr pScrn, int flags)
+
+ if (!xf86LoadSubModule(pScrn, "fb"))
+ return (FALSE);
+- xf86LoaderReqSymLists(fbSymbols, NULL);
+
+ pScrn->chipset = "Intel GMA500";
+ pScrn->monitor = pScrn->confScreen->monitor;
+@@ -1033,7 +1021,6 @@ psbDeviceInit(PsbDevicePtr pDevice, int
+
+ if (!xf86LoadSubModule(pDevice->pScrns[0], "vgahw"))
+ return FALSE;
+- xf86LoaderReqSymLists(psbvgahwSymbols, NULL);
+
+ if (!vgaHWGetHWRec(pDevice->pScrns[0]))
+ return FALSE;
diff --git a/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb
new file mode 100644
index 0000000000..fc014fca05
--- /dev/null
+++ b/meta-emenlow/packages/xserver-xorg-video-psb/xserver-xorg-video-psb_0.32.1.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "2D graphics driver for Poulsbo"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://MIT_License.txt;md5=732825ecdcf420261531d935fcd914a7"
+PR = "r1"
+
+inherit autotools
+
+SRC_URI = "https://launchpad.net/~gma500/+archive/ppa/+files/xserver-xorg-video-psb_0.36.0-0ubuntu3~1004um9.tar.gz \
+ file://xorg-x11-drv-psb-0.31.0-ignoreacpi.patch;patch=1 \
+ file://xorg-x11-drv-psb-0.31.0-xserver17.patch;patch=1 \
+ file://xserver-xorg-video-psb-0.31.0-assert.patch;patch=1 \
+ file://xserver-xorg-video-psb-0.31.0-comment_unused.patch;patch=1 \
+ file://xserver-xorg-video-psb-0.31.0-greedy.patch;patch=1 \
+ file://xserver-xorg-video-psb-0.31.0-loader.patch;patch=1 \
+ file://stubs.patch;patch=1 \
+ file://01_disable_lid_timer.patch;patch=1 \
+ file://psb_xvtempfix.patch;patch=1 \
+ file://psb_mixed.patch;patch=1 \
+ file://dri-h.patch"
+
+export DRI_CFLAGS="-I${STAGING_INCDIR}/psb -I${STAGING_INCDIR}/psb/drm \
+ -I${STAGING_INCDIR}/X11/dri"
+
+export CFLAGS = "-fvisibility=default"
+export XORG_CFLAGS="-fvisibility=default -I${STAGING_INCDIR}/xorg \
+ -I${STAGING_INCDIR}/pixman-1"
+
+FILES_${PN} += "${libdir}/xorg/modules/drivers/libmm.so \
+ ${libdir}/xorg/modules/drivers/psb_drv.so"
+
+DEPENDS += "virtual/libgl virtual/xserver"