summaryrefslogtreecommitdiff
path: root/meta-extras
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2010-06-29 14:31:43 +0100
committerJoshua Lock <josh@linux.intel.com>2010-06-29 15:20:33 +0100
commit6ca31b0522873da6ae8bcdc49cbcca1b04c4016c (patch)
tree5cf314dcc613d47098c690a463fa4ebf3a72c148 /meta-extras
parentb6fcd71cb5b85e23036b31df1545a92f4ed402dc (diff)
downloadopenembedded-core-6ca31b0522873da6ae8bcdc49cbcca1b04c4016c.tar.gz
openembedded-core-6ca31b0522873da6ae8bcdc49cbcca1b04c4016c.tar.bz2
openembedded-core-6ca31b0522873da6ae8bcdc49cbcca1b04c4016c.zip
xorg-xserver: move older xserver's to meta-extras
Move xservers which are only used by retired machines to meta-extras Signed-off-by: Joshua Lock <josh@linux.intel.com>
Diffstat (limited to 'meta-extras')
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fbdev-not-fix.patch14
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix-picturestr-include-order.patch15
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix_default_mode.patch26
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/gumstix-kmode.patch23
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kdrive-1.3-18bpp.patch419
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode-palm.patch34
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode.patch28
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-autofoo.patch54
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-fix-offscreen-bmp.patch15
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-new-input-world-order.patch28
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100.patch6335
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-glamo_1.3.0.0+git.bb64
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/button_only.patch20
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch124
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/configfix.patch15
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch20
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch37
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xkb.patch82
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch12
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch23
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch14
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch446
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch503
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch53
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch43
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch13
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch73
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate_coords.patch122
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch82
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap_1.1.99.3.bb52
30 files changed, 8789 insertions, 0 deletions
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fbdev-not-fix.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fbdev-not-fix.patch
new file mode 100644
index 0000000000..f87e7cc2cd
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fbdev-not-fix.patch
@@ -0,0 +1,14 @@
+--- xserver/hw/kdrive/fbdev/fbdev.c~ 2004-09-15 00:08:10.000000000 +0100
++++ xserver/hw/kdrive/fbdev/fbdev.c 2004-11-13 17:47:02.000000000 +0000
+@@ -198,6 +198,11 @@
+ return FALSE;
+ }
+
++ /* Re-get the "fixed" parameters since they might have changed */
++ k = ioctl (priv->fd, FBIOGET_FSCREENINFO, &priv->fix);
++ if (k < 0)
++ perror ("FBIOGET_FSCREENINFO");
++
+ /* Now get the new screeninfo */
+ ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var);
+ depth = priv->var.bits_per_pixel;
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix-picturestr-include-order.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix-picturestr-include-order.patch
new file mode 100644
index 0000000000..3da235e1e1
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix-picturestr-include-order.patch
@@ -0,0 +1,15 @@
+# Reverse include order in render/picturestr.h to be able to compile against renderproto >= 0.9.3
+Index: xorg-server-1.2.0/render/picturestr.h
+===================================================================
+--- xorg-server-1.2.0.orig/render/picturestr.h 2008-02-09 22:54:46.000000000 +0100
++++ xorg-server-1.2.0/render/picturestr.h 2008-02-09 22:54:50.000000000 +0100
+@@ -26,8 +26,8 @@
+ #ifndef _PICTURESTR_H_
+ #define _PICTURESTR_H_
+
+-#include "glyphstr.h"
+ #include "scrnintstr.h"
++#include "glyphstr.h"
+ #include "resource.h"
+
+ typedef struct _DirectFormat {
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix_default_mode.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix_default_mode.patch
new file mode 100644
index 0000000000..edc5146302
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/fix_default_mode.patch
@@ -0,0 +1,26 @@
+---
+ hw/kdrive/src/kmode.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: xorg-server-1.3.0.0/hw/kdrive/src/kmode.c
+===================================================================
+--- xorg-server-1.3.0.0.orig/hw/kdrive/src/kmode.c 2007-05-16 10:30:29.000000000 +0100
++++ xorg-server-1.3.0.0/hw/kdrive/src/kmode.c 2007-05-16 10:31:08.000000000 +0100
+@@ -106,6 +106,8 @@ const KdMonitorTiming kdMonitorTimings[
+ 16, 120, 176, KdSyncNegative, /* 37.861 */
+ 1, 20, 24, KdSyncNegative, /* 72.809 */
+ },
++ /* DEFAULT */
++#define MONITOR_TIMING_DEFAULT 13
+ { 640, 480, 60, 25175, /* VESA */
+ 16, 48, 160, KdSyncNegative, /* 31.469 */
+ 10, 33, 45, KdSyncNegative, /* 59.940 */
+@@ -127,8 +129,6 @@ const KdMonitorTiming kdMonitorTimings[
+ 16, 160, 256, KdSyncPositive, /* 46.875 */
+ 1, 21, 25, KdSyncPositive, /* 75.000 */
+ },
+- /* DEFAULT */
+-#define MONITOR_TIMING_DEFAULT 9
+ { 800, 600, 72, 50000, /* VESA */
+ 56, 64, 240, KdSyncPositive, /* 48.077 */
+ 37, 23, 66, KdSyncPositive, /* 72.188 */
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/gumstix-kmode.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/gumstix-kmode.patch
new file mode 100644
index 0000000000..56817a7001
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/gumstix-kmode.patch
@@ -0,0 +1,23 @@
+--- /tmp/kmode.c 2007-10-07 11:49:52.000000000 +0200
++++ xorg-server-1.3.0.0/hw/kdrive/src/kmode.c 2007-10-07 11:51:57.962045000 +0200
+@@ -119,7 +119,19 @@
+ 0, 0, 0, KdSyncNegative, /* 59.940 */
+ },
+
+-
++
++/* gumstix console-vx */
++ { 480, 272, 60, 0, /* VESA */
++ 0, 0, 0, KdSyncNegative, /* 31.469 */
++ 0, 0, 0, KdSyncNegative, /* 59.940 */
++ },
++
++ { 272, 480, 60, 0, /* VESA */
++ 0, 0, 0, KdSyncNegative, /* 31.469 */
++ 0, 0, 0, KdSyncNegative, /* 59.940 */
++ },
++
++
+ /* 800x600 modes */
+ { 800, 600, 85, 56250, /* VESA */
+ 32, 152, 248, KdSyncPositive, /* 53.674 */
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kdrive-1.3-18bpp.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kdrive-1.3-18bpp.patch
new file mode 100644
index 0000000000..714536934c
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kdrive-1.3-18bpp.patch
@@ -0,0 +1,419 @@
+diff -Nurd xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.c
+--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.c 2006-11-16 19:01:23.000000000 +0100
++++ xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.c 2007-09-15 16:53:20.152045000 +0200
+@@ -213,6 +213,24 @@
+
+ /* Now get the new screeninfo */
+ ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var);
++ /* Special treatment of 18bpp */
++ if ((priv->var.red.length == 6) && (priv->var.green.length == 6) &&
++ (priv->var.blue.length == 6))
++ {
++ priv->var.red.length = 8;
++ if (priv->var.red.offset != 0)
++ priv->var.red.offset = 16;
++ priv->var.green.length = 8;
++ priv->var.green.offset = 8;
++ priv->var.blue.length = 8;
++ if (priv->var.blue.offset != 0)
++ priv->var.blue.offset = 16;
++ priv->var.bits_per_pixel = 32;
++ priv->Have18Bpp = TRUE;
++ }
++ else
++ priv->Have18Bpp = FALSE;
++
+ depth = priv->var.bits_per_pixel;
+ gray = priv->var.grayscale;
+
+@@ -334,7 +352,7 @@
+ KdMouseMatrix m;
+ FbdevPriv *priv = screen->card->driver;
+
+- if (scrpriv->randr != RR_Rotate_0)
++ if (scrpriv->randr != RR_Rotate_0 || priv->Have18Bpp)
+ scrpriv->shadow = TRUE;
+ else
+ scrpriv->shadow = FALSE;
+@@ -398,6 +416,354 @@
+ return TRUE;
+ }
+
++void
++shadowUpdatePacked18 (ScreenPtr pScreen,
++ shadowBufPtr pBuf)
++{
++ RegionPtr damage = shadowDamage (pBuf);
++ PixmapPtr pShadow = pBuf->pPixmap;
++ int nbox = REGION_NUM_RECTS (damage);
++ BoxPtr pbox = REGION_RECTS (damage);
++ FbBits *shaBase, *shaLine, *sha;
++ FbStride shaStride;
++ int scrBase, scrLine, scr;
++ int shaBpp;
++ int shaXoff, shaYoff; /* XXX assumed to be zero */
++ int x, y, w, h, width;
++ int i;
++ char *winBase = NULL, *win;
++ CARD32 winSize;
++
++ fbGetDrawable (&pShadow->drawable, shaBase, shaStride, shaBpp, shaXoff, shaYoff);
++ while (nbox--)
++ {
++ x = pbox->x1 * shaBpp;
++ y = pbox->y1;
++ w = (pbox->x2 - pbox->x1) * shaBpp;
++ h = pbox->y2 - pbox->y1;
++
++ scrLine = (x >> FB_SHIFT);
++ shaLine = shaBase + y * shaStride + (x >> FB_SHIFT);
++
++ x &= FB_MASK;
++ w = (w + x + FB_MASK) >> FB_SHIFT;
++
++ while (h--)
++ {
++ winSize = 0;
++ scrBase = 0;
++ width = w;
++ scr = scrLine;
++ sha = shaLine;
++ while (width) {
++ /* how much remains in this window */
++ i = scrBase + winSize - scr;
++ if (i <= 0 || scr < scrBase)
++ {
++ winBase = (char *) (*pBuf->window) (pScreen,
++ y,
++ scr * 3,
++ SHADOW_WINDOW_WRITE,
++ &winSize,
++ pBuf->closure);
++ if(!winBase)
++ return;
++ scrBase = scr;
++ winSize /= 3;
++ i = winSize;
++ }
++ win = winBase + (scr - scrBase);
++ if (i > width)
++ i = width;
++ width -= i;
++ scr += i;
++#define PickBit(a,i) (((a) >> (i)) & 1)
++ while (i--)
++ {
++ FbBits bits = *sha++;
++ *win++ = ((bits & 0xFC) >> 2) |
++ ((bits & 0xC00) >> 4);
++ *win++ = ((bits & 0xF000) >> 12) |
++ ((bits & 0x3C0000) >> 14);
++ *win++ = (bits & 0xC00000) >> 22;
++ }
++ }
++ shaLine += shaStride;
++ y++;
++ }
++ pbox++;
++ }
++}
++
++#define LEFT_TO_RIGHT 1
++#define RIGHT_TO_LEFT -1
++#define TOP_TO_BOTTOM 2
++#define BOTTOM_TO_TOP -2
++
++void
++shadowUpdateRotatePacked18 (ScreenPtr pScreen,
++ shadowBufPtr pBuf)
++{
++ RegionPtr damage = shadowDamage (pBuf);
++ PixmapPtr pShadow = pBuf->pPixmap;
++ int nbox = REGION_NUM_RECTS (damage);
++ BoxPtr pbox = REGION_RECTS (damage);
++ FbBits *shaBits;
++ FbStride shaStride;
++ int shaBpp;
++ int shaXoff, shaYoff;
++ int box_x1, box_x2, box_y1, box_y2;
++ int sha_x1 = 0, sha_y1 = 0;
++ int scr_x1 = 0, scr_x2 = 0, scr_y1 = 0, scr_y2 = 0, scr_w, scr_h;
++ int scr_x, scr_y;
++ int w;
++ int pixelsPerBits;
++ int pixelsMask;
++ FbStride shaStepOverY = 0, shaStepDownY = 0;
++ FbStride shaStepOverX = 0, shaStepDownX = 0;
++ FbBits *shaLine, *sha;
++ int shaHeight = pShadow->drawable.height;
++ int shaWidth = pShadow->drawable.width;
++ FbBits shaMask;
++ int shaFirstShift, shaShift;
++ int o_x_dir;
++ int o_y_dir;
++ int x_dir;
++ int y_dir;
++
++ fbGetDrawable (&pShadow->drawable, shaBits, shaStride, shaBpp, shaXoff, shaYoff);
++ pixelsPerBits = (sizeof (FbBits) * 8) / shaBpp;
++ pixelsMask = ~(pixelsPerBits - 1);
++ shaMask = FbBitsMask (FB_UNIT-shaBpp, shaBpp);
++ /*
++ * Compute rotation related constants to walk the shadow
++ */
++ o_x_dir = LEFT_TO_RIGHT;
++ o_y_dir = TOP_TO_BOTTOM;
++ if (pBuf->randr & SHADOW_REFLECT_X)
++ o_x_dir = -o_x_dir;
++ if (pBuf->randr & SHADOW_REFLECT_Y)
++ o_y_dir = -o_y_dir;
++ switch (pBuf->randr & (SHADOW_ROTATE_ALL)) {
++ case SHADOW_ROTATE_0: /* upper left shadow -> upper left screen */
++ default:
++ x_dir = o_x_dir;
++ y_dir = o_y_dir;
++ break;
++ case SHADOW_ROTATE_90: /* upper right shadow -> upper left screen */
++ x_dir = o_y_dir;
++ y_dir = -o_x_dir;
++ break;
++ case SHADOW_ROTATE_180: /* lower right shadow -> upper left screen */
++ x_dir = -o_x_dir;
++ y_dir = -o_y_dir;
++ break;
++ case SHADOW_ROTATE_270: /* lower left shadow -> upper left screen */
++ x_dir = -o_y_dir;
++ y_dir = o_x_dir;
++ break;
++ }
++ switch (x_dir) {
++ case LEFT_TO_RIGHT:
++ shaStepOverX = shaBpp;
++ shaStepOverY = 0;
++ break;
++ case TOP_TO_BOTTOM:
++ shaStepOverX = 0;
++ shaStepOverY = shaStride;
++ break;
++ case RIGHT_TO_LEFT:
++ shaStepOverX = -shaBpp;
++ shaStepOverY = 0;
++ break;
++ case BOTTOM_TO_TOP:
++ shaStepOverX = 0;
++ shaStepOverY = -shaStride;
++ break;
++ }
++ switch (y_dir) {
++ case TOP_TO_BOTTOM:
++ shaStepDownX = 0;
++ shaStepDownY = shaStride;
++ break;
++ case RIGHT_TO_LEFT:
++ shaStepDownX = -shaBpp;
++ shaStepDownY = 0;
++ break;
++ case BOTTOM_TO_TOP:
++ shaStepDownX = 0;
++ shaStepDownY = -shaStride;
++ break;
++ case LEFT_TO_RIGHT:
++ shaStepDownX = shaBpp;
++ shaStepDownY = 0;
++ break;
++ }
++
++ while (nbox--)
++ {
++ box_x1 = pbox->x1;
++ box_y1 = pbox->y1;
++ box_x2 = pbox->x2;
++ box_y2 = pbox->y2;
++ pbox++;
++
++ /*
++ * Compute screen and shadow locations for this box
++ */
++ switch (x_dir) {
++ case LEFT_TO_RIGHT:
++ scr_x1 = box_x1 & pixelsMask;
++ scr_x2 = (box_x2 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_x1 = scr_x1;
++ break;
++ case TOP_TO_BOTTOM:
++ scr_x1 = box_y1 & pixelsMask;
++ scr_x2 = (box_y2 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_y1 = scr_x1;
++ break;
++ case RIGHT_TO_LEFT:
++ scr_x1 = (shaWidth - box_x2) & pixelsMask;
++ scr_x2 = (shaWidth - box_x1 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_x1 = (shaWidth - scr_x1 - 1);
++ break;
++ case BOTTOM_TO_TOP:
++ scr_x1 = (shaHeight - box_y2) & pixelsMask;
++ scr_x2 = (shaHeight - box_y1 + pixelsPerBits - 1) & pixelsMask;
++
++ sha_y1 = (shaHeight - scr_x1 - 1);
++ break;
++ }
++ switch (y_dir) {
++ case TOP_TO_BOTTOM:
++ scr_y1 = box_y1;
++ scr_y2 = box_y2;
++
++ sha_y1 = scr_y1;
++ break;
++ case RIGHT_TO_LEFT:
++ scr_y1 = (shaWidth - box_x2);
++ scr_y2 = (shaWidth - box_x1);
++
++ sha_x1 = box_x2 - 1;
++ break;
++ case BOTTOM_TO_TOP:
++ scr_y1 = shaHeight - box_y2;
++ scr_y2 = shaHeight - box_y1;
++
++ sha_y1 = box_y2 - 1;
++ break;
++ case LEFT_TO_RIGHT:
++ scr_y1 = box_x1;
++ scr_y2 = box_x2;
++
++ sha_x1 = box_x1;
++ break;
++ }
++ scr_w = ((scr_x2 - scr_x1) * shaBpp) >> FB_SHIFT;
++ scr_h = scr_y2 - scr_y1;
++ scr_y = scr_y1;
++
++ /* shift amount for first pixel on screen */
++ shaFirstShift = FB_UNIT - ((sha_x1 * shaBpp) & FB_MASK) - shaBpp;
++
++ /* pointer to shadow data first placed on screen */
++ shaLine = (shaBits +
++ sha_y1 * shaStride +
++ ((sha_x1 * shaBpp) >> FB_SHIFT));
++
++ /*
++ * Copy the bits, always write across the physical frame buffer
++ * to take advantage of write combining.
++ */
++ while (scr_h--)
++ {
++ int p;
++ FbBits bits;
++ char *win;
++ int i;
++ CARD32 winSize;
++
++ sha = shaLine;
++ shaShift = shaFirstShift;
++ w = scr_w;
++ scr_x = scr_x1 * shaBpp >> FB_SHIFT;
++
++ while (w)
++ {
++ /*
++ * Map some of this line
++ */
++ win = (char *) (*pBuf->window) (pScreen,
++ scr_y,
++ scr_x * 3,
++ SHADOW_WINDOW_WRITE,
++ &winSize,
++ pBuf->closure);
++ i = winSize / 3;
++ if (i > w)
++ i = w;
++ w -= i;
++ scr_x += i;
++ /*
++ * Copy the portion of the line mapped
++ */
++ while (i--)
++ {
++ bits = 0;
++ p = pixelsPerBits;
++ /*
++ * Build one word of output from multiple inputs
++ *
++ * Note that for 90/270 rotations, this will walk
++ * down the shadow hitting each scanline once.
++ * This is probably not very efficient.
++ */
++ while (p--)
++ {
++ bits = FbScrLeft(bits, shaBpp);
++ bits |= FbScrRight (*sha, shaShift) & shaMask;
++
++ shaShift -= shaStepOverX;
++ if (shaShift >= FB_UNIT)
++ {
++ shaShift -= FB_UNIT;
++ sha--;
++ }
++ else if (shaShift < 0)
++ {
++ shaShift += FB_UNIT;
++ sha++;
++ }
++ sha += shaStepOverY;
++ }
++ *win++ = ((bits & 0xFC) >> 2) |
++ ((bits & 0xC00) >> 4);
++ *win++ = ((bits & 0xF000) >> 12) |
++ ((bits & 0x3C0000) >> 14);
++ *win++ = (bits & 0xC00000) >> 22;
++ }
++ }
++ scr_y++;
++ shaFirstShift -= shaStepDownX;
++ if (shaFirstShift >= FB_UNIT)
++ {
++ shaFirstShift -= FB_UNIT;
++ shaLine--;
++ }
++ else if (shaFirstShift < 0)
++ {
++ shaFirstShift += FB_UNIT;
++ shaLine++;
++ }
++ shaLine += shaStepDownY;
++ }
++ }
++}
++
+ Bool
+ fbdevSetShadow (ScreenPtr pScreen)
+ {
+@@ -418,7 +784,14 @@
+
+ window = fbdevWindowLinear;
+ update = 0;
+- if (scrpriv->randr)
++ if (priv->Have18Bpp)
++ {
++ if (scrpriv->randr != RR_Rotate_0)
++ update = shadowUpdateRotatePacked18;
++ else
++ update = shadowUpdatePacked18;
++ }
++ else if (scrpriv->randr)
+ if (priv->var.bits_per_pixel == 16) {
+ switch (scrpriv->randr) {
+ case RR_Rotate_90:
+diff -Nurd xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.h xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.h
+--- xorg-server-1.3.0.0/hw/kdrive/fbdev/fbdev.h 2006-09-18 08:04:17.000000000 +0200
++++ xorg-server-1.3.0.0.patched/hw/kdrive/fbdev/fbdev.h 2007-09-15 16:45:07.362045000 +0200
+@@ -44,6 +44,7 @@
+ int fd;
+ char *fb;
+ char *fb_base;
++ Bool Have18Bpp;
+ } FbdevPriv;
+
+ typedef struct _fbdevScrPriv {
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode-palm.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode-palm.patch
new file mode 100644
index 0000000000..255e707b55
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode-palm.patch
@@ -0,0 +1,34 @@
+--- kmode.c 2006-05-03 19:48:42.000000000 +0200
++++ xserver/hw/kdrive/src/kmode.c 2006-05-03 19:50:43.000000000 +0200
+@@ -32,6 +32,31 @@
+ /* H V Hz KHz */
+ /* FP BP BLANK POLARITY */
+
++ /* Treo 650 */
++
++ { 320, 320, 64, 16256,
++ 17, 12, 32, KdSyncNegative,
++ 1, 11, 14, KdSyncNegative,
++ },
++
++ { 320, 320, 64, 0,
++ 0, 0, 0, KdSyncNegative,
++ 0, 0, 0, KdSyncNegative,
++ },
++
++ /* LifeDrive/T3/TX modes */
++
++ { 320, 480, 64, 16256,
++ 17, 12, 32, KdSyncNegative,
++ 1, 11, 14, KdSyncNegative,
++ },
++
++ { 480, 320, 64, 0,
++ 0, 0, 0, KdSyncNegative,
++ 0, 0, 0, KdSyncNegative,
++ },
++
++
+ /* IPAQ modeline:
+ *
+ * Modeline "320x240" 5.7222 320 337 340 352 240 241 244 254"
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode.patch
new file mode 100644
index 0000000000..5ad3e4e277
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/kmode.patch
@@ -0,0 +1,28 @@
+--- /tmp/kmode.c 2005-06-27 14:46:19.716843288 +0200
++++ xserver/hw/kdrive/src/kmode.c 2005-06-27 14:46:30.070269328 +0200
+@@ -41,6 +41,11 @@
+ 1, 11, 14, KdSyncNegative,
+ },
+
++ { 240, 320, 64, 0,
++ 0, 0, 0, KdSyncNegative,
++ 0, 0, 0, KdSyncNegative,
++ },
++
+ /* Other VESA modes */
+ { 640, 350, 85, 31500, /* VESA */
+ 32, 96, 192, KdSyncPositive, /* 26.413 */
+@@ -80,6 +85,13 @@
+ 16, 48, 160, KdSyncNegative, /* 31.469 */
+ 10, 33, 45, KdSyncNegative, /* 59.940 */
+ },
++
++
++ { 480, 640, 60, 0, /* VESA */
++ 0, 0, 0, KdSyncNegative, /* 31.469 */
++ 0, 0, 0, KdSyncNegative, /* 59.940 */
++ },
++
+
+ /* 800x600 modes */
+ { 800, 600, 85, 56250, /* VESA */
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-autofoo.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-autofoo.patch
new file mode 100644
index 0000000000..b53e327dae
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-autofoo.patch
@@ -0,0 +1,54 @@
+Index: git/hw/kdrive/Makefile.am
+===================================================================
+--- git.orig/hw/kdrive/Makefile.am 2006-09-02 12:12:13.000000000 +0200
++++ git/hw/kdrive/Makefile.am 2006-09-02 12:12:14.000000000 +0200
+@@ -7,6 +7,10 @@
+ FBDEV_SUBDIRS = fbdev epson
+ endif
+
++if KDRIVEW100
++W100_SUBDIRS = w100
++endif
++
+ if XSDLSERVER
+ XSDL_SUBDIRS = sdl
+ endif
+@@ -20,6 +24,7 @@
+ linux \
+ $(XSDL_SUBDIRS) \
+ $(FBDEV_SUBDIRS) \
++ $(W100_SUBDIRS) \
+ $(VESA_SUBDIRS) \
+ $(XEPHYR_SUBDIRS) \
+ fake
+Index: git/configure.ac
+===================================================================
+--- git.orig/configure.ac 2006-09-02 12:12:14.000000000 +0200
++++ git/configure.ac 2006-09-02 12:12:14.000000000 +0200
+@@ -442,6 +442,7 @@
+ AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
+ AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
+ AC_ARG_ENABLE(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
++AC_ARG_ENABLE(w100, AS_HELP_STRING([--enable-w100], [Build the kdrive Xw100 server (default: no)]), [KDRIVEW100=$enableval], [KDRIVEW100=no])
+ dnl xprint
+ AC_ARG_ENABLE(freetype, AS_HELP_STRING([ --enable-freetype], [Build Xprint FreeType backend (default: yes)]), [XP_USE_FREETYPE=$enableval],[XP_USE_FREETYPE=no])
+ AC_ARG_WITH(freetype-config, AS_HELP_STRING([ --with-freetype-config=PROG], [Use FreeType configuration program PROG (default: auto)]), freetype_config=$withval, freetype_config=auto)
+@@ -1519,6 +1520,10 @@
+ AC_SUBST([XSDL_LIBS])
+ AC_SUBST([XSDL_INCS])
+
++AM_CONDITIONAL(KDRIVEW100, [test "x$KDRIVEW100" = xyes])
++if test "x$KDRIVEW100" = xyes; then
++ AC_DEFINE(KDRIVEW100, 1, [Build Xw100 server])
++fi
+
+ dnl these only go in xkb-config.h (which is shared by the Xorg and Xnest servers)
+ AC_DEFINE(__XKBDEFRULES__, "xorg", [Default XKB rules])
+@@ -1753,6 +1758,7 @@
+ hw/kdrive/epson/Makefile
+ hw/kdrive/fake/Makefile
+ hw/kdrive/fbdev/Makefile
++hw/kdrive/w100/Makefile
+ hw/kdrive/i810/Makefile
+ hw/kdrive/linux/Makefile
+ hw/kdrive/mach64/Makefile
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-fix-offscreen-bmp.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-fix-offscreen-bmp.patch
new file mode 100644
index 0000000000..39bc22c6b3
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-fix-offscreen-bmp.patch
@@ -0,0 +1,15 @@
+Patch suggested by Manuel Teira to actually enable offscreen pixmap
+acceleration in Xw100. Value 16 is empirical, works well on hx4700,
+but in case of issues, consider double it (other accelerated drivers
+use bigger values than 16).
+
+--- xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c.org 2007-04-04 10:28:57.000000000 +0000
++++ xorg-server-1.2.0/hw/kdrive/w100/ati_draw.c 2007-04-06 14:43:40.000000000 +0000
+@@ -433,6 +433,7 @@
+ * or kaaPixmapUseScreen. But this is probably caused by some bug in this
+ * driver... */
+ atis->kaa.flags |= KAA_OFFSCREEN_PIXMAPS;
++ atis->kaa.pitchAlign = 16;
+ if (!kaaDrawInit(pScreen, &atis->kaa))
+ return FALSE;
+
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-new-input-world-order.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-new-input-world-order.patch
new file mode 100644
index 0000000000..239ae0bb67
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100-new-input-world-order.patch
@@ -0,0 +1,28 @@
+Index: xorg-server-1.4/hw/kdrive/w100/ati_stub.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/w100/ati_stub.c 2007-09-08 21:40:26.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/w100/ati_stub.c 2007-09-08 22:04:27.000000000 +0200
+@@ -74,10 +74,20 @@
+ void
+ InitInput(int argc, char **argv)
+ {
+- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+-#ifdef TOUCHSCREEN
+- KdAddMouseDriver(&TsFuncs);
++ KdKeyboardInfo *ki;
++
++ KdAddKeyboardDriver (&LinuxKeyboardDriver);
++ KdAddPointerDriver (&LinuxMouseDriver);
++ KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver);
++ KdAddPointerDriver (&LinuxEvdevMouseDriver);
++#ifdef TSLIB
++ KdAddPointerDriver (&TsDriver);
+ #endif
++
++ ki = KdParseKeyboard ("keyboard");
++ KdAddKeyboard(ki);
++
++ KdInitInput ();
+ }
+
+ void
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100.patch
new file mode 100644
index 0000000000..1bb6f357c6
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-glamo/w100.patch
@@ -0,0 +1,6335 @@
+Index: git/hw/kdrive/w100/ati.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ git/hw/kdrive/w100/ati.c 2006-09-02 12:12:14.000000000 +0200
+@@ -0,0 +1,434 @@
++/*
++ * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
++ *
++ * Permissio