]> code.ossystems Code Review - openembedded-core.git/commitdiff
Add xserver-kdrive-xomap
authorRichard Purdie <richard@openedhand.com>
Tue, 30 Jan 2007 22:10:02 +0000 (22:10 +0000)
committerRichard Purdie <richard@openedhand.com>
Tue, 30 Jan 2007 22:10:02 +0000 (22:10 +0000)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@1225 311d38ba-8fff-0310-9ca6-ca027cbcb966

15 files changed:
meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/optional-xkb.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch [new file with mode: 0644]
meta/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb [new file with mode: 0644]

diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch
new file mode 100644 (file)
index 0000000..df5bbe2
--- /dev/null
@@ -0,0 +1,137 @@
+---
+ configure    |38107 -----------------------------------------------------------
+ configure.ac            |    2 -
+ hw/kdrive/linux/tslib.c |   68 ++++++++++++++++++++++++++----------------------
+ 2 files changed, 39 insertions(+), 31 deletions(-)
+
+
+Index: xorg-server-1.1.99.3/configure.ac
+===================================================================
+--- xorg-server-1.1.99.3.orig/configure.ac     2007-01-30 00:22:41.000000000 +0000
++++ xorg-server-1.1.99.3/configure.ac  2007-01-30 00:22:41.000000000 +0000
+@@ -717,7 +717,7 @@ fi
+ if test "x$XCALIBRATE" = xyes && test "$KDRIVE" = yes; then
+    AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
+-   REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto"
++   REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateext"
+ else
+    XCALIBRATE=no
+ fi
+Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c  2007-01-30 00:44:13.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c       2007-01-30 21:55:52.000000000 +0000
+@@ -47,6 +47,10 @@
+ #define TSLIB_QUEUE_SIZE 3
++/* For XCalibrate extension */
++void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
++void *tslib_raw_event_closure;
++
+ struct TslibPrivate {
+     int fd;
+     int lastx, lasty;
+@@ -76,6 +80,19 @@ TsRead (int fd, void *closure)
+     unsigned long       flags = 0;
+     int                 discard = 0;
++    if (tslib_raw_event_hook)
++      {
++      /* XCalibrate Ext */
++      if (ts_read_raw(private->tsDev, &event, 1) == 1)
++        {
++          tslib_raw_event_hook (event.x, 
++                                event.y, 
++                                event.pressure, 
++                                tslib_raw_event_closure);
++        }
++      return;
++      }
++
+     if (!private->tsDev) {
+         DebugF("[tslib] EXTREME BADNESS: TsRead called while tsDev is null!\n");
+         return;
+@@ -322,14 +339,14 @@ TsRead (int fd, void *closure)
+     }
+ }
+-/* must always be NULL-terminated. */
+-char *valid_ts_names[] = {
+-    "ADS784x Touchscreen",
+-    "omap-ts",
+-    "TSC2301 touchscreen",
+-    NULL
++static char *TsNames[] = {
++  NULL,                       /* set via TSLIB_TSDEVICE */
++  "/dev/ts",  
++  "/dev/touchscreen/0",
+ };
++#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0]))
++
+ #define TS_NAME_SIZE 32
+ static Status
+@@ -383,11 +400,10 @@ TslibDisable (KdPointerInfo *pi)
+     private->tsDev = NULL;
+ }
+-
+ static Status
+ TslibInit (KdPointerInfo *pi)
+ {
+-    int                       fd = 0, i = 0;
++    int                       fd = 0, i = 0, j = 0;
+     char                devpath[PATH_MAX], devname[TS_NAME_SIZE];
+     DIR                 *inputdir = NULL;
+     struct dirent       *inputent = NULL;
+@@ -397,33 +413,25 @@ TslibInit (KdPointerInfo *pi)
+         return !Success;
+     
+     if (!pi->path || strcmp(pi->path, "auto") == 0) {
+-        if (!(inputdir = opendir("/dev/input"))) {
+-            ErrorF("[tslib/TslibInit]: couldn't open /dev/input!\n");
+-            return BadMatch;
+-        }
+-        while ((inputent = readdir(inputdir))) {
+-            if (strncmp(inputent->d_name, "event", 5) != 0)
+-                continue;
++        if ((TsNames[0] = getenv("TSLIB_TSDEVICE")) == NULL)
++        j++;
++      
++        for (i = j; i < NUM_TS_NAMES; i++)    
++          {
++              struct tsdev *tsDev;
+-            snprintf(devpath, PATH_MAX, "/dev/input/%s", inputent->d_name);
+-            fd = open(devpath, O_RDWR);
++              if(!(tsDev = ts_open(TsNames[i], 0)))
++                continue;
+-            if (!ioctl(fd, EVIOCGNAME(sizeof(devname)), devname)) {
+-                close(fd);
++              if (ts_config(tsDev))
+                 continue;
+-            }
+-            close(fd);
+-            for (i = 0; valid_ts_names[i]; i++) {
+-                if (strcmp(devname, valid_ts_names[i]) == 0) {
+-                    pi->path = KdSaveString(devpath);
+-                    break;
+-                }
+-            }
+-        }
+-                
+-        closedir(inputdir);
++              ts_close(tsDev);
++
++            pi->path = KdSaveString(TsNames[i]);
++              break;
++          }
+     }
+     if (!pi->path || strcmp(pi->path, "auto") == 0) {
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch
new file mode 100644 (file)
index 0000000..bd88427
--- /dev/null
@@ -0,0 +1,20 @@
+--- xserver/hw/kdrive/linux/linux.c.orig       2005-04-23 15:56:13.988849232 +0000
++++ xserver/hw/kdrive/linux/linux.c    2005-04-23 15:57:05.001094192 +0000
+@@ -342,7 +342,7 @@
+     /*
+      * Open the APM driver
+      */
+-    LinuxApmFd = open ("/dev/apm_bios", 2);
++    /*LinuxApmFd = open ("/dev/apm_bios", 2);
+     if (LinuxApmFd < 0 && errno == ENOENT)
+       LinuxApmFd = open ("/dev/misc/apm_bios", 2); 
+     if (LinuxApmFd >= 0)
+@@ -352,7 +352,7 @@
+       RegisterBlockAndWakeupHandlers (LinuxApmBlock, LinuxApmWakeup, 0);
+       AddEnabledDevice (LinuxApmFd);
+     }
+-      
++    */        
+     /*
+      * now get the VT
+      */
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch
new file mode 100644 (file)
index 0000000..9c43e52
--- /dev/null
@@ -0,0 +1,37 @@
+--- git/configure.ac.orig      2006-05-22 22:40:00.000000000 +0200
++++ git/configure.ac   2006-06-10 15:10:14.000000000 +0200
+@@ -505,7 +505,11 @@
+ XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
+ dnl Core modules for most extensions, et al.
++if test "$KDRIVE" = yes; then
++REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto"
++else
+ REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto"
++fi
+ REQUIRED_LIBS="xfont xau fontenc"
+ AM_CONDITIONAL(XV, [test "x$XV" = xyes])
+@@ -1514,7 +1526,9 @@
+ AC_SUBST(XKB_COMPILED_DIR)
+ dnl and the rest of these are generic, so they're in config.h
++if test ! x"$KDRIVE" = xyes; then
+ AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
++fi
+ AC_DEFINE(XResExtension, 1, [Build XRes extension])
+ dnl CYGWIN does not define fd_set if _POSIX_SOURCE is defined
+@@ -1534,10 +1548,12 @@
+ AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
++if test ! "x$KDRIVE" = xyes ; then
+ dnl xorgconfig CLI configuration utility
+ PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
+ AC_SUBST(XORGCONFIG_DEP_CFLAGS)
+ AC_SUBST(XORGCONFIG_DEP_LIBS)
++fi
+ dnl xorgcfg GUI configuration utility
+ AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg], 
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch
new file mode 100644 (file)
index 0000000..13a6c2c
--- /dev/null
@@ -0,0 +1,12 @@
+--- xorg-server-X11R7.1-1.1.0/dix/dixfonts.c.orig      2006-06-08 14:49:12.158684250 +0200
++++ xorg-server-X11R7.1-1.1.0/dix/dixfonts.c   2006-06-08 14:49:52.493205000 +0200
+@@ -52,8 +52,8 @@
+ /* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */
+ #define NEED_REPLIES
+ #ifdef HAVE_DIX_CONFIG_H
+-#include <dix-config.h>
++#include <kdrive-config.h>
+ #endif
+ #include <X11/X.h>
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch
new file mode 100644 (file)
index 0000000..e488657
--- /dev/null
@@ -0,0 +1,23 @@
+--- git/configure.ac.orig      2006-05-22 22:40:00.000000000 +0200
++++ git/configure.ac   2006-06-10 15:10:14.000000000 +0200
+@@ -1438,6 +1446,10 @@
+     fi
+     
+-    # tslib...
++    AC_CHECK_HEADERS([tslib.h])
++    if test "$ac_cv_header_tslib_h" = yes; then
++        AC_DEFINE(TSLIB, 1, [Build kdrive with tslib support])
++        AC_DEFINE(TOUCHSCREEN, 1, [Build kdrive with touchscreen support])
++    fi
+     # damage shadow extension glx (NOTYET) fb mi
+     KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
+@@ -1467,7 +1479,7 @@
+ AC_SUBST(KDRIVE_CFLAGS)
+ AC_SUBST(KDRIVE_PURE_LIBS)
+ AC_SUBST(KDRIVE_LIBS)
+-AM_CONDITIONAL(TSLIB, false)
++AM_CONDITIONAL(TSLIB, [test x"$ac_cv_header_tslib_h" = xyes])
+ AM_CONDITIONAL(H3600_TS, false)
+ AM_CONDITIONAL(KDRIVEVESA, [test x"$ac_cv_header_sys_vm86_h" = xyes])
+ AM_CONDITIONAL(KDRIVEFBDEV, [test x"$ac_cv_header_linux_fb_h" = xyes])
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch
new file mode 100644 (file)
index 0000000..f87e7cc
--- /dev/null
@@ -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/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch
new file mode 100644 (file)
index 0000000..09c9e89
--- /dev/null
@@ -0,0 +1,446 @@
+---
+ Xi/chgdctl.c                   |   55 +++++++++++++++++++------
+ Xi/getdctl.c                   |   87 +++++++++++++++++++++++++++++++----------
+ Xi/getdctl.h                   |   11 +++--
+ Xi/stubs.c                     |    2 
+ configure.ac                   |    2 
+ dix/devices.c                  |   31 +++++++++-----
+ hw/kdrive/linux/tslib.c        |    8 +--
+ hw/kdrive/src/kinput.c         |    6 +-
+ hw/xfree86/common/xf86Xinput.c |    3 -
+ include/input.h                |    2 
+ include/inputstr.h             |   18 +++++++-
+ 11 files changed, 162 insertions(+), 63 deletions(-)
+
+Index: xorg-server-1.1.99.3/Xi/chgdctl.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/Xi/chgdctl.c     2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/Xi/chgdctl.c  2007-01-29 22:59:27.000000000 +0000
+@@ -104,8 +104,10 @@ ProcXChangeDeviceControl(ClientPtr clien
+     xChangeDeviceControlReply rep;
+     AxisInfoPtr a;
+     CARD32 *resolution;
+-    xDeviceTSCtl *ts;
++    xDeviceAbsCalibCtl *calib;
++    xDeviceAbsAreaCtl *area;
+     xDeviceCoreCtl *c;
++    xDeviceEnableCtl *e;
+     REQUEST(xChangeDeviceControlReq);
+     REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
+@@ -170,25 +172,28 @@ ProcXChangeDeviceControl(ClientPtr clien
+           return Success;
+       }
+       break;
+-    case DEVICE_TOUCHSCREEN:
+-        ts = (xDeviceTSCtl *)&stuff[1];
+-
+-        if (ts->button_threshold < 0 || ts->button_threshold > 255) {
++    case DEVICE_ABS_CALIB:
++        calib = (xDeviceAbsCalibCtl *)&stuff[1];
++ 
++        if (calib->button_threshold < 0 || calib->button_threshold > 255) {
+             SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
+                               BadValue);
+             return Success;
+         }
+-        status = ChangeDeviceControl(client, dev, (xDeviceCtl *) ts);
++        status = ChangeDeviceControl(client, dev, (xDeviceCtl *) calib);
+         if (status == Success) {
+-            dev->touchscreen->min_x = ts->min_x;
+-            dev->touchscreen->max_x = ts->max_x;
+-            dev->touchscreen->min_y = ts->min_y;
+-            dev->touchscreen->max_y = ts->max_y;
+-            dev->touchscreen->button_threshold = ts->button_threshold;
+-        } else if (status == DeviceBusy) {
+-            rep.status = DeviceBusy;
++            dev->absolute->min_x = calib->min_x;
++            dev->absolute->max_x = calib->max_x;
++            dev->absolute->min_y = calib->min_y;
++            dev->absolute->max_y = calib->max_y;
++            dev->absolute->flip_x = calib->flip_x;
++            dev->absolute->flip_y = calib->flip_y;
++            dev->absolute->rotation = calib->rotation;
++            dev->absolute->button_threshold = calib->button_threshold;
++        } else if (status == DeviceBusy || status == BadValue) {
++            rep.status = status;
+             WriteReplyToClient(client, sizeof(xChangeDeviceControlReply),
+                                &rep);
+             return Success;
+@@ -199,6 +204,30 @@ ProcXChangeDeviceControl(ClientPtr clien
+         }
+         break;
++    case DEVICE_ABS_AREA:
++        area = (xDeviceAbsAreaCtl *)&stuff[1];
++
++        status = ChangeDeviceControl(client, dev, (xDeviceCtl *) area);
++
++        if (status == Success) {
++            dev->absolute->offset_x = area->offset_x;
++            dev->absolute->offset_y = area->offset_y;
++            dev->absolute->width = area->width;
++            dev->absolute->height = area->height;
++            dev->absolute->screen = area->screen;
++            dev->absolute->following = area->following;
++        } else if (status == DeviceBusy || status == BadValue) {
++            rep.status = status;
++            WriteReplyToClient(client, sizeof(xChangeDeviceControlReply),
++                                     &rep);
++            return Success;
++        } else {
++            SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
++                              BadMatch);
++            return Success;
++        }
++
++        break;        
+     case DEVICE_CORE:
+         c = (xDeviceCoreCtl *)&stuff[1];
+Index: xorg-server-1.1.99.3/Xi/getdctl.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/Xi/getdctl.c     2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/Xi/getdctl.c  2007-01-29 22:59:27.000000000 +0000
+@@ -124,14 +124,23 @@ ProcXGetDeviceControl(ClientPtr client)
+       total_length = sizeof(xDeviceResolutionState) +
+           (3 * sizeof(int) * dev->valuator->numAxes);
+       break;
+-    case DEVICE_TOUCHSCREEN:
+-        if (!dev->touchscreen) {
++    case DEVICE_ABS_CALIB:
++        if (!dev->absolute) {
+             SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0,
+                               BadMatch);
+             return Success;
+         }
+-        total_length = sizeof(xDeviceTSCtl);
++        total_length = sizeof(xDeviceAbsCalibCtl);
++        break;
++    case DEVICE_ABS_AREA:
++        if (!dev->absolute) {
++            SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0,
++                              BadMatch);
++            return Success;
++        }
++
++        total_length = sizeof(xDeviceAbsAreaCtl);
+         break;
+     case DEVICE_CORE:
+         total_length = sizeof(xDeviceCoreCtl);
+@@ -152,8 +161,11 @@ ProcXGetDeviceControl(ClientPtr client)
+     case DEVICE_RESOLUTION:
+       CopySwapDeviceResolution(client, dev->valuator, buf, total_length);
+       break;
+-    case DEVICE_TOUCHSCREEN:
+-        CopySwapDeviceTouchscreen(client, dev->touchscreen, buf);
++    case DEVICE_ABS_CALIB:
++        CopySwapDeviceAbsCalib(client, dev->absolute, buf);
++        break;
++    case DEVICE_ABS_AREA:
++        CopySwapDeviceAbsArea(client, dev->absolute, buf);
+         break;
+     case DEVICE_CORE:
+         CopySwapDeviceCore(client, dev, buf);
+@@ -206,28 +218,61 @@ CopySwapDeviceResolution(ClientPtr clien
+     }
+ }
+-void CopySwapDeviceTouchscreen (ClientPtr client, TouchscreenClassPtr dts,
++void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
+                                 char *buf)
+ {
+     register char n;
+-    xDeviceTSState *ts = (xDeviceTSState *) buf;
++    xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf;
+-    ts->control = DEVICE_TOUCHSCREEN;
+-    ts->length = sizeof(ts);
+-    ts->min_x = dts->min_x;
+-    ts->max_x = dts->max_x;
+-    ts->min_y = dts->min_y;
+-    ts->max_y = dts->max_y;
+-    ts->button_threshold = dts->button_threshold;
++    calib->control = DEVICE_ABS_CALIB;
++    calib->length = sizeof(calib);
++    calib->min_x = dts->min_x;
++    calib->max_x = dts->max_x;
++    calib->min_y = dts->min_y;
++    calib->max_y = dts->max_y;
++    calib->flip_x = dts->flip_x;
++    calib->flip_y = dts->flip_y;
++    calib->rotation = dts->rotation;
++    calib->button_threshold = dts->button_threshold;
+     if (client->swapped) {
+-        swaps(&ts->control, n);
+-        swaps(&ts->length, n);
+-        swapl(&ts->min_x, n);
+-        swapl(&ts->max_x, n);
+-        swapl(&ts->min_y, n);
+-        swapl(&ts->max_y, n);
+-        swapl(&ts->button_threshold, n);
++        swaps(&calib->control, n);
++        swaps(&calib->length, n);
++        swapl(&calib->min_x, n);
++        swapl(&calib->max_x, n);
++        swapl(&calib->min_y, n);
++        swapl(&calib->max_y, n);
++        swapl(&calib->flip_x, n);
++        swapl(&calib->flip_y, n);
++        swapl(&calib->rotation, n);
++        swapl(&calib->button_threshold, n);
++    }
++}
++
++void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
++                                 char *buf)
++{
++    register char n;
++    xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf;
++
++    area->control = DEVICE_ABS_AREA;
++    area->length = sizeof(area);
++    area->offset_x = dts->offset_x;
++    area->offset_y = dts->offset_y;
++    area->width = dts->width;
++    area->height = dts->height;
++    area->screen = dts->screen;
++    area->following = dts->following;
++
++    if (client->swapped) {
++        swaps(&area->control, n);
++        swaps(&area->length, n);
++        swapl(&area->offset_x, n);
++        swapl(&area->offset_y, n);
++        swapl(&area->width, n);
++        swapl(&area->height, n);
++        swapl(&area->screen, n);
++        swapl(&area->following, n);
+     }
+ }
+Index: xorg-server-1.1.99.3/Xi/getdctl.h
+===================================================================
+--- xorg-server-1.1.99.3.orig/Xi/getdctl.h     2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/Xi/getdctl.h  2007-01-29 22:59:27.000000000 +0000
+@@ -42,10 +42,13 @@ void CopySwapDeviceResolution(ClientPtr 
+                             int       /* length */
+     );
+-void CopySwapDeviceTouchscreen(ClientPtr /* client */ ,
+-                               TouchscreenClassPtr /* ts */ ,
+-                               char * /* buf */
+-    );
++void CopySwapDeviceAbsCalib (ClientPtr client,
++                             AbsoluteClassPtr dts,
++                             char *buf);
++
++void CopySwapDeviceAbsArea (ClientPtr client,
++                            AbsoluteClassPtr dts,
++                            char *buf);
+ void CopySwapDeviceCore(ClientPtr /* client */ ,
+                         DeviceIntPtr /* dev */ ,
+Index: xorg-server-1.1.99.3/Xi/stubs.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/Xi/stubs.c       2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/Xi/stubs.c    2007-01-29 22:59:27.000000000 +0000
+@@ -287,7 +287,7 @@ ChangeDeviceControl(register ClientPtr c
+     switch (control->control) {
+     case DEVICE_RESOLUTION:
+       return (BadMatch);
+-    case DEVICE_TOUCHSCREEN:
++    case DEVICE_ABS_CALIB:
+         return (BadMatch);
+     case DEVICE_CORE:
+         return (BadMatch);
+Index: xorg-server-1.1.99.3/dix/devices.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/dix/devices.c    2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/dix/devices.c 2007-01-29 22:59:27.000000000 +0000
+@@ -117,7 +117,7 @@ AddInputDevice(DeviceProc deviceProc, Bo
+     dev->button = (ButtonClassPtr)NULL;
+     dev->focus = (FocusClassPtr)NULL;
+     dev->proximity = (ProximityClassPtr)NULL;
+-    dev->touchscreen = (TouchscreenClassPtr)NULL;
++    dev->absolute = (AbsoluteClassPtr)NULL;
+     dev->kbdfeed = (KbdFeedbackPtr)NULL;
+     dev->ptrfeed = (PtrFeedbackPtr)NULL;
+     dev->intfeed = (IntegerFeedbackPtr)NULL;
+@@ -821,22 +821,31 @@ InitValuatorClassDeviceStruct(DeviceIntP
+ }
+ _X_EXPORT Bool
+-InitTouchscreenClassDeviceStruct(DeviceIntPtr dev)
++InitAbsoluteClassDeviceStruct(DeviceIntPtr dev)
+ {
+-    register TouchscreenClassPtr tsc;
++    register AbsoluteClassPtr abs;
+-    tsc = (TouchscreenClassPtr)xalloc(sizeof(TouchscreenClassRec));
+-    if (!tsc)
++    abs = (AbsoluteClassPtr)xalloc(sizeof(AbsoluteClassRec));
++    if (!abs)
+         return FALSE;
+     /* we don't do anything sensible with these, but should */
+-    tsc->min_x = -1;
+-    tsc->min_y = -1;
+-    tsc->max_x = -1;
+-    tsc->max_y = -1;
++    abs->min_x = -1;
++    abs->min_y = -1;
++    abs->max_x = -1;
++    abs->max_y = -1;
++    abs->flip_x = 0;
++    abs->flip_y = 0;
++    abs->rotation = 0;
++    abs->button_threshold = 0;
+-    tsc->button_threshold = 0;
+-    dev->touchscreen = tsc;
++    abs->offset_x = 0;
++    abs->offset_y = 0;
++    abs->width = -1;
++    abs->height = -1;
++    abs->following = 0;
++
++    dev->absolute = abs;
+     return TRUE;
+ }
+Index: xorg-server-1.1.99.3/hw/xfree86/common/xf86Xinput.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/xfree86/common/xf86Xinput.c   2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/hw/xfree86/common/xf86Xinput.c        2007-01-29 22:59:27.000000000 +0000
+@@ -538,7 +538,8 @@ ChangeDeviceControl (ClientPtr client, D
+       switch (control->control) {
+       case DEVICE_CORE:
+       case DEVICE_RESOLUTION:
+-      case DEVICE_TOUCHSCREEN:
++      case DEVICE_ABS_CALIB:
++      case DEVICE_ABS_AREA:
+         return Success;
+       default:
+         return BadMatch;
+Index: xorg-server-1.1.99.3/include/input.h
+===================================================================
+--- xorg-server-1.1.99.3.orig/include/input.h  2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/include/input.h       2007-01-29 22:59:27.000000000 +0000
+@@ -238,7 +238,7 @@ extern Bool InitValuatorClassDeviceStruc
+     int /*numMotionEvents*/,
+     int /*mode*/);
+-extern Bool InitTouchscreenClassDeviceStruct(
++extern Bool InitAbsoluteClassDeviceStruct(
+     DeviceIntPtr /*device*/);
+ extern Bool InitFocusClassDeviceStruct(
+Index: xorg-server-1.1.99.3/include/inputstr.h
+===================================================================
+--- xorg-server-1.1.99.3.orig/include/inputstr.h       2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/include/inputstr.h    2007-01-29 22:59:27.000000000 +0000
+@@ -185,13 +185,25 @@ typedef struct _ProximityClassRec {
+     char      pad;
+ } ProximityClassRec, *ProximityClassPtr;
+-typedef struct _TouchscreenClassRec {
++typedef struct _AbsoluteClassRec {
++    /* Calibration. */
+     int         min_x;
+     int         max_x;
+     int         min_y;
+     int         max_y;
++    int         flip_x;
++    int         flip_y;
++    int               rotation;
+     int         button_threshold;
+-} TouchscreenClassRec, *TouchscreenClassPtr;
++
++    /* Area. */
++    int         offset_x;
++    int         offset_y;
++    int         width;
++    int         height;
++    int         screen;
++    XID               following;
++} AbsoluteClassRec, *AbsoluteClassPtr;
+ typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr;
+ typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr;
+@@ -293,7 +305,7 @@ typedef struct _DeviceIntRec {
+     ButtonClassPtr    button;
+     FocusClassPtr     focus;
+     ProximityClassPtr proximity;
+-    TouchscreenClassPtr touchscreen;
++    AbsoluteClassPtr    absolute;
+     KbdFeedbackPtr    kbdfeed;
+     PtrFeedbackPtr    ptrfeed;
+     IntegerFeedbackPtr        intfeed;
+Index: xorg-server-1.1.99.3/configure.ac
+===================================================================
+--- xorg-server-1.1.99.3.orig/configure.ac     2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/configure.ac  2007-01-29 22:59:27.000000000 +0000
+@@ -1586,7 +1586,7 @@ if test "$KDRIVE" = yes; then
+     #KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \
+     #    $MIEXT_SHADOW_LIB $XPSTUBS_LIB"
+     KDRIVE_XKB_DDX_LIB='$(top_builddir)/hw/kdrive/src/libkdrivexkb.a'
+-    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $KDRIVE_XKB_DDX_LIB $XKB_LIB $KDRIVE_XKB_DDX_LIB$COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB $CONFIG_LIB"
++    KDRIVE_PURE_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $KDRIVE_XKB_DDX_LIB $XKB_LIB $KDRIVE_XKB_DDX_LIB $COMPOSITE_LIB $XPSTUBS_LIB $OS_LIB $CONFIG_LIB"
+     KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
+     KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a'
+     KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c  2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c       2007-01-29 22:59:27.000000000 +0000
+@@ -94,7 +94,7 @@ TsRead (int fd, void *closure)
+                event.pressure);
+         discard = 0;
+         if (event.pressure) {
+-            if (event.pressure > pi->dixdev->touchscreen->button_threshold) 
++            if (event.pressure > pi->dixdev->absolute->button_threshold) 
+                 flags = KD_BUTTON_8;
+             else
+                 flags = KD_BUTTON_1;
+@@ -356,9 +356,9 @@ TslibEnable (KdPointerInfo *pi)
+             close(private->fd);
+         return BadAlloc;
+     }
+-    if (pi->dixdev && pi->dixdev->touchscreen &&
+-        pi->dixdev->touchscreen->button_threshold == 0)
+-        pi->dixdev->touchscreen->button_threshold = 115;
++    if (pi->dixdev && pi->dixdev->absolute &&
++        pi->dixdev->absolute->button_threshold == 0)
++        pi->dixdev->absolute->button_threshold = 115;
+     DebugF("[tslib/TslibEnable] successfully enabled %s\n", pi->path);
+     KdRegisterFd(private->fd, TsRead, pi);
+Index: xorg-server-1.1.99.3/hw/kdrive/src/kinput.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kinput.c   2007-01-29 22:58:18.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/src/kinput.c        2007-01-29 22:59:27.000000000 +0000
+@@ -444,7 +444,7 @@ KdPointerProc(DeviceIntPtr pDevice, int 
+ #ifdef XINPUT
+         if (pi->inputClass == KD_TOUCHSCREEN) {
+-            InitTouchscreenClassDeviceStruct(pDevice);
++            InitAbsoluteClassDeviceStruct(pDevice);
+             xiclass = AtomFromName(XI_TOUCHSCREEN);
+         }
+         else {
+@@ -2323,8 +2323,8 @@ ChangeDeviceControl(register ClientPtr c
+         /* FIXME do something more intelligent here */
+         return BadMatch;
+-    case DEVICE_TOUCHSCREEN:
+-        if (!pDev->touchscreen)
++    case DEVICE_ABS_CALIB:
++        if (!pDev->absolute)
+             return BadDevice;
+         else
+             return Success;
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch
new file mode 100644 (file)
index 0000000..06eab81
--- /dev/null
@@ -0,0 +1,503 @@
+# Kdrive evdev support patch, posted by Ander Conselvan de Oliveira at
+# http://lists.freedesktop.org/archives/xorg/2005-December/011635.html
+---
+# hw/kdrive/linux/evdev.c |  385 ++++++++++++++++++++++++++++++++++++++++++++++--
+# hw/kdrive/src/kdrive.c  |    9 +
+# hw/kdrive/src/kdrive.h  |    4 
+# 3 files changed, 386 insertions(+), 12 deletions(-)
+#
+Index: xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/evdev.c  2006-11-03 14:49:05.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c       2007-01-25 22:05:48.000000000 +0000
+@@ -31,9 +31,11 @@
+ #include <X11/X.h>
+ #include <X11/Xproto.h>
+ #include <X11/Xpoll.h>
++#include <X11/keysym.h>
+ #include "inputstr.h"
+ #include "scrnintstr.h"
+ #include "kdrive.h"
++#include "kkeymap.h"
+ #define NUM_EVENTS  128
+ #define ABS_UNSET   -65535
+@@ -107,9 +109,10 @@ EvdevRead (int evdevPort, void *closure)
+ {
+     KdPointerInfo                *pi = closure;
+     Kevdev                       *ke = pi->driverPrivate;
+-    int                        i;
++    int                        i, j;
+     struct input_event        events[NUM_EVENTS];
+     int                        n;
++    int                 flags;
+     n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event));
+     if (n <= 0)
+@@ -117,22 +120,64 @@ EvdevRead (int evdevPort, void *closure)
+     n /= sizeof (struct input_event);
+     for (i = 0; i < n; i++)
+     {
++      flags = KD_MOUSE_DELTA | kdPointerInfo->buttonState;
+         switch (events[i].type) {
+         case EV_SYN:
+             break;
+         case EV_KEY:
+-            EvdevMotion (pi);
+-            ASSIGNBIT(ke->key,events[i].code, events[i].value);
+-            if (events[i].code < 0x100)
+-                ErrorF ("key %d %d\n", events[i].code, events[i].value);
+-            else
+-                ErrorF ("key 0x%x %d\n", events[i].code, events[i].value);
++        if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) {
++              switch (events[i].code) {
++              case BTN_LEFT:
++                if (events[i].value == 1)
++                  flags |= KD_BUTTON_1;
++                else
++                  flags &= ~KD_BUTTON_1;
++                break;
++              case BTN_MIDDLE:
++                if (events[i].value == 1)
++                  flags |= KD_BUTTON_2;
++                else
++                  flags &= ~KD_BUTTON_2;
++                break;
++              case BTN_RIGHT:
++                if (events[i].value == 1)
++                  flags |= KD_BUTTON_3;
++                else
++                  flags &= ~KD_BUTTON_3;
++                break;
++              default:
++                /* Unknow button */
++                break;
++                      }
++              KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
++          }
+             break;
+         case EV_REL:
+-            ke->rel[events[i].code] += events[i].value;
++          if (events[i].code == REL_X) {
++            KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0);
++          }
++          else if (events[i].code == REL_Y) {
++            KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value);
++          }
++          else if (events[i].code == REL_WHEEL) {           
++            for (j = 0; j < abs (events[i].value); j++) {
++              if (events[i].value > 0)
++                flags |= KD_BUTTON_4;
++              else
++                flags |= KD_BUTTON_5;
++
++              KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
++
++              if (events[i].value > 0)
++                flags &= ~KD_BUTTON_4;
++              else
++                flags &= ~KD_BUTTON_5;
++
++              KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
++            } /* events[i].code == REL_WHEEL */
++          }
+             break;
+         case EV_ABS:
+-            ke->abs[events[i].code] = events[i].value;
+             break;
+         }
+     }
+@@ -162,6 +207,12 @@ EvdevInit (KdPointerInfo *pi)
+         for (i = 0; i < NUM_DEFAULT_EVDEV; i++) {
+             fd = open (kdefaultEvdev[i], 2);
+                 if (fd >= 0) {
++                    if (ioctl (fd, EVIOCGRAB, 1) < 0)
++                    {
++                        close (fd);
++                        continue;
++                    }
++
+                     pi->path = KdSaveString (kdefaultEvdev[i]);
+                     break;
+                 }
+@@ -300,7 +351,319 @@ KdPointerDriver LinuxEvdevMouseDriver = 
+     NULL,
+ };
+-#if 0
++/* Keyboard */
++
++int kbd_fd = -1;
++int EvdevInputType = 0;
++
++KeySym evdevKeymap[(194 - 1 + 1) * 2] = {
++/* These are directly mapped from DOS scanset 0 */
++/*      1     8 */       XK_Escape, NoSymbol,
++/*      2     9 */       XK_1,  XK_exclam,
++/*      3    10 */       XK_2,  XK_at,
++/*      4    11 */       XK_3,  XK_numbersign,
++/*      5    12 */       XK_4,  XK_dollar,
++/*      6    13 */       XK_5,  XK_percent,
++/*      7    14 */       XK_6,  XK_asciicircum,
++/*      8    15 */       XK_7,  XK_ampersand,
++/*      9    16 */       XK_8,  XK_asterisk,
++/*     10    17 */       XK_9,  XK_parenleft,
++/*     11    18 */       XK_0,  XK_parenright,
++/*     12    19 */       XK_minus,      XK_underscore,
++/*     13    20 */       XK_equal,      XK_plus,
++/*     14    21 */       XK_BackSpace,  NoSymbol,
++/*     15    22 */       XK_Tab,        NoSymbol,
++/*     16    23 */       XK_Q,  NoSymbol,
++/*     17    24 */       XK_W,  NoSymbol,
++/*     18    25 */       XK_E,  NoSymbol,
++/*     19    26 */       XK_R,  NoSymbol,
++/*     20    27 */       XK_T,  NoSymbol,
++/*     21    28 */       XK_Y,  NoSymbol,
++/*     22    29 */       XK_U,  NoSymbol,
++/*     23    30 */       XK_I,  NoSymbol,
++/*     24    31 */       XK_O,  NoSymbol,
++/*     25    32 */       XK_P,  NoSymbol,
++/*     26    33 */       XK_bracketleft,        XK_braceleft,
++/*     27    34 */       XK_bracketright,       XK_braceright,
++/*     28    35 */       XK_Return,     NoSymbol,
++/*     29    36 */       XK_Control_L,  NoSymbol,
++/*     30    37 */       XK_A,  NoSymbol,
++/*     31    38 */       XK_S,  NoSymbol,
++/*     32    39 */       XK_D,  NoSymbol,
++/*     33    40 */       XK_F,  NoSymbol,
++/*     34    41 */       XK_G,  NoSymbol,
++/*     35    42 */       XK_H,  NoSymbol,
++/*     36    43 */       XK_J,  NoSymbol,
++/*     37    44 */       XK_K,  NoSymbol,
++/*     38    45 */       XK_L,  NoSymbol,
++/*     39    46 */       XK_semicolon,  XK_colon,
++/*     40    47 */       XK_apostrophe, XK_quotedbl,
++/*     41    48 */       XK_grave,      XK_asciitilde,
++/*     42    49 */       XK_Shift_L,    NoSymbol,
++/*     43    50 */       XK_backslash,  XK_bar,
++/*     44    51 */       XK_Z,  NoSymbol,
++/*     45    52 */       XK_X,  NoSymbol,
++/*     46    53 */       XK_C,  NoSymbol,
++/*     47    54 */       XK_V,  NoSymbol,
++/*     48    55 */       XK_B,  NoSymbol,
++/*     49    56 */       XK_N,  NoSymbol,
++/*     50    57 */       XK_M,  NoSymbol,
++/*     51    58 */       XK_comma,      XK_less,
++/*     52    59 */       XK_period,     XK_greater,
++/*     53    60 */       XK_slash,      XK_question,
++/*     54    61 */       XK_Shift_R,    NoSymbol,
++/*     55    62 */       XK_KP_Multiply,        NoSymbol,
++/*     56    63 */       XK_Alt_L,      XK_Meta_L,
++/*     57    64 */       XK_space,      NoSymbol,
++/*     58    65 */       XK_Caps_Lock,  NoSymbol,
++/*     59    66 */       XK_F1, NoSymbol,
++/*     60    67 */       XK_F2, NoSymbol,
++/*     61    68 */       XK_F3, NoSymbol,
++/*     62    69 */       XK_F4, NoSymbol,
++/*     63    70 */       XK_F5, NoSymbol,
++/*     64    71 */       XK_F6, NoSymbol,
++/*     65    72 */       XK_F7, NoSymbol,
++/*     66    73 */       XK_F8, NoSymbol,
++/*     67    74 */       XK_F9, NoSymbol,
++/*     68    75 */       XK_F10,        NoSymbol,
++/*     69    76 */       XK_Break,      XK_Pause,
++/*     70    77 */       XK_Scroll_Lock,        NoSymbol,
++/*     71    78 */       XK_KP_Home,    XK_KP_7,
++/*     72    79 */       XK_KP_Up,      XK_KP_8,
++/*     73    80 */       XK_KP_Page_Up, XK_KP_9,
++/*     74    81 */       XK_KP_Subtract,        NoSymbol,
++/*     75    82 */       XK_KP_Left,    XK_KP_4,
++/*     76    83 */       XK_KP_5,       NoSymbol,
++/*     77    84 */       XK_KP_Right,   XK_KP_6,
++/*     78    85 */       XK_KP_Add,     NoSymbol,
++/*     79    86 */       XK_KP_End,     XK_KP_1,
++/*     80    87 */       XK_KP_Down,    XK_KP_2,
++/*     81    88 */       XK_KP_Page_Down,       XK_KP_3,
++/*     82    89 */       XK_KP_Insert,  XK_KP_0,
++/*     83    90 */       XK_KP_Delete,  XK_KP_Decimal,
++/*     84    91 */     NoSymbol,        NoSymbol,
++/*     85    92 */     NoSymbol,        NoSymbol,
++/*     86    93 */     NoSymbol,        NoSymbol,
++/*     87    94 */       XK_F11,        NoSymbol,
++/*     88    95 */       XK_F12,        NoSymbol,
++
++/* These are remapped from the extended set (using ExtendMap) */
++
++/*     89    96 */       XK_Control_R,  NoSymbol,
++/*     90    97 */       XK_KP_Enter,   NoSymbol,
++/*     91    98 */       XK_KP_Divide,  NoSymbol,
++/*     92    99 */       XK_Sys_Req,    XK_Print,
++/*     93   100 */       XK_Alt_R,      XK_Meta_R,
++/*     94   101 */       XK_Num_Lock,   NoSymbol,
++/*     95   102 */       XK_Home,       NoSymbol,
++/*     96   103 */       XK_Up,         NoSymbol,
++/*     97   104 */       XK_Page_Up,    NoSymbol,
++/*     98   105 */       XK_Left,       NoSymbol,
++/*     99   106 */       XK_Right,      NoSymbol,
++/*    100   107 */       XK_End,        NoSymbol,
++/*    101   108 */       XK_Down,       NoSymbol,
++/*    102   109 */       XK_Page_Down,  NoSymbol,
++/*    103   110 */       XK_Insert,     NoSymbol,
++/*    104   111 */       XK_Delete,     NoSymbol,
++/*    105   112 */       XK_Super_L,    NoSymbol,
++/*    106   113 */       XK_Super_R,    NoSymbol,
++/*    107   114 */       XK_Menu,       NoSymbol,
++/*    108   115 */       NoSymbol,      NoSymbol,
++/*    109   116 */       NoSymbol,      NoSymbol,
++/*    110   117 */       NoSymbol,      NoSymbol,
++/*    111   118 */       NoSymbol,      NoSymbol,
++/*    112   119 */       NoSymbol,      NoSymbol,
++
++/*    113   120 */      NoSymbol,     NoSymbol,
++/*    114   121 */      NoSymbol,     NoSymbol,
++/*    115   122 */      NoSymbol,     NoSymbol,
++/*    116   123 */      NoSymbol,     NoSymbol,
++/*    117   124 */      NoSymbol,     NoSymbol,
++/*    118   125 */      NoSymbol,     NoSymbol,
++/*    119   126 */      NoSymbol,     NoSymbol,
++/*    120   127 */      NoSymbol,     NoSymbol,
++/*    121   128 */      NoSymbol,     NoSymbol,
++/*    122   129 */      NoSymbol,     NoSymbol,
++/*    123   130 */      NoSymbol,     NoSymbol,
++/*    124   131 */      NoSymbol,     NoSymbol,
++/*    125   132 */      NoSymbol,     NoSymbol,
++/*    126   133 */      NoSymbol,     NoSymbol,
++/*    127   134 */      NoSymbol,     NoSymbol,
++/*    128   135 */      NoSymbol,     NoSymbol,
++/*    129   136 */      NoSymbol,     NoSymbol,
++/*    130   137 */      NoSymbol,     NoSymbol,
++/*    131   138 */      NoSymbol,     NoSymbol,
++/*    132   139 */      NoSymbol,     NoSymbol,
++/*    133   140 */      NoSymbol,     NoSymbol,
++/*    134   141 */      NoSymbol,     NoSymbol,
++/*    135   142 */      NoSymbol,     NoSymbol,
++/*    136   143 */      NoSymbol,     NoSymbol,
++/*    137   144 */      NoSymbol,     NoSymbol,
++/*    138   145 */      NoSymbol,     NoSymbol,
++/*    139   146 */      NoSymbol,     NoSymbol,
++/*    140   147 */      NoSymbol,     NoSymbol,
++/*    141   148 */      NoSymbol,     NoSymbol,
++/*    142   149 */      NoSymbol,     NoSymbol,
++/*    143   150 */      NoSymbol,     NoSymbol,
++/*    144   151 */      NoSymbol,     NoSymbol,
++/*    145   152 */      NoSymbol,     NoSymbol,
++/*    146   153 */      NoSymbol,     NoSymbol,
++/*    147   154 */      NoSymbol,     NoSymbol,
++/*    148   155 */      NoSymbol,     NoSymbol,
++/*    149   156 */      NoSymbol,     NoSymbol,
++/*    150   157 */      NoSymbol,     NoSymbol,
++/*    151   158 */      NoSymbol,     NoSymbol,
++/*    152   159 */      NoSymbol,     NoSymbol,
++/*    153   160 */      NoSymbol,     NoSymbol,
++/*    154   161 */      NoSymbol,     NoSymbol,
++/*    155   162 */      NoSymbol,     NoSymbol,
++/*    156   163 */      NoSymbol,     NoSymbol,
++/*    157   164 */      NoSymbol,     NoSymbol,
++/*    158   165 */      NoSymbol,     NoSymbol,
++/*    159   166 */      NoSymbol,     NoSymbol,
++/*    160   167 */      NoSymbol,     NoSymbol,
++/*    161   168 */      NoSymbol,     NoSymbol,
++/*    162   169 */      NoSymbol,     NoSymbol,
++/*    163   170 */      NoSymbol,     NoSymbol,
++/*    164   171 */      NoSymbol,     NoSymbol,
++/*    165   172 */      NoSymbol,     NoSymbol,
++/*    166   173 */      NoSymbol,     NoSymbol,
++/*    167   174 */      NoSymbol,     NoSymbol,
++/*    168   175 */      NoSymbol,     NoSymbol,
++/*    169   176 */      NoSymbol,     NoSymbol,
++/*    170   177 */      NoSymbol,     NoSymbol,
++/*    171   178 */      NoSymbol,     NoSymbol,
++/*    172   179 */      NoSymbol,     NoSymbol,
++/*    173   180 */      NoSymbol,     NoSymbol,
++/*    174   181 */      NoSymbol,     NoSymbol,
++/*    175   182 */      NoSymbol,     NoSymbol,
++/*    176   183 */      NoSymbol,     NoSymbol,
++/*    177   184 */      NoSymbol,     NoSymbol,
++/*    178   185 */      NoSymbol,     NoSymbol,
++/*    179   186 */      NoSymbol,     NoSymbol,
++/*    180   187 */      NoSymbol,     NoSymbol,
++/*    181   188 */      NoSymbol,     NoSymbol,
++/*    182   189 */      NoSymbol,     NoSymbol,
++/*    183   190 */      NoSymbol,     NoSymbol,
++/*    184   191 */      NoSymbol,     NoSymbol,
++/*    185   192 */      NoSymbol,     NoSymbol,
++/*    186   193 */      NoSymbol,     NoSymbol,
++/*    187   194 */      NoSymbol,     NoSymbol,
++/*    188   195 */      NoSymbol,     NoSymbol,
++/*    189   196 */      NoSymbol,     NoSymbol,
++/*    190   197 */      NoSymbol,     NoSymbol,
++/*    191   198 */      NoSymbol,     NoSymbol,
++/*    192   199 */      NoSymbol,     NoSymbol,
++/*    193   200 */      NoSymbol,     NoSymbol,
++/*    194   201 */      NoSymbol,     NoSymbol,
++};
++
++static void
++EvdevKbdRead (int fd, void *closure)
++{
++    int i, n;
++    struct input_event events[NUM_EVENTS];
++
++    n = read (fd, &events, NUM_EVENTS * sizeof (struct input_event));
++    if (n <= 0)
++      return;
++
++    n /= sizeof (struct input_event);
++
++    for (i = 0; i < n; i++)
++    {
++        if (events[i].type == EV_KEY)
++                  KdEnqueueKeyboardEvent (events[i].code, !events[i].value);
++    }
++}
++
++static void
++EvdevKbdLoad (void)
++{
++    kdMinScanCode = 0;
++    kdMaxScanCode = 193;
++    kdKeymapWidth = 2;
++    memcpy (kdKeymap, evdevKeymap, sizeof (evdevKeymap));
++}
++
++static int
++EvdevKbdInit (void)
++{
++    int fd, i;
++
++    if (!EvdevInputType)
++        EvdevInputType = KdAllocInputType ();
++
++    if (!kdKeyboard)
++    {
++        for (i = 0; i < NUM_DEFAULT_EVDEV; i++)
++        {
++            fd = open (kdefaultEvdev[i], 2);
++            if (fd >= 0)
++            {
++                kdKeyboard = KdSaveString (kdefaultEvdev[i]);
++                break;
++            }
++      }
++    }
++    else
++    {
++        fd = open (kdKeyboard, O_RDWR);
++        if (fd < 0)
++            return FALSE;
++    }
++
++    if (ioctl (fd, EVIOCGRAB, 1) < 0)
++    {
++        close (fd);
++      return FALSE;
++    }
++
++    if (!KdRegisterFd (EvdevInputType, fd, EvdevKbdRead, NULL))
++        return FALSE;
++
++    kbd_fd = fd;
++    return TRUE;
++}
++
++static void
++EvdevKbdFini (void)
++{
++}
++
++static void
++EvdevKbdLeds (int leds)
++{
++    struct input_event event;
++
++    memset(&event, 0, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_CAPSL;
++    event.value = leds & (1 << 0) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_NUML;
++    event.value = leds & (1 << 1) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_SCROLLL;
++    event.value = leds & (1 << 2) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++
++    event.type = EV_LED;
++    event.code = LED_COMPOSE;
++    event.value = leds & (1 << 3) ? 1 : 0;
++    write(kbd_fd, (char *) &event, sizeof(event));
++}
++
++static void
++EvdevKbdBell (int volume, int frequency, int duration)
++{
++}
++
+ KdKeyboardFuncs LinuxEvdevKeyboardFuncs = {
+     EvdevKbdLoad,
+     EvdevKbdInit,
+@@ -309,4 +672,4 @@ KdKeyboardFuncs LinuxEvdevKeyboardFuncs 
+     EvdevKbdFini,
+     0,
+ };
+-#endif
++
+Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.c   2006-11-03 14:49:05.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c        2007-01-25 21:56:32.000000000 +0000
+@@ -80,6 +80,7 @@ Bool                kdDontZap;
+ Bool              kdEnabled;
+ int               kdSubpixelOrder;
+ int               kdVirtualTerminal = -1;
++char              *kdKeyboard = 0;
+ Bool              kdSwitchPending;
+ char              *kdSwitchCmd;
+ DDXPointRec       kdOrigin;
+@@ -707,6 +708,14 @@ KdProcessArgument (int argc, char **argv
+           UseMsg ();
+       return 2;
+     }
++    if (!strcmp (argv[i], "-keyboard"))
++    {
++      if ((i+1) < argc)
++          kdKeyboard = argv[i+1];
++      else
++          UseMsg ();
++      return 2;
++    }
+     if (!strcmp (argv[i], "-rgba"))
+     {
+       if ((i+1) < argc)
+Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.h   2006-11-03 14:49:05.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h        2007-01-25 21:58:26.000000000 +0000
+@@ -512,6 +512,7 @@ extern Bool                kdEmulateMiddleButton;
+ extern Bool           kdDisableZaphod;
+ extern Bool           kdDontZap;
+ extern int            kdVirtualTerminal;
++extern char           *kdKeyboard;
+ extern char           *kdSwitchCmd;
+ extern KdOsFuncs      *kdOsFuncs;
+@@ -875,12 +876,13 @@ void
+ ProcessInputEvents (void);
+ extern KdPointerDriver        LinuxMouseDriver;
+-extern KdPointerDriver        LinuxEvdevDriver;
++extern KdPointerDriver        LinuxEvdevMouseFuncs;
+ extern KdPointerDriver        Ps2MouseDriver;
+ extern KdPointerDriver        BusMouseDriver;
+ extern KdPointerDriver        MsMouseDriver;
+ extern KdPointerDriver        TsDriver;
+ extern KdKeyboardDriver       LinuxKeyboardDriver;
++extern KdKeyboardFuncs        LinuxEvdevKeyboardFuncs;
+ extern KdOsFuncs      LinuxFuncs;
+ extern KdPointerDriver        VxWorksMouseDriver;
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch
new file mode 100644 (file)
index 0000000..d4f885e
--- /dev/null
@@ -0,0 +1,53 @@
+--- xserver/hw/kdrive/fbdev/fbinit.c~  2006-01-31 17:09:33.000000000 +0100
++++ xserver/hw/kdrive/fbdev/fbinit.c   2006-01-31 17:11:55.000000000 +0100
+@@ -28,6 +28,8 @@
+ #endif
+ #include <fbdev.h>
++extern int use_evdev;
++
+ void
+ InitCard (char *name)
+ {
+@@ -45,7 +47,10 @@
+ void
+ InitInput (int argc, char **argv)
+ {
+-    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
++    if (use_evdev)
++        KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs);
++    else
++        KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ #ifdef TOUCHSCREEN
+     KdAddMouseDriver (&TsFuncs);
+ #endif
+--- xserver/hw/kdrive/src/kdrive.c.orig        2006-01-31 17:13:28.000000000 +0100
++++ xserver/hw/kdrive/src/kdrive.c     2006-01-31 17:15:28.000000000 +0100
+@@ -44,6 +44,8 @@
+ #include "dpmsproc.h"
+ #endif
++int use_evdev = 0;
++
+ typedef struct _kdDepths {
+     CARD8   depth;
+     CARD8   bpp;
+@@ -687,6 +689,7 @@
+     ErrorF("-videoTest       Start the server, pause momentarily and exit\n");
+     ErrorF("-origin X,Y      Locates the next screen in the the virtual screen (Xinerama)\n");
+     ErrorF("-mouse path[,n]  Filename of mouse device, n is number of buttons\n");
++    ErrorF("-use-evdev       Use Linux evdev input\n");
+     ErrorF("-switchCmd       Command to execute on vt switch\n");
+     ErrorF("-nozap           Don't terminate server on Ctrl+Alt+Backspace\n");
+     ErrorF("vtxx             Use virtual terminal xx instead of the next available\n");
+@@ -796,6 +799,10 @@
+           UseMsg ();
+       return 2;
+     }
++    if (!strcmp (argv[i], "-use-evdev"))
++    {
++      use_evdev = 1;
++    }
+     if (!strcmp (argv[i], "-keyboard"))
+     {
+       if ((i+1) < argc)
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch
new file mode 100644 (file)
index 0000000..23a0f7e
--- /dev/null
@@ -0,0 +1,43 @@
+---
+ hw/kdrive/src/kmode.c |   21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+Index: xorg-server-1.1.99.3/hw/kdrive/src/kmode.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kmode.c    2007-01-25 23:53:59.000000000 +0000
++++ xorg-server-1.1.99.3/hw/kdrive/src/kmode.c 2007-01-27 17:17:09.000000000 +0000
+@@ -41,6 +41,11 @@ const KdMonitorTiming  kdMonitorTimings[
+                   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,22 @@ const KdMonitorTiming  kdMonitorTimings[
+                  16,      48,     160,    KdSyncNegative, /* 31.469 */
+                  10,      33,     45,     KdSyncNegative, /* 59.940 */
+     },
++
++
++    {   480,    640,    60,     0,
++               0,      0,     0,    KdSyncNegative,
++               0,      0,     0,     KdSyncNegative,
++    },
++  
++    {   800,    480,    51,     0,
++               0,      0,     0,    KdSyncNegative,
++               0,      0,     0,     KdSyncNegative,
++    },
++
++    {   480,    800,    51,     0,
++               0,      0,     0,    KdSyncNegative,
++               0,      0,     0,     KdSyncNegative,
++    },
+     
+     /* 800x600 modes */
+     { 800,    600,    85,     56250,                      /* VESA */
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch
new file mode 100644 (file)
index 0000000..35ccada
--- /dev/null
@@ -0,0 +1,13 @@
+--- xserver/hw/kdrive/linux/mouse.c.orig       2004-05-13 14:25:51.000000000 -0700
++++ xserver/hw/kdrive/linux/mouse.c    2005-09-22 12:20:47.000000000 -0700
+@@ -927,8 +927,10 @@ char *kdefaultMouse[] =  {
+     "/dev/psaux",
+     "/dev/input/mice",
+     "/dev/adbmouse",
++#ifdef BREAK_MY_SERIAL_CONSOLE
+     "/dev/ttyS0",
+     "/dev/ttyS1",
++#endif
+ };
+ #define NUM_DEFAULT_MOUSE    (sizeof (kdefaultMouse) / sizeof (kdefaultMouse[0]))
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/optional-xkb.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/optional-xkb.patch
new file mode 100644 (file)
index 0000000..d9ef51c
--- /dev/null
@@ -0,0 +1,54 @@
+--- git/Makefile.am.orig       2006-06-09 16:01:51.000000000 +0200
++++ git/Makefile.am    2006-06-09 16:02:59.000000000 +0200
+@@ -35,6 +35,10 @@
+ XINPUT_DIR=Xi
+ endif
++if XKB
++XKB_DIR=xkb
++endif
++
+ if DBE
+ DBE_DIR=dbe
+ endif
+@@ -51,7 +55,7 @@
+       randr \
+       render  \
+       $(XINPUT_DIR) \
+-      xkb \
++      $(XKB_DIR) \
+       $(DBE_DIR) \
+       $(MFB_DIR) \
+       $(AFB_DIR) \
+--- git/configure.ac.orig      2006-05-22 22:40:00.000000000 +0200
++++ git/configure.ac   2006-06-10 15:10:14.000000000 +0200
+@@ -418,6 +418,7 @@
+ AC_ARG_ENABLE(xf86bigfont,    AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: enabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=yes])
+ AC_ARG_ENABLE(dpms,           AS_HELP_STRING([--disable-dpms], [Build DPMS extension (default: enabled)]), [DPMS=$enableval], [DPMSExtension=yes])
+ AC_ARG_ENABLE(xinput,         AS_HELP_STRING([--disable-xinput], [Build XInput Extension (default: enabled)]), [XINPUT=$enableval], [XINPUT=yes])
++AC_ARG_ENABLE(xkb,            AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes])
+ dnl DDXes.
+ AC_ARG_ENABLE(xorg,                 AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
+@@ -739,12 +740,15 @@
+ AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
+-AC_DEFINE(XKB, 1, [Build XKB])
+-AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
+-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
+-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
+-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
+-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++AM_CONDITIONAL(XKB, [test "x$XKB" = xyes])
++if test "x$XKB" = xyes; then
++      AC_DEFINE(XKB, 1, [Build XKB])
++      AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
++      AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
++      REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
++      XKB_LIB='$(top_builddir)/xkb/libxkb.la'
++      XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
++fi
+ AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
+                                         [Do not have `strcasecmp'.]))
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch
new file mode 100644 (file)
index 0000000..2a10f13
--- /dev/null
@@ -0,0 +1,73 @@
+---
+ Xext/Makefile.am           |    5 
+ Xext/xcalibrate.c          |  262 +++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac               |    8 +
+ include/kdrive-config.h.in |    3 
+ mi/miinitext.c             |    6 +
+ 5 files changed, 283 insertions(+), 1 deletion(-)
+
+Index: xorg-server-1.1.99.3/mi/miinitext.c
+===================================================================
+--- xorg-server-1.1.99.3.orig/mi/miinitext.c   2006-11-03 14:49:06.000000000 +0000
++++ xorg-server-1.1.99.3/mi/miinitext.c        2007-01-27 17:59:40.000000000 +0000
+@@ -368,6 +368,9 @@ extern void ResExtensionInit(INITARGS);
+ #ifdef DMXEXT
+ extern void DMXExtensionInit(INITARGS);
+ #endif
++#ifdef XCALIBRATE
++extern void XCalibrateExtensionInit(INITARGS);
++#endif
+ #ifdef XEVIE
+ extern void XevieExtensionInit(INITARGS);
+ #endif
+@@ -662,6 +665,9 @@ InitExtensions(argc, argv)
+ #ifdef XSP
+     if (!noXspExtension) XSPExtensionInit();
+ #endif
++#ifdef  XCALIBRATE
++    XCalibrateExtensionInit ();
++#endif
+ }
+ void
+Index: xorg-server-1.1.99.3/configure.ac
+===================================================================
+--- xorg-server-1.1.99.3.orig/configure.ac     2006-11-03 14:49:05.000000000 +0000
++++ xorg-server-1.1.99.3/configure.ac  2007-01-29 22:58:18.000000000 +0000
+@@ -1584,7 +1590,7 @@ if test "$KDRIVE" = yes; then
+     KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
+     KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a'
+     KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+-    KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $XSP_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
++    KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $XSP_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB"
+     # check if we can build Xephyr
+     PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
+Index: xorg-server-1.1.99.3/include/kdrive-config.h.in
+===================================================================
+--- xorg-server-1.1.99.3.orig/include/kdrive-config.h.in       2006-11-03 14:49:06.000000000 +0000
++++ xorg-server-1.1.99.3/include/kdrive-config.h.in    2007-01-27 17:59:40.000000000 +0000
+@@ -28,4 +28,7 @@
+ /* Have the backtrace() functiln. */
+ #undef HAVE_BACKTRACE
++/* Enable XCalibrate extension */
++#undef XCALIBRATE
++
+ #endif /* _KDRIVE_CONFIG_H_ */
+Index: xorg-server-1.1.99.3/Xext/Makefile.am
+===================================================================
+--- xorg-server-1.1.99.3.orig/Xext/Makefile.am 2006-11-03 14:49:05.000000000 +0000
++++ xorg-server-1.1.99.3/Xext/Makefile.am      2007-01-29 22:58:33.000000000 +0000
+@@ -81,6 +81,11 @@ BUILTIN_SRCS += $(XCALIBRATE_SRCS)
+ # XCalibrare needs tslib
+ endif
++XCALIBRATE_SRCS = xcalibrate.c
++if XCALIBRATE
++BUILTIN_SRCS += $(XCALIBRATE_SRCS)
++endif
++
+ # X EVent Interception Extension: allows accessibility helpers & composite
+ # managers to intercept events from input devices and transform as needed
+ # before the clients see them.
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch b/meta/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch
new file mode 100644 (file)
index 0000000..a8f002e
--- /dev/null
@@ -0,0 +1,82 @@
+---
+ hw/kdrive/fbdev/fbdev.c  |   17 ++++++++++++-----
+ hw/kdrive/fbdev/fbdev.h  |    1 +
+ hw/kdrive/fbdev/fbinit.c |   20 ++++++++++++++++----
+ 3 files changed, 29 insertions(+), 9 deletions(-)
+
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbdev.c
+@@ -33,16 +33,23 @@
+ extern int KdTsPhyScreen;
++char     *fbdevDevicePath = NULL;
+ Bool
+ fbdevInitialize (KdCardInfo *card, FbdevPriv *priv)
+ {
+     int                   k;
+     unsigned long   off;
+-    if ((priv->fd = open("/dev/fb0", O_RDWR)) < 0 && \
+-        (priv->fd = open("/dev/fb/0", O_RDWR)) < 0) {
+-      perror("Error opening /dev/fb0");
+-      return FALSE;
+-    }
++
++    if (fbdevDevicePath == NULL) 
++      fbdevDevicePath = "/dev/fb0";
++
++    if ((priv->fd = open(fbdevDevicePath, O_RDWR)) < 0)
++      {
++      ErrorF("Error opening framebuffer %s: %s\n", 
++             fbdevDevicePath, strerror(errno));
++        return FALSE;
++      }
++
+     /* quiet valgrind */
+     memset (&priv->fix, '\0', sizeof (priv->fix));
+     if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) {
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.h
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbdev.h
+@@ -53,6 +53,7 @@ typedef struct _fbdevScrPriv {
+ } FbdevScrPriv;
+ extern KdCardFuncs  fbdevFuncs;
++extern char*        fbdevDevicePath;
+ Bool
+ fbdevInitialize (KdCardInfo *card, FbdevPriv *priv);
+--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbinit.c
++++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbinit.c
+@@ -59,16 +59,28 @@ InitInput (int argc, char **argv)
+ void
+ ddxUseMsg (void)
+ {
+-    KdUseMsg();
++  KdUseMsg();
++  ErrorF("\nXfbdev Device Usage:\n");
++  ErrorF("-fb path         Framebuffer device to use. Defaults to /dev/fb0\n");
++  ErrorF("\n");
+ }
+ int
+ ddxProcessArgument (int argc, char **argv, int i)
+ {
+-    return KdProcessArgument (argc, argv, i);
+-}
+-
++  if (!strcmp (argv[i], "-fb"))
++    {
++      if (i+1 < argc) 
++      {
++        fbdevDevicePath = argv[i+1];
++        return 2;
++      } 
++      UseMsg();
++      exit(1);
++    }
++  return KdProcessArgument (argc, argv, i);
++}
+ KdCardFuncs   fbdevFuncs = {
+     fbdevCardInit,        /* cardinit */
diff --git a/meta/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb b/meta/packages/xorg-xserver/xserver-kdrive-xomap_X11R7.1-1.1.99.3.bb
new file mode 100644 (file)
index 0000000..f643226
--- /dev/null
@@ -0,0 +1,48 @@
+LICENSE = "MIT"
+DEPENDS = "tslib xproto libxdmcp xextproto xtrans libxau virtual/libx11 libxext libxrandr fixesproto damageproto libxfont resourceproto compositeproto xcalibrateext recordproto videoproto scrnsaverproto xpext xsp libxkbfile dbus"
+
+PROVIDES = "virtual/xserver"
+PACKAGES =+ "xserver-kdrive-xomap"
+SECTION = "x11/base"
+DESCRIPTION = "X server from freedesktop.org"
+DESCRIPTION_xserver-kdrive-xomap = "X server for the OMAP in the Nokia 800"
+
+PR = "r0"
+
+COMPATIBLE_MACHINE = "nokia800"
+
+FILES_${PN} = "${libdir}/xserver /etc/dbus-1/*"
+FILES_xserver-kdrive-xomap = "${bindir}/Xomap"
+
+RDEPENDS_xserver-kdrive-xomap = "${PN}"
+
+SRC_URI = "http://repository.maemo.org/pool/maemo3.0/free/source/xorg-server_1.1.99.3-0osso21.tar.gz \
+       file://kmode.patch;patch=1 \
+       file://disable-apm.patch;patch=1 \
+       file://no-serial-probing.patch;patch=1 \
+       file://fbdev-not-fix.patch;patch=1  \
+       file://enable-builtin-fonts.patch;patch=1 \
+       file://xcalibrate.patch;patch=1 \
+       file://fixups.patch;patch=1 \
+       file://calibrateext.patch;patch=1"
+#      file://kdrive-evdev.patch;patch=1  \
+#      file://kdrive-use-evdev.patch;patch=1  \
+#      file://optional-xkb.patch;patch=1 \
+#      file://disable-xf86-dga-xorgcfg.patch;patch=1 \
+#      file://enable-tslib.patch;patch=1 \
+#      file://xfbdev-fb-opt.patch;patch=1"
+
+S = "${WORKDIR}/xorg-server-1.1.99.3"
+
+inherit autotools pkgconfig 
+
+EXTRA_OECONF = "--enable-composite --enable-kdrive --enable-builtin-fonts \
+               --disable-dga --disable-dri --disable-xinerama \
+               --disable-xf86misc --disable-xf86vidmode \
+               --disable-xorg --disable-xorgcfg \
+               --disable-dmx --enable-xcalibrate \ 
+               --disable-xkb --disable-xnest --disable-xvfb \
+               --disable-xevie --disable-xprint --disable-xtrap \
+               --with-default-font-path=built-ins \
+               ac_cv_file__usr_share_X11_sgml_defs_ent=no \
+               --enable-xomap"