summaryrefslogtreecommitdiff
path: root/packages/xorg-xserver
diff options
context:
space:
mode:
authorPhilipp Zabel <philipp.zabel@gmail.com>2007-09-08 20:10:15 +0000
committerPhilipp Zabel <philipp.zabel@gmail.com>2007-09-08 20:10:15 +0000
commit3317f53154cb592cb4f35caf5d854c404d7d20c1 (patch)
tree24973af3dd6c7afb4614cd7d545db82e999bcb93 /packages/xorg-xserver
parent0993eafefdb4f1d5295173635127a67e01426f30 (diff)
xserver-kdrive: add 1.4 for X11R7.3 release
* The tslib mouse driver has to be selected with "-mouse tslib", it defaults to the /dev/input/touchscreen0 evdev device in this build. * The evdev keyboard driver is available, but not very useful yet. It doesn't accept any command line options as long as XKB is disabled. * xcalibrate and tslib are taped together with a bit of ugly code in xcalibrate-new-input-world-order.patch. This should be replaced as soon as I learn how to do it correctly.
Diffstat (limited to 'packages/xorg-xserver')
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch39
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch17
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch24
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch77
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch19
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/fix_default_mode.patch26
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch58
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch15
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch54
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/w100-new-input-world-order.patch28
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch159
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch122
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.4.bb27
14 files changed, 665 insertions, 0 deletions
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty b/packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch b/packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch
new file mode 100644
index 0000000000..ccc19139c8
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch
@@ -0,0 +1,39 @@
+Index: xorg-server-1.3.0.0/configure.ac
+===================================================================
+--- xorg-server-1.3.0.0.orig/configure.ac 2007-04-20 03:23:40.000000000 +0200
++++ xorg-server-1.3.0.0/configure.ac 2007-05-09 16:51:34.000000000 +0200
+@@ -520,7 +520,11 @@
+ XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
+
+ dnl Core modules for most extensions, et al.
++if test "$KDRIVE" = yes; then
++REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto [kbproto >= 1.0.3]"
++else
+ REQUIRED_MODULES="[randrproto >= 1.2] renderproto [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto [kbproto >= 1.0.3]"
++fi
+ REQUIRED_LIBS="xfont xau fontenc"
+
+ AM_CONDITIONAL(XV, [test "x$XV" = xyes])
+@@ -1603,7 +1607,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])
+
+ AC_TRY_COMPILE([
+@@ -1616,10 +1622,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/packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch b/packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch
new file mode 100644
index 0000000000..0fffd71dce
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/enable-epson.patch
@@ -0,0 +1,17 @@
+Index: xorg-server-1.4/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/Makefile.am 2007-08-30 01:48:57.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/Makefile.am 2007-09-06 23:24:29.000000000 +0200
+@@ -1,10 +1,10 @@
+ if KDRIVEVESA
+-VESA_SUBDIRS = vesa ati chips epson i810 mach64 mga nvidia pm2 r128 \
++VESA_SUBDIRS = vesa ati chips i810 mach64 mga nvidia pm2 r128 \
+ smi via
+ endif
+
+ if BUILD_KDRIVEFBDEVLIB
+-FBDEV_SUBDIRS = fbdev
++FBDEV_SUBDIRS = fbdev epson
+ endif
+
+ if XFAKESERVER
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch b/packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch
new file mode 100644
index 0000000000..3746be5f53
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch
@@ -0,0 +1,24 @@
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac 2007-09-08 16:36:37.000000000 +0200
++++ xorg-server-1.4/configure.ac 2007-09-08 16:38:10.000000000 +0200
+@@ -1816,7 +1816,7 @@
+ AC_CHECK_LIB([rt], [nanosleep], XEPHYR_LIBS="$XEPHYR_LIBS -lrt"))
+
+ if test "x$TSLIB" = xyes; then
+- PKG_CHECK_MODULES([TSLIB], [tslib-0.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
++ PKG_CHECK_MODULES([TSLIB], [tslib-1.0], [HAVE_TSLIB="yes"], [HAVE_TSLIB="no"])
+ if test "x$HAVE_TSLIB" = xno; then
+ AC_MSG_ERROR([tslib must be installed to build the tslib driver. See http://tslib.berlios.de/])
+ fi
+@@ -1840,8 +1840,8 @@
+ ;;
+ esac
+ KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+- KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
+- KDRIVE_LIBS="$XSERVERLIBS_LIBS $KDRIVE_LOCAL_LIBS"
++ KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
++ KDRIVE_LIBS="$XSERVERLIBS_LIBS $TSLIB_LIBS $KDRIVE_LOCAL_LIBS"
+
+ # check if we can build Xephyr
+ PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch b/packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch
new file mode 100644
index 0000000000..113f1cc584
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch
@@ -0,0 +1,77 @@
+---
+ Xext/Makefile.am | 6 ++++++
+ configure.ac | 9 ++++++++-
+ include/kdrive-config.h.in | 3 +++
+ mi/miinitext.c | 6 ++++++
+ 4 files changed, 23 insertions(+), 1 deletion(-)
+
+Index: xorg-server-1.4/mi/miinitext.c
+===================================================================
+--- xorg-server-1.4.orig/mi/miinitext.c 2007-08-23 21:04:54.000000000 +0200
++++ xorg-server-1.4/mi/miinitext.c 2007-09-06 23:25:35.000000000 +0200
+@@ -374,6 +374,9 @@
+ #ifdef DMXEXT
+ extern void DMXExtensionInit(INITARGS);
+ #endif
++#ifdef XCALIBRATE
++extern void XCalibrateExtensionInit(INITARGS);
++#endif
+ #ifdef XEVIE
+ extern void XevieExtensionInit(INITARGS);
+ #endif
+@@ -666,6 +669,9 @@
+ #ifdef DAMAGE
+ if (!noDamageExtension) DamageExtensionInit();
+ #endif
++#ifdef XCALIBRATE
++ XCalibrateExtensionInit ();
++#endif
+ }
+
+ void
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac 2007-09-06 23:25:15.000000000 +0200
++++ xorg-server-1.4/configure.ac 2007-09-06 23:26:40.000000000 +0200
+@@ -500,6 +500,7 @@
+ AC_ARG_ENABLE(xf86misc, AS_HELP_STRING([--disable-xf86misc], [Build XF86Misc extension (default: auto)]), [XF86MISC=$enableval], [XF86MISC=auto])
+ AC_ARG_ENABLE(xace, AS_HELP_STRING([--disable-xace], [Build X-ACE extension (default: enabled)]), [XACE=$enableval], [XACE=yes])
+ AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: enabled)]), [XCSECURITY=$enableval], [XCSECURITY=$XACE])
++AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+ AC_ARG_ENABLE(appgroup, AS_HELP_STRING([--disable-appgroup], [Build XC-APPGROUP extension (default: enabled)]), [APPGROUP=$enableval], [APPGROUP=$XCSECURITY])
+ AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
+ AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
+@@ -787,6 +788,12 @@
+ AC_DEFINE(XCSECURITY, 1, [Build Security extension])
+ fi
+
++AM_CONDITIONAL(XCALIBRATE, [test "x$XCALIBRATE" = xyes])
++if test "x$XCALIBRATE" = xyes; then
++ AC_DEFINE(XCALIBRATE, 1, [Build XCalibrate extension])
++ REQUIRED_MODULES="$REQUIRED_MODULES xcalibrateproto"
++fi
++
+ AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes])
+ if test "x$XEVIE" = xyes; then
+ AC_DEFINE(XEVIE, 1, [Build XEvIE extension])
+@@ -1841,7 +1848,7 @@
+ ;;
+ esac
+ KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
+- KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
++ KDRIVE_LOCAL_LIBS="$DIX_LIB $CONFIG_LIB $KDRIVE_LIB $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB"
+ KDRIVE_LIBS="$XSERVERLIBS_LIBS $TSLIB_LIBS $KDRIVE_LOCAL_LIBS"
+
+ # check if we can build Xephyr
+Index: xorg-server-1.4/include/kdrive-config.h.in
+===================================================================
+--- xorg-server-1.4.orig/include/kdrive-config.h.in 2007-08-23 21:04:54.000000000 +0200
++++ xorg-server-1.4/include/kdrive-config.h.in 2007-09-06 23:25:35.000000000 +0200
+@@ -31,4 +31,7 @@
+ /* Have execinfo.h for backtrace(). */
+ #undef HAVE_EXECINFO_H
+
++/* Enable XCalibrate extension */
++#undef XCALIBRATE
++
+ #endif /* _KDRIVE_CONFIG_H_ */
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch b/packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch
new file mode 100644
index 0000000000..5f9b21b627
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/fbdev-evdev.patch
@@ -0,0 +1,19 @@
+Index: xorg-server-1.4/hw/kdrive/fbdev/fbinit.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/fbdev/fbinit.c 2007-09-08 21:27:44.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/fbdev/fbinit.c 2007-09-08 21:28:55.000000000 +0200
+@@ -46,11 +46,13 @@
+
+ KdAddKeyboardDriver (&LinuxKeyboardDriver);
+ KdAddPointerDriver (&LinuxMouseDriver);
++ KdAddKeyboardDriver (&LinuxEvdevKeyboardDriver);
++ KdAddPointerDriver (&LinuxEvdevMouseDriver);
+ #ifdef TSLIB
+ KdAddPointerDriver (&TsDriver);
+ #endif
+
+- ki = KdParseKeyboard ("keybd");
++ ki = KdParseKeyboard ("keyboard");
+ KdAddKeyboard(ki);
+
+ KdInitInput ();
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/fix_default_mode.patch b/packages/xorg-xserver/xserver-kdrive-1.4/fix_default_mode.patch
new file mode 100644
index 0000000000..edc5146302
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/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/packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch b/packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch
new file mode 100644
index 0000000000..22d8c94c78
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/optional-xkb.patch
@@ -0,0 +1,58 @@
+Index: xorg-server-1.4/Makefile.am
+===================================================================
+--- xorg-server-1.4.orig/Makefile.am 2007-08-23 21:04:52.000000000 +0200
++++ xorg-server-1.4/Makefile.am 2007-09-06 23:19:59.000000000 +0200
+@@ -26,6 +26,10 @@
+ GLX_DIR=GL
+ endif
+
++if XKB
++XKB_DIR=xkb
++endif
++
+ if DBE
+ DBE_DIR=dbe
+ endif
+@@ -42,7 +46,7 @@
+ randr \
+ render \
+ Xi \
+- xkb \
++ $(XKB_DIR) \
+ $(DBE_DIR) \
+ $(MFB_DIR) \
+ $(AFB_DIR) \
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac 2007-09-06 07:59:00.000000000 +0200
++++ xorg-server-1.4/configure.ac 2007-09-06 23:19:19.000000000 +0200
+@@ -514,6 +514,7 @@
+ AC_ARG_ENABLE(config-dbus, AS_HELP_STRING([--enable-config-dbus], [Build D-BUS API support (default: no)]), [CONFIG_DBUS_API=$enableval], [CONFIG_DBUS_API=no])
+ AC_ARG_ENABLE(config-hal, AS_HELP_STRING([--disable-config-hal], [Build HAL support (default: auto)]), [CONFIG_HAL=$enableval], [CONFIG_HAL=auto])
+ AC_ARG_ENABLE(xfree86-utils, AS_HELP_STRING([--enable-xfree86-utils], [Build xfree86 DDX utilities (default: enabled)]), [XF86UTILS=$enableval], [XF86UTILS=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])
+@@ -889,12 +890,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/packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch b/packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch
new file mode 100644
index 0000000000..c1bc49f58e
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/tslib-default-device.patch
@@ -0,0 +1,15 @@
+Index: xorg-server-1.4/hw/kdrive/linux/tslib.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/linux/tslib.c 2007-09-08 19:58:08.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/linux/tslib.c 2007-09-08 19:58:09.000000000 +0200
+@@ -121,6 +121,10 @@
+
+ private->raw_event_hook = NULL;
+ private->raw_event_closure = NULL;
++ if (!pi->path) {
++ pi->path = "/dev/input/touchscreen0";
++ ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path);
++ }
+ private->tsDev = ts_open(pi->path, 0);
+ private->fd = ts_fd(private->tsDev);
+ if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) {
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch b/packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch
new file mode 100644
index 0000000000..0812a2e856
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch
@@ -0,0 +1,54 @@
+Index: xorg-server-1.4/hw/kdrive/Makefile.am
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/Makefile.am 2007-09-06 23:32:04.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/Makefile.am 2007-09-06 23:33:44.000000000 +0200
+@@ -11,6 +11,10 @@
+ XFAKE_SUBDIRS = fake
+ endif
+
++if KDRIVEW100
++W100_SUBDIRS = w100
++endif
++
+ if XSDLSERVER
+ XSDL_SUBDIRS = sdl
+ endif
+@@ -26,6 +30,7 @@
+ SERVER_SUBDIRS = \
+ $(XSDL_SUBDIRS) \
+ $(FBDEV_SUBDIRS) \
++ $(W100_SUBDIRS) \
+ $(VESA_SUBDIRS) \
+ $(XEPHYR_SUBDIRS) \
+ $(XFAKE_SUBDIRS)
+Index: xorg-server-1.4/configure.ac
+===================================================================
+--- xorg-server-1.4.orig/configure.ac 2007-09-06 23:32:05.000000000 +0200
++++ xorg-server-1.4/configure.ac 2007-09-06 23:34:41.000000000 +0200
+@@ -535,6 +535,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])
+ AC_ARG_ENABLE(xfake, AS_HELP_STRING([--enable-xfake], [Build the kdrive 'fake' server (default: auto)]), [XFAKE=$enableval], [XFAKE=auto])
+ AC_ARG_ENABLE(xfbdev, AS_HELP_STRING([--enable-xfbdev], [Build the kdrive framebuffer device server (default: auto)]), [XFBDEV=$enableval], [XFBDEV=auto])
+ AC_ARG_ENABLE(kdrive-vesa, AS_HELP_STRING([--enable-kdrive-vesa], [Build the kdrive VESA-based servers (default: auto)]), [KDRIVEVESA=$enableval], [KDRIVEVESA=auto])
+@@ -1669,6 +1670,10 @@
+ fi
+ AM_CONDITIONAL(XP_USE_FREETYPE, [test "x$XPRINT" = xyes && test "x$XP_USE_FREETYPE" = xyes])
+
++AM_CONDITIONAL(KDRIVEW100, [test "x$KDRIVEW100" = xyes])
++if test "x$KDRIVEW100" = xyes; then
++ AC_DEFINE(KDRIVEW100, 1, [Build Xw100 server])
++fi
+
+ dnl XWin DDX
+
+@@ -2112,6 +2117,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/packages/xorg-xserver/xserver-kdrive-1.4/w100-new-input-world-order.patch b/packages/xorg-xserver/xserver-kdrive-1.4/w100-new-input-world-order.patch
new file mode 100644
index 0000000000..239ae0bb67
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/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/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch b/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch
new file mode 100644
index 0000000000..2cc9e60d8d
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate-new-input-world-order.patch
@@ -0,0 +1,159 @@
+CRUDE HACK ALERT: this patch adds a new device control (DEVICE_RAWEVENT)
+which cannot be exported in the protocol because the xDeviceRaweventCtl
+carries a C pointer to the tslib event hook. For lack of a better idea,
+I added this to get the event hook pointer from Xext/xcalibrate.c into
+tslib.c, where the now-private _raw_event_hook and _raw_event_closure
+pointers are manipulated instead of, like before, in the Xcalibrate
+extension itself.
+
+Index: xorg-server-1.4/Xext/xcalibrate.c
+===================================================================
+--- xorg-server-1.4.orig/Xext/xcalibrate.c 2007-09-08 13:22:55.000000000 +0200
++++ xorg-server-1.4/Xext/xcalibrate.c 2007-09-08 16:03:17.000000000 +0200
+@@ -33,14 +33,14 @@
+ #include "os.h"
+ #include "dixstruct.h"
+ #include "extnsionst.h"
++#include "inputstr.h" /* for inputInfo */
+ #include "swaprep.h"
+
++#include <X11/extensions/XI.h> /* for XI_TOUCHSCREEN */
++#include <X11/extensions/XIproto.h> /* for xDeviceCtl */
+ #include <X11/extensions/xcalibrateproto.h>
+ #include <X11/extensions/xcalibratewire.h>
+
+-extern void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
+-extern void *tslib_raw_event_closure;
+-
+ static CARD8 XCalibrateReqCode;
+ int XCalibrateEventBase;
+ int XCalibrateReqBase;
+@@ -64,6 +64,31 @@
+ WriteEventsToClient (pClient, 1, (xEvent *) &ev);
+ }
+
++#define DEVICE_RAWEVENT 6
++typedef struct {
++ CARD16 control B16;
++ CARD16 length B16;
++ void *hook;
++} xDeviceRaweventCtl;
++
++static void
++xcalibrate_set_event_hook (void *hook, ClientPtr client)
++{
++ DeviceIntPtr devtmp;
++ Atom xiclass;
++ xDeviceRaweventCtl rawevent;
++
++ rawevent.control = DEVICE_RAWEVENT;
++ rawevent.length = sizeof(rawevent);
++ rawevent.hook = hook;
++
++ xiclass = MakeAtom(XI_TOUCHSCREEN, strlen(XI_TOUCHSCREEN), 1);
++
++ for (devtmp = inputInfo.devices; devtmp; devtmp = devtmp->next)
++ if (devtmp->type == xiclass)
++ ChangeDeviceControl(client, devtmp, (xDeviceCtl *) &rawevent);
++}
++
+ static int
+ ProcXCalibrateQueryVersion (ClientPtr client)
+ {
+@@ -124,8 +149,7 @@
+ {
+ /* Start calibrating. */
+ xcalibrate_client = client;
+- tslib_raw_event_hook = xcalibrate_event_hook;
+- tslib_raw_event_closure = client;
++ xcalibrate_set_event_hook(xcalibrate_event_hook, client);
+ rep.status = GrabSuccess;
+ }
+ else
+@@ -139,8 +163,7 @@
+ {
+ /* Stop calibrating. */
+ xcalibrate_client = NULL;
+- tslib_raw_event_hook = NULL;
+- tslib_raw_event_closure = NULL;
++ xcalibrate_set_event_hook(NULL, NULL);
+ rep.status = GrabSuccess;
+
+ /* Cycle input off and on to reload configuration. */
+@@ -277,8 +300,7 @@
+ {
+ /* Stop calibrating. */
+ xcalibrate_client = NULL;
+- tslib_raw_event_hook = NULL;
+- tslib_raw_event_closure = NULL;
++ xcalibrate_set_event_hook(NULL, NULL);
+ }
+ }
+
+Index: xorg-server-1.4/hw/kdrive/linux/tslib.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/linux/tslib.c 2007-09-08 14:46:41.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/linux/tslib.c 2007-09-08 16:10:57.000000000 +0200
+@@ -56,6 +56,13 @@
+ int phys_screen;
+ };
+
++void
++tslib_set_raw_event_hook(KdPointerInfo *pi, void *hook, void *closure)
++{
++ struct TslibPrivate *private = pi->driverPrivate;
++ private->raw_event_hook = hook;
++ private->raw_event_closure = closure;
++}
+
+ static void
+ TsRead (int fd, void *closure)
+Index: xorg-server-1.4/hw/kdrive/src/kinput.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/src/kinput.c 2007-09-08 14:45:01.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/src/kinput.c 2007-09-08 16:09:32.000000000 +0200
+@@ -2389,10 +2389,19 @@
+ return BadMatch;
+ }
+
++#define DEVICE_RAWEVENT 6
++typedef struct {
++ CARD16 control B16;
++ CARD16 length B16;
++ void *hook;
++} xDeviceRaweventCtl;
++
+ int
+ ChangeDeviceControl(register ClientPtr client, DeviceIntPtr pDev,
+ xDeviceCtl *control)
+ {
++ KdPointerInfo *pi;
++
+ switch (control->control) {
+ case DEVICE_RESOLUTION:
+ /* FIXME do something more intelligent here */
+@@ -2406,6 +2415,24 @@
+ case DEVICE_ENABLE:
+ return Success;
+
++ case DEVICE_RAWEVENT:
++ if (!pDev)
++ return BadImplementation;
++
++ for (pi = kdPointers; pi; pi = pi->next) {
++ if (pi->dixdev && pi->dixdev->id == pDev->id)
++ break;
++ }
++
++ if (!pi || !pi->dixdev || pi->dixdev->id != pDev->id) {
++ ErrorF("[ChangeDeviceControl] Failed to find pointer for device %d!\n",
++ pDev->id);
++ return BadImplementation;
++ }
++
++ tslib_set_raw_event_hook(pi, ((xDeviceRaweventCtl *)control)->hook, client);
++ return Success;
++
+ default:
+ return BadMatch;
+ }
diff --git a/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch b/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch
new file mode 100644
index 0000000000..7f4ec09d68
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive-1.4/xcalibrate_coords.patch
@@ -0,0 +1,122 @@
+---
+ Xext/xcalibrate.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
+ hw/kdrive/src/kdrive.h | 3 +++
+ hw/kdrive/src/kinput.c | 12 ++++++++++++
+ 3 files changed, 61 insertions(+), 1 deletion(-)
+
+Index: xorg-server-1.4/Xext/xcalibrate.c
+===================================================================
+--- xorg-server-1.4.orig/Xext/xcalibrate.c 2007-08-23 21:04:52.000000000 +0200
++++ xorg-server-1.4/Xext/xcalibrate.c 2007-09-06 23:27:40.000000000 +0200
+@@ -164,7 +164,6 @@
+ return (client->noClientException);
+ }
+
+-
+ static int
+ SProcXCalibrateSetRawMode (ClientPtr client)
+ {
+@@ -178,6 +177,47 @@
+ return ProcXCalibrateSetRawMode(client);
+ }
+
++static int
++ProcXCalibrateScreenToCoord (ClientPtr client)
++{
++ REQUEST(xXCalibrateScreenToCoordReq);
++ xXCalibrateScreenToCoordReply rep;
++
++ REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq);
++
++ memset (&rep, 0, sizeof (rep));
++ rep.type = X_Reply;
++ rep.sequenceNumber = client->sequence;
++ rep.x = stuff->x;
++ rep.y = stuff->y;
++
++ KdScreenToPointerCoords(&rep.x, &rep.y);
++
++ if (client->swapped)
++ {
++ int n;
++
++ swaps (&rep.x, n);
++ swaps (&rep.y, n);
++ }
++ WriteToClient(client, sizeof (rep), (char *) &rep);
++ return (client->noClientException);
++}
++
++static int
++SProcXCalibrateScreenToCoord (ClientPtr client)
++{
++ REQUEST(xXCalibrateScreenToCoordReq);
++ int n;
++
++ REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq);
++
++ swaps(&stuff->x, n);
++ swaps(&stuff->y, n);
++
++ return ProcXCalibrateScreenToCoord(client);
++}
++
+ static void
+ XCalibrateResetProc (ExtensionEntry *extEntry)
+ {
+@@ -192,6 +232,9 @@
+ return ProcXCalibrateQueryVersion(client);
+ case X_XCalibrateRawMode:
+ return ProcXCalibrateSetRawMode(client);
++ case X_XCalibrateScreenToCoord:
++ return ProcXCalibrateScreenToCoord(client);
++
+ default: break;
+ }
+
+@@ -211,6 +254,8 @@
+ return SProcXCalibrateQueryVersion(client);
+ case X_XCalibrateRawMode:
+ return SProcXCalibrateSetRawMode(client);
++ case X_XCalibrateScreenToCoord:
++ return SProcXCalibrateScreenToCoord(client);
+
+ default: break;
+ }
+Index: xorg-server-1.4/hw/kdrive/src/kdrive.h
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/src/kdrive.h 2007-08-23 21:04:53.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/src/kdrive.h 2007-09-06 23:28:50.000000000 +0200
+@@ -848,6 +848,9 @@
+ KdSetPointerMatrix (KdPointerMatrix *pointer);
+
+ void
++KdScreenToPointerCoords (int *x, int *y);
++
++void
+ KdComputePointerMatrix (KdPointerMatrix *pointer, Rotation randr, int width, int height);
+
+ void
+Index: xorg-server-1.4/hw/kdrive/src/kinput.c
+===================================================================
+--- xorg-server-1.4.orig/hw/kdrive/src/kinput.c 2007-08-23 21:04:53.000000000 +0200
++++ xorg-server-1.4/hw/kdrive/src/kinput.c 2007-09-06 23:30:54.000000000 +0200
+@@ -592,6 +592,18 @@
+ }
+
+ void
++KdScreenToPointerCoords (int *x, int *y)
++{
++ int (*m)[3] = kdPointerMatrix.matrix;
++ int div = m[0][1] * m[1][0] - m[1][1] * m[0][0];
++ int sx = *x;
++ int sy = *y;
++
++ *x = (m[0][1] * sy - m[0][1] * m[1][2] + m[1][1] * m[0][2] - m[1][1] * sx) / div;
++ *y = (m[1][0] * sx + m[0][0] * m[1][2] - m[1][0] * m[0][2] - m[0][0] * sy) / div;
++}
++
++void
+ KdComputePointerMatrix (KdPointerMatrix *m, Rotation randr, int width,
+ int height)
+ {
diff --git a/packages/xorg-xserver/xserver-kdrive_1.4.bb b/packages/xorg-xserver/xserver-kdrive_1.4.bb
new file mode 100644
index 0000000000..9b1cb1cfa7
--- /dev/null
+++ b/packages/xorg-xserver/xserver-kdrive_1.4.bb
@@ -0,0 +1,27 @@
+require xserver-kdrive-common.inc
+
+DEPENDS += "libxkbfile libxcalibrate pixman"
+
+PE = "1"
+
+SRC_URI = "${XORG_MIRROR}/individual/xserver/xorg-server-${PV}.tar.bz2 \
+ ${KDRIVE_COMMON_PATCHES} \
+ file://fix_default_mode.patch;patch=1 \
+ file://enable-xcalibrate.patch;patch=1 \
+ file://hide-cursor-and-ppm-root.patch;patch=1 \
+ file://xcalibrate_coords.patch;patch=1 \
+ file://w100.patch;patch=1 \
+ file://w100-autofoo.patch;patch=1 \
+ file://w100-fix-offscreen-bmp.patch;patch=1 \
+ file://w100-new-input-world-order.patch;patch=1 \
+ file://xcalibrate-new-input-world-order.patch;patch=1 \
+ file://tslib-default-device.patch;patch=1 \
+ file://fbdev-evdev.patch;patch=1 \
+ "
+
+S = "${WORKDIR}/xorg-server-${PV}"
+
+W100_OECONF = "--disable-w100"
+W100_OECONF_arm = "--enable-w100"
+
+EXTRA_OECONF += "--enable-builtin-fonts"