summaryrefslogtreecommitdiffstats
path: root/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap
diff options
context:
space:
mode:
Diffstat (limited to 'meta-extras/packages/xorg-xserver/xserver-kdrive-xomap')
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/button_only.patch20
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch124
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/configfix.patch15
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch20
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch37
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xkb.patch82
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch12
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch23
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch14
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch446
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch503
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch53
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch43
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch13
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch73
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate_coords.patch122
-rw-r--r--meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch82
17 files changed, 1682 insertions, 0 deletions
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/button_only.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/button_only.patch
new file mode 100644
index 0000000000..ee8c1ed680
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/button_only.patch
@@ -0,0 +1,20 @@
1---
2 hw/kdrive/linux/tslib.c | 5 +----
3 1 file changed, 1 insertion(+), 4 deletions(-)
4
5Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c
6===================================================================
7--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c 2007-05-17 10:28:12.000000000 +0100
8+++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c 2007-05-17 10:28:42.000000000 +0100
9@@ -111,10 +111,7 @@ TsRead (int fd, void *closure)
10 event.pressure);
11 discard = 0;
12 if (event.pressure) {
13- if (event.pressure > pi->dixdev->absolute->button_threshold)
14- flags = KD_BUTTON_8;
15- else
16- flags = KD_BUTTON_1;
17+ flags = KD_BUTTON_1;
18
19 /*
20 * Here we test for the touch screen driver actually being on the
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch
new file mode 100644
index 0000000000..c5997c2ffa
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch
@@ -0,0 +1,124 @@
1---
2 configure |38107 -----------------------------------------------------------
3 configure.ac | 2 -
4 hw/kdrive/linux/tslib.c | 68 ++++++++++++++++++++++++++----------------------
5 2 files changed, 39 insertions(+), 31 deletions(-)
6
7
8Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c
9===================================================================
10--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c 2007-01-30 00:44:13.000000000 +0000
11+++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c 2007-01-30 21:55:52.000000000 +0000
12@@ -47,6 +47,10 @@
13
14 #define TSLIB_QUEUE_SIZE 3
15
16+/* For XCalibrate extension */
17+void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
18+void *tslib_raw_event_closure;
19+
20 struct TslibPrivate {
21 int fd;
22 int lastx, lasty;
23@@ -76,6 +80,19 @@ TsRead (int fd, void *closure)
24 unsigned long flags = 0;
25 int discard = 0;
26
27+ if (tslib_raw_event_hook)
28+ {
29+ /* XCalibrate Ext */
30+ if (ts_read_raw(private->tsDev, &event, 1) == 1)
31+ {
32+ tslib_raw_event_hook (event.x,
33+ event.y,
34+ event.pressure,
35+ tslib_raw_event_closure);
36+ }
37+ return;
38+ }
39+
40 if (!private->tsDev) {
41 DebugF("[tslib] EXTREME BADNESS: TsRead called while tsDev is null!\n");
42 return;
43@@ -322,14 +339,14 @@ TsRead (int fd, void *closure)
44 }
45 }
46
47-/* must always be NULL-terminated. */
48-char *valid_ts_names[] = {
49- "ADS784x Touchscreen",
50- "omap-ts",
51- "TSC2301 touchscreen",
52- NULL
53+static char *TsNames[] = {
54+ NULL, /* set via TSLIB_TSDEVICE */
55+ "/dev/ts",
56+ "/dev/touchscreen/0",
57 };
58
59+#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0]))
60+
61 #define TS_NAME_SIZE 32
62
63 static Status
64@@ -383,11 +400,10 @@ TslibDisable (KdPointerInfo *pi)
65 private->tsDev = NULL;
66 }
67
68-
69 static Status
70 TslibInit (KdPointerInfo *pi)
71 {
72- int fd = 0, i = 0;
73+ int fd = 0, i = 0, j = 0;
74 char devpath[PATH_MAX], devname[TS_NAME_SIZE];
75 DIR *inputdir = NULL;
76 struct dirent *inputent = NULL;
77@@ -397,33 +413,25 @@ TslibInit (KdPointerInfo *pi)
78 return !Success;
79
80 if (!pi->path || strcmp(pi->path, "auto") == 0) {
81- if (!(inputdir = opendir("/dev/input"))) {
82- ErrorF("[tslib/TslibInit]: couldn't open /dev/input!\n");
83- return BadMatch;
84- }
85
86- while ((inputent = readdir(inputdir))) {
87- if (strncmp(inputent->d_name, "event", 5) != 0)
88- continue;
89+ if ((TsNames[0] = getenv("TSLIB_TSDEVICE")) == NULL)
90+ j++;
91+
92+ for (i = j; i < NUM_TS_NAMES; i++)
93+ {
94+ struct tsdev *tsDev;
95
96- snprintf(devpath, PATH_MAX, "/dev/input/%s", inputent->d_name);
97- fd = open(devpath, O_RDWR);
98+ if(!(tsDev = ts_open(TsNames[i], 0)))
99+ continue;
100
101- if (!ioctl(fd, EVIOCGNAME(sizeof(devname)), devname)) {
102- close(fd);
103+ if (ts_config(tsDev))
104 continue;
105- }
106- close(fd);
107
108- for (i = 0; valid_ts_names[i]; i++) {
109- if (strcmp(devname, valid_ts_names[i]) == 0) {
110- pi->path = KdSaveString(devpath);
111- break;
112- }
113- }
114- }
115-
116- closedir(inputdir);
117+ ts_close(tsDev);
118+
119+ pi->path = KdSaveString(TsNames[i]);
120+ break;
121+ }
122 }
123
124 if (!pi->path || strcmp(pi->path, "auto") == 0) {
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/configfix.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/configfix.patch
new file mode 100644
index 0000000000..ada8f3a788
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/configfix.patch
@@ -0,0 +1,15 @@
1Index: xorg-server-1.1.99.3/configure.ac
2===================================================================
3--- xorg-server-1.1.99.3.orig/configure.ac 2010-06-09 12:52:26.000000000 +0100
4+++ xorg-server-1.1.99.3/configure.ac 2010-06-09 12:52:51.000000000 +0100
5@@ -1731,7 +1731,9 @@
6 DIX_CFLAGS="-DHAVE_DIX_CONFIG_H"
7 AC_SUBST([DIX_CFLAGS])
8
9-AC_SUBST([libdir exec_prefix prefix])
10+AC_SUBST([libdir])
11+AC_SUBST([exec_prefix])
12+AC_SUBST([prefix])
13
14 # Man page sections - used in config utils & generating man pages
15 XORG_MANPAGE_SECTIONS
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch
new file mode 100644
index 0000000000..bd8842721b
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-apm.patch
@@ -0,0 +1,20 @@
1--- xserver/hw/kdrive/linux/linux.c.orig 2005-04-23 15:56:13.988849232 +0000
2+++ xserver/hw/kdrive/linux/linux.c 2005-04-23 15:57:05.001094192 +0000
3@@ -342,7 +342,7 @@
4 /*
5 * Open the APM driver
6 */
7- LinuxApmFd = open ("/dev/apm_bios", 2);
8+ /*LinuxApmFd = open ("/dev/apm_bios", 2);
9 if (LinuxApmFd < 0 && errno == ENOENT)
10 LinuxApmFd = open ("/dev/misc/apm_bios", 2);
11 if (LinuxApmFd >= 0)
12@@ -352,7 +352,7 @@
13 RegisterBlockAndWakeupHandlers (LinuxApmBlock, LinuxApmWakeup, 0);
14 AddEnabledDevice (LinuxApmFd);
15 }
16-
17+ */
18 /*
19 * now get the VT
20 */
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch
new file mode 100644
index 0000000000..9c43e52ead
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xf86-dga-xorgcfg.patch
@@ -0,0 +1,37 @@
1--- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200
2+++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200
3@@ -505,7 +505,11 @@
4 XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
5
6 dnl Core modules for most extensions, et al.
7+if test "$KDRIVE" = yes; then
8+REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto"
9+else
10 REQUIRED_MODULES="randrproto renderproto [fixesproto >= 4.0] damageproto xcmiscproto xextproto xproto xtrans xf86miscproto xf86vidmodeproto xf86bigfontproto [scrnsaverproto >= 1.1] bigreqsproto resourceproto fontsproto inputproto xf86dgaproto"
11+fi
12 REQUIRED_LIBS="xfont xau fontenc"
13
14 AM_CONDITIONAL(XV, [test "x$XV" = xyes])
15@@ -1514,7 +1526,9 @@
16 AC_SUBST(XKB_COMPILED_DIR)
17
18 dnl and the rest of these are generic, so they're in config.h
19+if test ! x"$KDRIVE" = xyes; then
20 AC_DEFINE(XFreeXDGA, 1, [Build XDGA support])
21+fi
22 AC_DEFINE(XResExtension, 1, [Build XRes extension])
23
24 dnl CYGWIN does not define fd_set if _POSIX_SOURCE is defined
25@@ -1534,10 +1548,12 @@
26
27 AC_DEFINE_DIR(PROJECTROOT, prefix, [Overall prefix])
28
29+if test ! "x$KDRIVE" = xyes ; then
30 dnl xorgconfig CLI configuration utility
31 PKG_CHECK_MODULES([XORGCONFIG_DEP], [xkbfile x11])
32 AC_SUBST(XORGCONFIG_DEP_CFLAGS)
33 AC_SUBST(XORGCONFIG_DEP_LIBS)
34+fi
35
36 dnl xorgcfg GUI configuration utility
37 AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg],
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xkb.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xkb.patch
new file mode 100644
index 0000000000..9c38156cd2
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/disable-xkb.patch
@@ -0,0 +1,82 @@
1Index: xorg-server-1.1.99.3/Makefile.am
2===================================================================
3--- xorg-server-1.1.99.3.orig/Makefile.am 2008-02-20 22:22:56.000000000 +0000
4+++ xorg-server-1.1.99.3/Makefile.am 2008-02-20 22:23:22.000000000 +0000
5@@ -34,6 +34,11 @@
6 XSP_DIR=xsp
7 endif
8
9+if XKB
10+XKB_DIR=xkb
11+endif
12+
13+
14 SUBDIRS = \
15 doc \
16 include \
17@@ -46,7 +51,7 @@
18 randr \
19 render \
20 Xi \
21- xkb \
22+ $(XKB_DIR) \
23 $(DBE_DIR) \
24 $(MFB_DIR) \
25 $(AFB_DIR) \
26Index: xorg-server-1.1.99.3/configure.ac
27===================================================================
28--- xorg-server-1.1.99.3.orig/configure.ac 2008-02-20 22:04:15.000000000 +0000
29+++ xorg-server-1.1.99.3/configure.ac 2008-02-20 22:28:35.000000000 +0000
30@@ -434,6 +434,7 @@
31 AC_ARG_ENABLE(dbus, AS_HELP_STRING([--disable-dbus], [Build D-BUS support (default: auto)]), [DBUS=$enableval], [DBUS=auto])
32 AC_ARG_ENABLE(xsp, AS_HELP_STRING([--disable-xsp], [Build XSP support (default: auto)]), [XSP=$enableval], [XSP=auto])
33 AC_ARG_ENABLE(tslib, AS_HELP_STRING([--disable-tslib], [Build embedded touchscreen support (default: auto)]), [TSLIB=$enableval], [TSLIB=auto])
34+AC_ARG_ENABLE(xkb, AS_HELP_STRING([--disable-xkb], [Build XKB (default: enabled)]), [XKB=$enableval], [XKB=yes])
35
36 dnl DDXes.
37 AC_ARG_ENABLE(xorg, AS_HELP_STRING([--enable-xorg], [Build Xorg server (default: auto)]), [XORG=$enableval], [XORG=auto])
38@@ -751,12 +752,15 @@
39
40 AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
41
42-AC_DEFINE(XKB, 1, [Build XKB])
43-AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
44-AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
45-REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
46-XKB_LIB='$(top_builddir)/xkb/libxkb.la'
47-XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
48+AM_CONDITIONAL(XKB, [test "x$XKB" = xyes])
49+if test "x$XKB" = xyes; then
50+ AC_DEFINE(XKB, 1, [Build XKB])
51+ AC_DEFINE(XKB_IN_SERVER, 1, [Build XKB server])
52+ AC_DEFINE(XKB_DFLT_DISABLED, 0, [Disable XKB per default])
53+ REQUIRED_MODULES="$REQUIRED_MODULES xkbfile"
54+ XKB_LIB='$(top_builddir)/xkb/libxkb.la'
55+ XKB_STUB_LIB='$(top_builddir)/xkb/libxkbstubs.la'
56+fi
57
58 AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
59 [Do not have `strcasecmp'.]))
60Index: xorg-server-1.1.99.3/hw/kdrive/src/Makefile.am
61===================================================================
62--- xorg-server-1.1.99.3.orig/hw/kdrive/src/Makefile.am 2008-02-20 22:28:04.000000000 +0000
63+++ xorg-server-1.1.99.3/hw/kdrive/src/Makefile.am 2008-02-20 22:28:31.000000000 +0000
64@@ -39,4 +39,4 @@
65 libkdrivestubs_a_SOURCES = \
66 $(top_srcdir)/fb/fbcmap.c
67
68-libkdrivexkb_a_SOURCES = kxkb.c
69+libkdrivexkb_a_SOURCES =
70Index: xorg-server-1.1.99.3/hw/kdrive/src/kinput.c
71===================================================================
72--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kinput.c 2008-02-20 22:25:58.000000000 +0000
73+++ xorg-server-1.1.99.3/hw/kdrive/src/kinput.c 2008-02-20 22:27:29.000000000 +0000
74@@ -777,7 +777,7 @@
75 KdInitModMap(ki);
76 KdInitAutoRepeats(ki);
77
78-#ifndef XKB
79+#ifdef XKB
80 if (!noXkbExtension) {
81 memset(&names, 0, sizeof(XkbComponentNamesRec));
82 if (XkbInitialMap)
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch
new file mode 100644
index 0000000000..13a6c2c954
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-builtin-fonts.patch
@@ -0,0 +1,12 @@
1--- xorg-server-X11R7.1-1.1.0/dix/dixfonts.c.orig 2006-06-08 14:49:12.158684250 +0200
2+++ xorg-server-X11R7.1-1.1.0/dix/dixfonts.c 2006-06-08 14:49:52.493205000 +0200
3@@ -52,8 +52,8 @@
4 /* $Xorg: dixfonts.c,v 1.4 2000/08/17 19:48:18 cpqbld Exp $ */
5
6 #define NEED_REPLIES
7 #ifdef HAVE_DIX_CONFIG_H
8-#include <dix-config.h>
9+#include <kdrive-config.h>
10 #endif
11
12 #include <X11/X.h>
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch
new file mode 100644
index 0000000000..e488657b74
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/enable-tslib.patch
@@ -0,0 +1,23 @@
1--- git/configure.ac.orig 2006-05-22 22:40:00.000000000 +0200
2+++ git/configure.ac 2006-06-10 15:10:14.000000000 +0200
3@@ -1438,6 +1446,10 @@
4 fi
5
6- # tslib...
7+ AC_CHECK_HEADERS([tslib.h])
8+ if test "$ac_cv_header_tslib_h" = yes; then
9+ AC_DEFINE(TSLIB, 1, [Build kdrive with tslib support])
10+ AC_DEFINE(TOUCHSCREEN, 1, [Build kdrive with touchscreen support])
11+ fi
12
13 # damage shadow extension glx (NOTYET) fb mi
14 KDRIVE_INC='-I$(top_srcdir)/hw/kdrive/src'
15@@ -1467,7 +1479,7 @@
16 AC_SUBST(KDRIVE_CFLAGS)
17 AC_SUBST(KDRIVE_PURE_LIBS)
18 AC_SUBST(KDRIVE_LIBS)
19-AM_CONDITIONAL(TSLIB, false)
20+AM_CONDITIONAL(TSLIB, [test x"$ac_cv_header_tslib_h" = xyes])
21 AM_CONDITIONAL(H3600_TS, false)
22 AM_CONDITIONAL(KDRIVEVESA, [test x"$ac_cv_header_sys_vm86_h" = xyes])
23 AM_CONDITIONAL(KDRIVEFBDEV, [test x"$ac_cv_header_linux_fb_h" = xyes])
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch
new file mode 100644
index 0000000000..f87e7cc2cd
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fbdev-not-fix.patch
@@ -0,0 +1,14 @@
1--- xserver/hw/kdrive/fbdev/fbdev.c~ 2004-09-15 00:08:10.000000000 +0100
2+++ xserver/hw/kdrive/fbdev/fbdev.c 2004-11-13 17:47:02.000000000 +0000
3@@ -198,6 +198,11 @@
4 return FALSE;
5 }
6
7+ /* Re-get the "fixed" parameters since they might have changed */
8+ k = ioctl (priv->fd, FBIOGET_FSCREENINFO, &priv->fix);
9+ if (k < 0)
10+ perror ("FBIOGET_FSCREENINFO");
11+
12 /* Now get the new screeninfo */
13 ioctl (priv->fd, FBIOGET_VSCREENINFO, &priv->var);
14 depth = priv->var.bits_per_pixel;
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch
new file mode 100644
index 0000000000..09c9e8909c
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/fixups.patch
@@ -0,0 +1,446 @@
1---
2 Xi/chgdctl.c | 55 +++++++++++++++++++------
3 Xi/getdctl.c | 87 +++++++++++++++++++++++++++++++----------
4 Xi/getdctl.h | 11 +++--
5 Xi/stubs.c | 2
6 configure.ac | 2
7 dix/devices.c | 31 +++++++++-----
8 hw/kdrive/linux/tslib.c | 8 +--
9 hw/kdrive/src/kinput.c | 6 +-
10 hw/xfree86/common/xf86Xinput.c | 3 -
11 include/input.h | 2
12 include/inputstr.h | 18 +++++++-
13 11 files changed, 162 insertions(+), 63 deletions(-)
14
15Index: xorg-server-1.1.99.3/Xi/chgdctl.c
16===================================================================
17--- xorg-server-1.1.99.3.orig/Xi/chgdctl.c 2007-01-29 22:58:18.000000000 +0000
18+++ xorg-server-1.1.99.3/Xi/chgdctl.c 2007-01-29 22:59:27.000000000 +0000
19@@ -104,8 +104,10 @@ ProcXChangeDeviceControl(ClientPtr clien
20 xChangeDeviceControlReply rep;
21 AxisInfoPtr a;
22 CARD32 *resolution;
23- xDeviceTSCtl *ts;
24+ xDeviceAbsCalibCtl *calib;
25+ xDeviceAbsAreaCtl *area;
26 xDeviceCoreCtl *c;
27+ xDeviceEnableCtl *e;
28
29 REQUEST(xChangeDeviceControlReq);
30 REQUEST_AT_LEAST_SIZE(xChangeDeviceControlReq);
31@@ -170,25 +172,28 @@ ProcXChangeDeviceControl(ClientPtr clien
32 return Success;
33 }
34 break;
35- case DEVICE_TOUCHSCREEN:
36- ts = (xDeviceTSCtl *)&stuff[1];
37-
38- if (ts->button_threshold < 0 || ts->button_threshold > 255) {
39+ case DEVICE_ABS_CALIB:
40+ calib = (xDeviceAbsCalibCtl *)&stuff[1];
41+
42+ if (calib->button_threshold < 0 || calib->button_threshold > 255) {
43 SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
44 BadValue);
45 return Success;
46 }
47
48- status = ChangeDeviceControl(client, dev, (xDeviceCtl *) ts);
49+ status = ChangeDeviceControl(client, dev, (xDeviceCtl *) calib);
50
51 if (status == Success) {
52- dev->touchscreen->min_x = ts->min_x;
53- dev->touchscreen->max_x = ts->max_x;
54- dev->touchscreen->min_y = ts->min_y;
55- dev->touchscreen->max_y = ts->max_y;
56- dev->touchscreen->button_threshold = ts->button_threshold;
57- } else if (status == DeviceBusy) {
58- rep.status = DeviceBusy;
59+ dev->absolute->min_x = calib->min_x;
60+ dev->absolute->max_x = calib->max_x;
61+ dev->absolute->min_y = calib->min_y;
62+ dev->absolute->max_y = calib->max_y;
63+ dev->absolute->flip_x = calib->flip_x;
64+ dev->absolute->flip_y = calib->flip_y;
65+ dev->absolute->rotation = calib->rotation;
66+ dev->absolute->button_threshold = calib->button_threshold;
67+ } else if (status == DeviceBusy || status == BadValue) {
68+ rep.status = status;
69 WriteReplyToClient(client, sizeof(xChangeDeviceControlReply),
70 &rep);
71 return Success;
72@@ -199,6 +204,30 @@ ProcXChangeDeviceControl(ClientPtr clien
73 }
74
75 break;
76+ case DEVICE_ABS_AREA:
77+ area = (xDeviceAbsAreaCtl *)&stuff[1];
78+
79+ status = ChangeDeviceControl(client, dev, (xDeviceCtl *) area);
80+
81+ if (status == Success) {
82+ dev->absolute->offset_x = area->offset_x;
83+ dev->absolute->offset_y = area->offset_y;
84+ dev->absolute->width = area->width;
85+ dev->absolute->height = area->height;
86+ dev->absolute->screen = area->screen;
87+ dev->absolute->following = area->following;
88+ } else if (status == DeviceBusy || status == BadValue) {
89+ rep.status = status;
90+ WriteReplyToClient(client, sizeof(xChangeDeviceControlReply),
91+ &rep);
92+ return Success;
93+ } else {
94+ SendErrorToClient(client, IReqCode, X_ChangeDeviceControl, 0,
95+ BadMatch);
96+ return Success;
97+ }
98+
99+ break;
100 case DEVICE_CORE:
101 c = (xDeviceCoreCtl *)&stuff[1];
102
103Index: xorg-server-1.1.99.3/Xi/getdctl.c
104===================================================================
105--- xorg-server-1.1.99.3.orig/Xi/getdctl.c 2007-01-29 22:58:18.000000000 +0000
106+++ xorg-server-1.1.99.3/Xi/getdctl.c 2007-01-29 22:59:27.000000000 +0000
107@@ -124,14 +124,23 @@ ProcXGetDeviceControl(ClientPtr client)
108 total_length = sizeof(xDeviceResolutionState) +
109 (3 * sizeof(int) * dev->valuator->numAxes);
110 break;
111- case DEVICE_TOUCHSCREEN:
112- if (!dev->touchscreen) {
113+ case DEVICE_ABS_CALIB:
114+ if (!dev->absolute) {
115 SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0,
116 BadMatch);
117 return Success;
118 }
119
120- total_length = sizeof(xDeviceTSCtl);
121+ total_length = sizeof(xDeviceAbsCalibCtl);
122+ break;
123+ case DEVICE_ABS_AREA:
124+ if (!dev->absolute) {
125+ SendErrorToClient(client, IReqCode, X_GetDeviceControl, 0,
126+ BadMatch);
127+ return Success;
128+ }
129+
130+ total_length = sizeof(xDeviceAbsAreaCtl);
131 break;
132 case DEVICE_CORE:
133 total_length = sizeof(xDeviceCoreCtl);
134@@ -152,8 +161,11 @@ ProcXGetDeviceControl(ClientPtr client)
135 case DEVICE_RESOLUTION:
136 CopySwapDeviceResolution(client, dev->valuator, buf, total_length);
137 break;
138- case DEVICE_TOUCHSCREEN:
139- CopySwapDeviceTouchscreen(client, dev->touchscreen, buf);
140+ case DEVICE_ABS_CALIB:
141+ CopySwapDeviceAbsCalib(client, dev->absolute, buf);
142+ break;
143+ case DEVICE_ABS_AREA:
144+ CopySwapDeviceAbsArea(client, dev->absolute, buf);
145 break;
146 case DEVICE_CORE:
147 CopySwapDeviceCore(client, dev, buf);
148@@ -206,28 +218,61 @@ CopySwapDeviceResolution(ClientPtr clien
149 }
150 }
151
152-void CopySwapDeviceTouchscreen (ClientPtr client, TouchscreenClassPtr dts,
153+void CopySwapDeviceAbsCalib (ClientPtr client, AbsoluteClassPtr dts,
154 char *buf)
155 {
156 register char n;
157- xDeviceTSState *ts = (xDeviceTSState *) buf;
158+ xDeviceAbsCalibState *calib = (xDeviceAbsCalibState *) buf;
159
160- ts->control = DEVICE_TOUCHSCREEN;
161- ts->length = sizeof(ts);
162- ts->min_x = dts->min_x;
163- ts->max_x = dts->max_x;
164- ts->min_y = dts->min_y;
165- ts->max_y = dts->max_y;
166- ts->button_threshold = dts->button_threshold;
167+ calib->control = DEVICE_ABS_CALIB;
168+ calib->length = sizeof(calib);
169+ calib->min_x = dts->min_x;
170+ calib->max_x = dts->max_x;
171+ calib->min_y = dts->min_y;
172+ calib->max_y = dts->max_y;
173+ calib->flip_x = dts->flip_x;
174+ calib->flip_y = dts->flip_y;
175+ calib->rotation = dts->rotation;
176+ calib->button_threshold = dts->button_threshold;
177
178 if (client->swapped) {
179- swaps(&ts->control, n);
180- swaps(&ts->length, n);
181- swapl(&ts->min_x, n);
182- swapl(&ts->max_x, n);
183- swapl(&ts->min_y, n);
184- swapl(&ts->max_y, n);
185- swapl(&ts->button_threshold, n);
186+ swaps(&calib->control, n);
187+ swaps(&calib->length, n);
188+ swapl(&calib->min_x, n);
189+ swapl(&calib->max_x, n);
190+ swapl(&calib->min_y, n);
191+ swapl(&calib->max_y, n);
192+ swapl(&calib->flip_x, n);
193+ swapl(&calib->flip_y, n);
194+ swapl(&calib->rotation, n);
195+ swapl(&calib->button_threshold, n);
196+ }
197+}
198+
199+void CopySwapDeviceAbsArea (ClientPtr client, AbsoluteClassPtr dts,
200+ char *buf)
201+{
202+ register char n;
203+ xDeviceAbsAreaState *area = (xDeviceAbsAreaState *) buf;
204+
205+ area->control = DEVICE_ABS_AREA;
206+ area->length = sizeof(area);
207+ area->offset_x = dts->offset_x;
208+ area->offset_y = dts->offset_y;
209+ area->width = dts->width;
210+ area->height = dts->height;
211+ area->screen = dts->screen;
212+ area->following = dts->following;
213+
214+ if (client->swapped) {
215+ swaps(&area->control, n);
216+ swaps(&area->length, n);
217+ swapl(&area->offset_x, n);
218+ swapl(&area->offset_y, n);
219+ swapl(&area->width, n);
220+ swapl(&area->height, n);
221+ swapl(&area->screen, n);
222+ swapl(&area->following, n);
223 }
224 }
225
226Index: xorg-server-1.1.99.3/Xi/getdctl.h
227===================================================================
228--- xorg-server-1.1.99.3.orig/Xi/getdctl.h 2007-01-29 22:58:18.000000000 +0000
229+++ xorg-server-1.1.99.3/Xi/getdctl.h 2007-01-29 22:59:27.000000000 +0000
230@@ -42,10 +42,13 @@ void CopySwapDeviceResolution(ClientPtr
231 int /* length */
232 );
233
234-void CopySwapDeviceTouchscreen(ClientPtr /* client */ ,
235- TouchscreenClassPtr /* ts */ ,
236- char * /* buf */
237- );
238+void CopySwapDeviceAbsCalib (ClientPtr client,
239+ AbsoluteClassPtr dts,
240+ char *buf);
241+
242+void CopySwapDeviceAbsArea (ClientPtr client,
243+ AbsoluteClassPtr dts,
244+ char *buf);
245
246 void CopySwapDeviceCore(ClientPtr /* client */ ,
247 DeviceIntPtr /* dev */ ,
248Index: xorg-server-1.1.99.3/Xi/stubs.c
249===================================================================
250--- xorg-server-1.1.99.3.orig/Xi/stubs.c 2007-01-29 22:58:18.000000000 +0000
251+++ xorg-server-1.1.99.3/Xi/stubs.c 2007-01-29 22:59:27.000000000 +0000
252@@ -287,7 +287,7 @@ ChangeDeviceControl(register ClientPtr c
253 switch (control->control) {
254 case DEVICE_RESOLUTION:
255 return (BadMatch);
256- case DEVICE_TOUCHSCREEN:
257+ case DEVICE_ABS_CALIB:
258 return (BadMatch);
259 case DEVICE_CORE:
260 return (BadMatch);
261Index: xorg-server-1.1.99.3/dix/devices.c
262===================================================================
263--- xorg-server-1.1.99.3.orig/dix/devices.c 2007-01-29 22:58:18.000000000 +0000
264+++ xorg-server-1.1.99.3/dix/devices.c 2007-01-29 22:59:27.000000000 +0000
265@@ -117,7 +117,7 @@ AddInputDevice(DeviceProc deviceProc, Bo
266 dev->button = (ButtonClassPtr)NULL;
267 dev->focus = (FocusClassPtr)NULL;
268 dev->proximity = (ProximityClassPtr)NULL;
269- dev->touchscreen = (TouchscreenClassPtr)NULL;
270+ dev->absolute = (AbsoluteClassPtr)NULL;
271 dev->kbdfeed = (KbdFeedbackPtr)NULL;
272 dev->ptrfeed = (PtrFeedbackPtr)NULL;
273 dev->intfeed = (IntegerFeedbackPtr)NULL;
274@@ -821,22 +821,31 @@ InitValuatorClassDeviceStruct(DeviceIntP
275 }
276
277 _X_EXPORT Bool
278-InitTouchscreenClassDeviceStruct(DeviceIntPtr dev)
279+InitAbsoluteClassDeviceStruct(DeviceIntPtr dev)
280 {
281- register TouchscreenClassPtr tsc;
282+ register AbsoluteClassPtr abs;
283
284- tsc = (TouchscreenClassPtr)xalloc(sizeof(TouchscreenClassRec));
285- if (!tsc)
286+ abs = (AbsoluteClassPtr)xalloc(sizeof(AbsoluteClassRec));
287+ if (!abs)
288 return FALSE;
289
290 /* we don't do anything sensible with these, but should */
291- tsc->min_x = -1;
292- tsc->min_y = -1;
293- tsc->max_x = -1;
294- tsc->max_y = -1;
295+ abs->min_x = -1;
296+ abs->min_y = -1;
297+ abs->max_x = -1;
298+ abs->max_y = -1;
299+ abs->flip_x = 0;
300+ abs->flip_y = 0;
301+ abs->rotation = 0;
302+ abs->button_threshold = 0;
303
304- tsc->button_threshold = 0;
305- dev->touchscreen = tsc;
306+ abs->offset_x = 0;
307+ abs->offset_y = 0;
308+ abs->width = -1;
309+ abs->height = -1;
310+ abs->following = 0;
311+
312+ dev->absolute = abs;
313
314 return TRUE;
315 }
316Index: xorg-server-1.1.99.3/hw/xfree86/common/xf86Xinput.c
317===================================================================
318--- xorg-server-1.1.99.3.orig/hw/xfree86/common/xf86Xinput.c 2007-01-29 22:58:18.000000000 +0000
319+++ xorg-server-1.1.99.3/hw/xfree86/common/xf86Xinput.c 2007-01-29 22:59:27.000000000 +0000
320@@ -538,7 +538,8 @@ ChangeDeviceControl (ClientPtr client, D
321 switch (control->control) {
322 case DEVICE_CORE:
323 case DEVICE_RESOLUTION:
324- case DEVICE_TOUCHSCREEN:
325+ case DEVICE_ABS_CALIB:
326+ case DEVICE_ABS_AREA:
327 return Success;
328 default:
329 return BadMatch;
330Index: xorg-server-1.1.99.3/include/input.h
331===================================================================
332--- xorg-server-1.1.99.3.orig/include/input.h 2007-01-29 22:58:18.000000000 +0000
333+++ xorg-server-1.1.99.3/include/input.h 2007-01-29 22:59:27.000000000 +0000
334@@ -238,7 +238,7 @@ extern Bool InitValuatorClassDeviceStruc
335 int /*numMotionEvents*/,
336 int /*mode*/);
337
338-extern Bool InitTouchscreenClassDeviceStruct(
339+extern Bool InitAbsoluteClassDeviceStruct(
340 DeviceIntPtr /*device*/);
341
342 extern Bool InitFocusClassDeviceStruct(
343Index: xorg-server-1.1.99.3/include/inputstr.h
344===================================================================
345--- xorg-server-1.1.99.3.orig/include/inputstr.h 2007-01-29 22:58:18.000000000 +0000
346+++ xorg-server-1.1.99.3/include/inputstr.h 2007-01-29 22:59:27.000000000 +0000
347@@ -185,13 +185,25 @@ typedef struct _ProximityClassRec {
348 char pad;
349 } ProximityClassRec, *ProximityClassPtr;
350
351-typedef struct _TouchscreenClassRec {
352+typedef struct _AbsoluteClassRec {
353+ /* Calibration. */
354 int min_x;
355 int max_x;
356 int min_y;
357 int max_y;
358+ int flip_x;
359+ int flip_y;
360+ int rotation;
361 int button_threshold;
362-} TouchscreenClassRec, *TouchscreenClassPtr;
363+
364+ /* Area. */
365+ int offset_x;
366+ int offset_y;
367+ int width;
368+ int height;
369+ int screen;
370+ XID following;
371+} AbsoluteClassRec, *AbsoluteClassPtr;
372
373 typedef struct _KbdFeedbackClassRec *KbdFeedbackPtr;
374 typedef struct _PtrFeedbackClassRec *PtrFeedbackPtr;
375@@ -293,7 +305,7 @@ typedef struct _DeviceIntRec {
376 ButtonClassPtr button;
377 FocusClassPtr focus;
378 ProximityClassPtr proximity;
379- TouchscreenClassPtr touchscreen;
380+ AbsoluteClassPtr absolute;
381 KbdFeedbackPtr kbdfeed;
382 PtrFeedbackPtr ptrfeed;
383 IntegerFeedbackPtr intfeed;
384Index: xorg-server-1.1.99.3/configure.ac
385===================================================================
386--- xorg-server-1.1.99.3.orig/configure.ac 2007-01-29 22:58:18.000000000 +0000
387+++ xorg-server-1.1.99.3/configure.ac 2007-01-29 22:59:27.000000000 +0000
388@@ -1586,7 +1586,7 @@ if test "$KDRIVE" = yes; then
389 #KDRIVE_PURE_LIBS="$DIX_LIB $OS_LIB $FB_LIB $XEXT_LIB $MIEXT_DAMAGE_LIB \
390 # $MIEXT_SHADOW_LIB $XPSTUBS_LIB"
391 KDRIVE_XKB_DDX_LIB='$(top_builddir)/hw/kdrive/src/libkdrivexkb.a'
392- 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"
393+ 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"
394 KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
395 KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a'
396 KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
397Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c
398===================================================================
399--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c 2007-01-29 22:58:18.000000000 +0000
400+++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c 2007-01-29 22:59:27.000000000 +0000
401@@ -94,7 +94,7 @@ TsRead (int fd, void *closure)
402 event.pressure);
403 discard = 0;
404 if (event.pressure) {
405- if (event.pressure > pi->dixdev->touchscreen->button_threshold)
406+ if (event.pressure > pi->dixdev->absolute->button_threshold)
407 flags = KD_BUTTON_8;
408 else
409 flags = KD_BUTTON_1;
410@@ -356,9 +356,9 @@ TslibEnable (KdPointerInfo *pi)
411 close(private->fd);
412 return BadAlloc;
413 }
414- if (pi->dixdev && pi->dixdev->touchscreen &&
415- pi->dixdev->touchscreen->button_threshold == 0)
416- pi->dixdev->touchscreen->button_threshold = 115;
417+ if (pi->dixdev && pi->dixdev->absolute &&
418+ pi->dixdev->absolute->button_threshold == 0)
419+ pi->dixdev->absolute->button_threshold = 115;
420
421 DebugF("[tslib/TslibEnable] successfully enabled %s\n", pi->path);
422 KdRegisterFd(private->fd, TsRead, pi);
423Index: xorg-server-1.1.99.3/hw/kdrive/src/kinput.c
424===================================================================
425--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kinput.c 2007-01-29 22:58:18.000000000 +0000
426+++ xorg-server-1.1.99.3/hw/kdrive/src/kinput.c 2007-01-29 22:59:27.000000000 +0000
427@@ -444,7 +444,7 @@ KdPointerProc(DeviceIntPtr pDevice, int
428
429 #ifdef XINPUT
430 if (pi->inputClass == KD_TOUCHSCREEN) {
431- InitTouchscreenClassDeviceStruct(pDevice);
432+ InitAbsoluteClassDeviceStruct(pDevice);
433 xiclass = AtomFromName(XI_TOUCHSCREEN);
434 }
435 else {
436@@ -2323,8 +2323,8 @@ ChangeDeviceControl(register ClientPtr c
437 /* FIXME do something more intelligent here */
438 return BadMatch;
439
440- case DEVICE_TOUCHSCREEN:
441- if (!pDev->touchscreen)
442+ case DEVICE_ABS_CALIB:
443+ if (!pDev->absolute)
444 return BadDevice;
445 else
446 return Success;
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch
new file mode 100644
index 0000000000..06eab817bd
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch
@@ -0,0 +1,503 @@
1# Kdrive evdev support patch, posted by Ander Conselvan de Oliveira at
2# http://lists.freedesktop.org/archives/xorg/2005-December/011635.html
3---
4# hw/kdrive/linux/evdev.c | 385 ++++++++++++++++++++++++++++++++++++++++++++++--
5# hw/kdrive/src/kdrive.c | 9 +
6# hw/kdrive/src/kdrive.h | 4
7# 3 files changed, 386 insertions(+), 12 deletions(-)
8#
9Index: xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c
10===================================================================
11--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/evdev.c 2006-11-03 14:49:05.000000000 +0000
12+++ xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c 2007-01-25 22:05:48.000000000 +0000
13@@ -31,9 +31,11 @@
14 #include <X11/X.h>
15 #include <X11/Xproto.h>
16 #include <X11/Xpoll.h>
17+#include <X11/keysym.h>
18 #include "inputstr.h"
19 #include "scrnintstr.h"
20 #include "kdrive.h"
21+#include "kkeymap.h"
22
23 #define NUM_EVENTS 128
24 #define ABS_UNSET -65535
25@@ -107,9 +109,10 @@ EvdevRead (int evdevPort, void *closure)
26 {
27 KdPointerInfo *pi = closure;
28 Kevdev *ke = pi->driverPrivate;
29- int i;
30+ int i, j;
31 struct input_event events[NUM_EVENTS];
32 int n;
33+ int flags;
34
35 n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event));
36 if (n <= 0)
37@@ -117,22 +120,64 @@ EvdevRead (int evdevPort, void *closure)
38 n /= sizeof (struct input_event);
39 for (i = 0; i < n; i++)
40 {
41+ flags = KD_MOUSE_DELTA | kdPointerInfo->buttonState;
42 switch (events[i].type) {
43 case EV_SYN:
44 break;
45 case EV_KEY:
46- EvdevMotion (pi);
47- ASSIGNBIT(ke->key,events[i].code, events[i].value);
48- if (events[i].code < 0x100)
49- ErrorF ("key %d %d\n", events[i].code, events[i].value);
50- else
51- ErrorF ("key 0x%x %d\n", events[i].code, events[i].value);
52+ if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) {
53+ switch (events[i].code) {
54+ case BTN_LEFT:
55+ if (events[i].value == 1)
56+ flags |= KD_BUTTON_1;
57+ else
58+ flags &= ~KD_BUTTON_1;
59+ break;
60+ case BTN_MIDDLE:
61+ if (events[i].value == 1)
62+ flags |= KD_BUTTON_2;
63+ else
64+ flags &= ~KD_BUTTON_2;
65+ break;
66+ case BTN_RIGHT:
67+ if (events[i].value == 1)
68+ flags |= KD_BUTTON_3;
69+ else
70+ flags &= ~KD_BUTTON_3;
71+ break;
72+ default:
73+ /* Unknow button */
74+ break;
75+ }
76+ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
77+ }
78 break;
79 case EV_REL:
80- ke->rel[events[i].code] += events[i].value;
81+ if (events[i].code == REL_X) {
82+ KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0);
83+ }
84+ else if (events[i].code == REL_Y) {
85+ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value);
86+ }
87+ else if (events[i].code == REL_WHEEL) {
88+ for (j = 0; j < abs (events[i].value); j++) {
89+ if (events[i].value > 0)
90+ flags |= KD_BUTTON_4;
91+ else
92+ flags |= KD_BUTTON_5;
93+
94+ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
95+
96+ if (events[i].value > 0)
97+ flags &= ~KD_BUTTON_4;
98+ else
99+ flags &= ~KD_BUTTON_5;
100+
101+ KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0);
102+ } /* events[i].code == REL_WHEEL */
103+ }
104 break;
105 case EV_ABS:
106- ke->abs[events[i].code] = events[i].value;
107 break;
108 }
109 }
110@@ -162,6 +207,12 @@ EvdevInit (KdPointerInfo *pi)
111 for (i = 0; i < NUM_DEFAULT_EVDEV; i++) {
112 fd = open (kdefaultEvdev[i], 2);
113 if (fd >= 0) {
114+ if (ioctl (fd, EVIOCGRAB, 1) < 0)
115+ {
116+ close (fd);
117+ continue;
118+ }
119+
120 pi->path = KdSaveString (kdefaultEvdev[i]);
121 break;
122 }
123@@ -300,7 +351,319 @@ KdPointerDriver LinuxEvdevMouseDriver =
124 NULL,
125 };
126
127-#if 0
128+/* Keyboard */
129+
130+int kbd_fd = -1;
131+int EvdevInputType = 0;
132+
133+KeySym evdevKeymap[(194 - 1 + 1) * 2] = {
134+/* These are directly mapped from DOS scanset 0 */
135+/* 1 8 */ XK_Escape, NoSymbol,
136+/* 2 9 */ XK_1, XK_exclam,
137+/* 3 10 */ XK_2, XK_at,
138+/* 4 11 */ XK_3, XK_numbersign,
139+/* 5 12 */ XK_4, XK_dollar,
140+/* 6 13 */ XK_5, XK_percent,
141+/* 7 14 */ XK_6, XK_asciicircum,
142+/* 8 15 */ XK_7, XK_ampersand,
143+/* 9 16 */ XK_8, XK_asterisk,
144+/* 10 17 */ XK_9, XK_parenleft,
145+/* 11 18 */ XK_0, XK_parenright,
146+/* 12 19 */ XK_minus, XK_underscore,
147+/* 13 20 */ XK_equal, XK_plus,
148+/* 14 21 */ XK_BackSpace, NoSymbol,
149+/* 15 22 */ XK_Tab, NoSymbol,
150+/* 16 23 */ XK_Q, NoSymbol,
151+/* 17 24 */ XK_W, NoSymbol,
152+/* 18 25 */ XK_E, NoSymbol,
153+/* 19 26 */ XK_R, NoSymbol,
154+/* 20 27 */ XK_T, NoSymbol,
155+/* 21 28 */ XK_Y, NoSymbol,
156+/* 22 29 */ XK_U, NoSymbol,
157+/* 23 30 */ XK_I, NoSymbol,
158+/* 24 31 */ XK_O, NoSymbol,
159+/* 25 32 */ XK_P, NoSymbol,
160+/* 26 33 */ XK_bracketleft, XK_braceleft,
161+/* 27 34 */ XK_bracketright, XK_braceright,
162+/* 28 35 */ XK_Return, NoSymbol,
163+/* 29 36 */ XK_Control_L, NoSymbol,
164+/* 30 37 */ XK_A, NoSymbol,
165+/* 31 38 */ XK_S, NoSymbol,
166+/* 32 39 */ XK_D, NoSymbol,
167+/* 33 40 */ XK_F, NoSymbol,
168+/* 34 41 */ XK_G, NoSymbol,
169+/* 35 42 */ XK_H, NoSymbol,
170+/* 36 43 */ XK_J, NoSymbol,
171+/* 37 44 */ XK_K, NoSymbol,
172+/* 38 45 */ XK_L, NoSymbol,
173+/* 39 46 */ XK_semicolon, XK_colon,
174+/* 40 47 */ XK_apostrophe, XK_quotedbl,
175+/* 41 48 */ XK_grave, XK_asciitilde,
176+/* 42 49 */ XK_Shift_L, NoSymbol,
177+/* 43 50 */ XK_backslash, XK_bar,
178+/* 44 51 */ XK_Z, NoSymbol,
179+/* 45 52 */ XK_X, NoSymbol,
180+/* 46 53 */ XK_C, NoSymbol,
181+/* 47 54 */ XK_V, NoSymbol,
182+/* 48 55 */ XK_B, NoSymbol,
183+/* 49 56 */ XK_N, NoSymbol,
184+/* 50 57 */ XK_M, NoSymbol,
185+/* 51 58 */ XK_comma, XK_less,
186+/* 52 59 */ XK_period, XK_greater,
187+/* 53 60 */ XK_slash, XK_question,
188+/* 54 61 */ XK_Shift_R, NoSymbol,
189+/* 55 62 */ XK_KP_Multiply, NoSymbol,
190+/* 56 63 */ XK_Alt_L, XK_Meta_L,
191+/* 57 64 */ XK_space, NoSymbol,
192+/* 58 65 */ XK_Caps_Lock, NoSymbol,
193+/* 59 66 */ XK_F1, NoSymbol,
194+/* 60 67 */ XK_F2, NoSymbol,
195+/* 61 68 */ XK_F3, NoSymbol,
196+/* 62 69 */ XK_F4, NoSymbol,
197+/* 63 70 */ XK_F5, NoSymbol,
198+/* 64 71 */ XK_F6, NoSymbol,
199+/* 65 72 */ XK_F7, NoSymbol,
200+/* 66 73 */ XK_F8, NoSymbol,
201+/* 67 74 */ XK_F9, NoSymbol,
202+/* 68 75 */ XK_F10, NoSymbol,
203+/* 69 76 */ XK_Break, XK_Pause,
204+/* 70 77 */ XK_Scroll_Lock, NoSymbol,
205+/* 71 78 */ XK_KP_Home, XK_KP_7,
206+/* 72 79 */ XK_KP_Up, XK_KP_8,
207+/* 73 80 */ XK_KP_Page_Up, XK_KP_9,
208+/* 74 81 */ XK_KP_Subtract, NoSymbol,
209+/* 75 82 */ XK_KP_Left, XK_KP_4,
210+/* 76 83 */ XK_KP_5, NoSymbol,
211+/* 77 84 */ XK_KP_Right, XK_KP_6,
212+/* 78 85 */ XK_KP_Add, NoSymbol,
213+/* 79 86 */ XK_KP_End, XK_KP_1,
214+/* 80 87 */ XK_KP_Down, XK_KP_2,
215+/* 81 88 */ XK_KP_Page_Down, XK_KP_3,
216+/* 82 89 */ XK_KP_Insert, XK_KP_0,
217+/* 83 90 */ XK_KP_Delete, XK_KP_Decimal,
218+/* 84 91 */ NoSymbol, NoSymbol,
219+/* 85 92 */ NoSymbol, NoSymbol,
220+/* 86 93 */ NoSymbol, NoSymbol,
221+/* 87 94 */ XK_F11, NoSymbol,
222+/* 88 95 */ XK_F12, NoSymbol,
223+
224+/* These are remapped from the extended set (using ExtendMap) */
225+
226+/* 89 96 */ XK_Control_R, NoSymbol,
227+/* 90 97 */ XK_KP_Enter, NoSymbol,
228+/* 91 98 */ XK_KP_Divide, NoSymbol,
229+/* 92 99 */ XK_Sys_Req, XK_Print,
230+/* 93 100 */ XK_Alt_R, XK_Meta_R,
231+/* 94 101 */ XK_Num_Lock, NoSymbol,
232+/* 95 102 */ XK_Home, NoSymbol,
233+/* 96 103 */ XK_Up, NoSymbol,
234+/* 97 104 */ XK_Page_Up, NoSymbol,
235+/* 98 105 */ XK_Left, NoSymbol,
236+/* 99 106 */ XK_Right, NoSymbol,
237+/* 100 107 */ XK_End, NoSymbol,
238+/* 101 108 */ XK_Down, NoSymbol,
239+/* 102 109 */ XK_Page_Down, NoSymbol,
240+/* 103 110 */ XK_Insert, NoSymbol,
241+/* 104 111 */ XK_Delete, NoSymbol,
242+/* 105 112 */ XK_Super_L, NoSymbol,
243+/* 106 113 */ XK_Super_R, NoSymbol,
244+/* 107 114 */ XK_Menu, NoSymbol,
245+/* 108 115 */ NoSymbol, NoSymbol,
246+/* 109 116 */ NoSymbol, NoSymbol,
247+/* 110 117 */ NoSymbol, NoSymbol,
248+/* 111 118 */ NoSymbol, NoSymbol,
249+/* 112 119 */ NoSymbol, NoSymbol,
250+
251+/* 113 120 */ NoSymbol, NoSymbol,
252+/* 114 121 */ NoSymbol, NoSymbol,
253+/* 115 122 */ NoSymbol, NoSymbol,
254+/* 116 123 */ NoSymbol, NoSymbol,
255+/* 117 124 */ NoSymbol, NoSymbol,
256+/* 118 125 */ NoSymbol, NoSymbol,
257+/* 119 126 */ NoSymbol, NoSymbol,
258+/* 120 127 */ NoSymbol, NoSymbol,
259+/* 121 128 */ NoSymbol, NoSymbol,
260+/* 122 129 */ NoSymbol, NoSymbol,
261+/* 123 130 */ NoSymbol, NoSymbol,
262+/* 124 131 */ NoSymbol, NoSymbol,
263+/* 125 132 */ NoSymbol, NoSymbol,
264+/* 126 133 */ NoSymbol, NoSymbol,
265+/* 127 134 */ NoSymbol, NoSymbol,
266+/* 128 135 */ NoSymbol, NoSymbol,
267+/* 129 136 */ NoSymbol, NoSymbol,
268+/* 130 137 */ NoSymbol, NoSymbol,
269+/* 131 138 */ NoSymbol, NoSymbol,
270+/* 132 139 */ NoSymbol, NoSymbol,
271+/* 133 140 */ NoSymbol, NoSymbol,
272+/* 134 141 */ NoSymbol, NoSymbol,
273+/* 135 142 */ NoSymbol, NoSymbol,
274+/* 136 143 */ NoSymbol, NoSymbol,
275+/* 137 144 */ NoSymbol, NoSymbol,
276+/* 138 145 */ NoSymbol, NoSymbol,
277+/* 139 146 */ NoSymbol, NoSymbol,
278+/* 140 147 */ NoSymbol, NoSymbol,
279+/* 141 148 */ NoSymbol, NoSymbol,
280+/* 142 149 */ NoSymbol, NoSymbol,
281+/* 143 150 */ NoSymbol, NoSymbol,
282+/* 144 151 */ NoSymbol, NoSymbol,
283+/* 145 152 */ NoSymbol, NoSymbol,
284+/* 146 153 */ NoSymbol, NoSymbol,
285+/* 147 154 */ NoSymbol, NoSymbol,
286+/* 148 155 */ NoSymbol, NoSymbol,
287+/* 149 156 */ NoSymbol, NoSymbol,
288+/* 150 157 */ NoSymbol, NoSymbol,
289+/* 151 158 */ NoSymbol, NoSymbol,
290+/* 152 159 */ NoSymbol, NoSymbol,
291+/* 153 160 */ NoSymbol, NoSymbol,
292+/* 154 161 */ NoSymbol, NoSymbol,
293+/* 155 162 */ NoSymbol, NoSymbol,
294+/* 156 163 */ NoSymbol, NoSymbol,
295+/* 157 164 */ NoSymbol, NoSymbol,
296+/* 158 165 */ NoSymbol, NoSymbol,
297+/* 159 166 */ NoSymbol, NoSymbol,
298+/* 160 167 */ NoSymbol, NoSymbol,
299+/* 161 168 */ NoSymbol, NoSymbol,
300+/* 162 169 */ NoSymbol, NoSymbol,
301+/* 163 170 */ NoSymbol, NoSymbol,
302+/* 164 171 */ NoSymbol, NoSymbol,
303+/* 165 172 */ NoSymbol, NoSymbol,
304+/* 166 173 */ NoSymbol, NoSymbol,
305+/* 167 174 */ NoSymbol, NoSymbol,
306+/* 168 175 */ NoSymbol, NoSymbol,
307+/* 169 176 */ NoSymbol, NoSymbol,
308+/* 170 177 */ NoSymbol, NoSymbol,
309+/* 171 178 */ NoSymbol, NoSymbol,
310+/* 172 179 */ NoSymbol, NoSymbol,
311+/* 173 180 */ NoSymbol, NoSymbol,
312+/* 174 181 */ NoSymbol, NoSymbol,
313+/* 175 182 */ NoSymbol, NoSymbol,
314+/* 176 183 */ NoSymbol, NoSymbol,
315+/* 177 184 */ NoSymbol, NoSymbol,
316+/* 178 185 */ NoSymbol, NoSymbol,
317+/* 179 186 */ NoSymbol, NoSymbol,
318+/* 180 187 */ NoSymbol, NoSymbol,
319+/* 181 188 */ NoSymbol, NoSymbol,
320+/* 182 189 */ NoSymbol, NoSymbol,
321+/* 183 190 */ NoSymbol, NoSymbol,
322+/* 184 191 */ NoSymbol, NoSymbol,
323+/* 185 192 */ NoSymbol, NoSymbol,
324+/* 186 193 */ NoSymbol, NoSymbol,
325+/* 187 194 */ NoSymbol, NoSymbol,
326+/* 188 195 */ NoSymbol, NoSymbol,
327+/* 189 196 */ NoSymbol, NoSymbol,
328+/* 190 197 */ NoSymbol, NoSymbol,
329+/* 191 198 */ NoSymbol, NoSymbol,
330+/* 192 199 */ NoSymbol, NoSymbol,
331+/* 193 200 */ NoSymbol, NoSymbol,
332+/* 194 201 */ NoSymbol, NoSymbol,
333+};
334+
335+static void
336+EvdevKbdRead (int fd, void *closure)
337+{
338+ int i, n;
339+ struct input_event events[NUM_EVENTS];
340+
341+ n = read (fd, &events, NUM_EVENTS * sizeof (struct input_event));
342+ if (n <= 0)
343+ return;
344+
345+ n /= sizeof (struct input_event);
346+
347+ for (i = 0; i < n; i++)
348+ {
349+ if (events[i].type == EV_KEY)
350+ KdEnqueueKeyboardEvent (events[i].code, !events[i].value);
351+ }
352+}
353+
354+static void
355+EvdevKbdLoad (void)
356+{
357+ kdMinScanCode = 0;
358+ kdMaxScanCode = 193;
359+ kdKeymapWidth = 2;
360+ memcpy (kdKeymap, evdevKeymap, sizeof (evdevKeymap));
361+}
362+
363+static int
364+EvdevKbdInit (void)
365+{
366+ int fd, i;
367+
368+ if (!EvdevInputType)
369+ EvdevInputType = KdAllocInputType ();
370+
371+ if (!kdKeyboard)
372+ {
373+ for (i = 0; i < NUM_DEFAULT_EVDEV; i++)
374+ {
375+ fd = open (kdefaultEvdev[i], 2);
376+ if (fd >= 0)
377+ {
378+ kdKeyboard = KdSaveString (kdefaultEvdev[i]);
379+ break;
380+ }
381+ }
382+ }
383+ else
384+ {
385+ fd = open (kdKeyboard, O_RDWR);
386+ if (fd < 0)
387+ return FALSE;
388+ }
389+
390+ if (ioctl (fd, EVIOCGRAB, 1) < 0)
391+ {
392+ close (fd);
393+ return FALSE;
394+ }
395+
396+ if (!KdRegisterFd (EvdevInputType, fd, EvdevKbdRead, NULL))
397+ return FALSE;
398+
399+ kbd_fd = fd;
400+ return TRUE;
401+}
402+
403+static void
404+EvdevKbdFini (void)
405+{
406+}
407+
408+static void
409+EvdevKbdLeds (int leds)
410+{
411+ struct input_event event;
412+
413+ memset(&event, 0, sizeof(event));
414+
415+ event.type = EV_LED;
416+ event.code = LED_CAPSL;
417+ event.value = leds & (1 << 0) ? 1 : 0;
418+ write(kbd_fd, (char *) &event, sizeof(event));
419+
420+ event.type = EV_LED;
421+ event.code = LED_NUML;
422+ event.value = leds & (1 << 1) ? 1 : 0;
423+ write(kbd_fd, (char *) &event, sizeof(event));
424+
425+ event.type = EV_LED;
426+ event.code = LED_SCROLLL;
427+ event.value = leds & (1 << 2) ? 1 : 0;
428+ write(kbd_fd, (char *) &event, sizeof(event));
429+
430+ event.type = EV_LED;
431+ event.code = LED_COMPOSE;
432+ event.value = leds & (1 << 3) ? 1 : 0;
433+ write(kbd_fd, (char *) &event, sizeof(event));
434+}
435+
436+static void
437+EvdevKbdBell (int volume, int frequency, int duration)
438+{
439+}
440+
441 KdKeyboardFuncs LinuxEvdevKeyboardFuncs = {
442 EvdevKbdLoad,
443 EvdevKbdInit,
444@@ -309,4 +672,4 @@ KdKeyboardFuncs LinuxEvdevKeyboardFuncs
445 EvdevKbdFini,
446 0,
447 };
448-#endif
449+
450Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c
451===================================================================
452--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.c 2006-11-03 14:49:05.000000000 +0000
453+++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c 2007-01-25 21:56:32.000000000 +0000
454@@ -80,6 +80,7 @@ Bool kdDontZap;
455 Bool kdEnabled;
456 int kdSubpixelOrder;
457 int kdVirtualTerminal = -1;
458+char *kdKeyboard = 0;
459 Bool kdSwitchPending;
460 char *kdSwitchCmd;
461 DDXPointRec kdOrigin;
462@@ -707,6 +708,14 @@ KdProcessArgument (int argc, char **argv
463 UseMsg ();
464 return 2;
465 }
466+ if (!strcmp (argv[i], "-keyboard"))
467+ {
468+ if ((i+1) < argc)
469+ kdKeyboard = argv[i+1];
470+ else
471+ UseMsg ();
472+ return 2;
473+ }
474 if (!strcmp (argv[i], "-rgba"))
475 {
476 if ((i+1) < argc)
477Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h
478===================================================================
479--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.h 2006-11-03 14:49:05.000000000 +0000
480+++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h 2007-01-25 21:58:26.000000000 +0000
481@@ -512,6 +512,7 @@ extern Bool kdEmulateMiddleButton;
482 extern Bool kdDisableZaphod;
483 extern Bool kdDontZap;
484 extern int kdVirtualTerminal;
485+extern char *kdKeyboard;
486 extern char *kdSwitchCmd;
487 extern KdOsFuncs *kdOsFuncs;
488
489@@ -875,12 +876,13 @@ void
490 ProcessInputEvents (void);
491
492 extern KdPointerDriver LinuxMouseDriver;
493-extern KdPointerDriver LinuxEvdevDriver;
494+extern KdPointerDriver LinuxEvdevMouseFuncs;
495 extern KdPointerDriver Ps2MouseDriver;
496 extern KdPointerDriver BusMouseDriver;
497 extern KdPointerDriver MsMouseDriver;
498 extern KdPointerDriver TsDriver;
499 extern KdKeyboardDriver LinuxKeyboardDriver;
500+extern KdKeyboardFuncs LinuxEvdevKeyboardFuncs;
501 extern KdOsFuncs LinuxFuncs;
502
503 extern KdPointerDriver VxWorksMouseDriver;
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch
new file mode 100644
index 0000000000..d4f885ee26
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-use-evdev.patch
@@ -0,0 +1,53 @@
1--- xserver/hw/kdrive/fbdev/fbinit.c~ 2006-01-31 17:09:33.000000000 +0100
2+++ xserver/hw/kdrive/fbdev/fbinit.c 2006-01-31 17:11:55.000000000 +0100
3@@ -28,6 +28,8 @@
4 #endif
5 #include <fbdev.h>
6
7+extern int use_evdev;
8+
9 void
10 InitCard (char *name)
11 {
12@@ -45,7 +47,10 @@
13 void
14 InitInput (int argc, char **argv)
15 {
16- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
17+ if (use_evdev)
18+ KdInitInput (&LinuxEvdevMouseFuncs, &LinuxEvdevKeyboardFuncs);
19+ else
20+ KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
21 #ifdef TOUCHSCREEN
22 KdAddMouseDriver (&TsFuncs);
23 #endif
24--- xserver/hw/kdrive/src/kdrive.c.orig 2006-01-31 17:13:28.000000000 +0100
25+++ xserver/hw/kdrive/src/kdrive.c 2006-01-31 17:15:28.000000000 +0100
26@@ -44,6 +44,8 @@
27 #include "dpmsproc.h"
28 #endif
29
30+int use_evdev = 0;
31+
32 typedef struct _kdDepths {
33 CARD8 depth;
34 CARD8 bpp;
35@@ -687,6 +689,7 @@
36 ErrorF("-videoTest Start the server, pause momentarily and exit\n");
37 ErrorF("-origin X,Y Locates the next screen in the the virtual screen (Xinerama)\n");
38 ErrorF("-mouse path[,n] Filename of mouse device, n is number of buttons\n");
39+ ErrorF("-use-evdev Use Linux evdev input\n");
40 ErrorF("-switchCmd Command to execute on vt switch\n");
41 ErrorF("-nozap Don't terminate server on Ctrl+Alt+Backspace\n");
42 ErrorF("vtxx Use virtual terminal xx instead of the next available\n");
43@@ -796,6 +799,10 @@
44 UseMsg ();
45 return 2;
46 }
47+ if (!strcmp (argv[i], "-use-evdev"))
48+ {
49+ use_evdev = 1;
50+ }
51 if (!strcmp (argv[i], "-keyboard"))
52 {
53 if ((i+1) < argc)
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch
new file mode 100644
index 0000000000..23a0f7eae8
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kmode.patch
@@ -0,0 +1,43 @@
1---
2 hw/kdrive/src/kmode.c | 21 +++++++++++++++++++++
3 1 file changed, 21 insertions(+)
4
5Index: xorg-server-1.1.99.3/hw/kdrive/src/kmode.c
6===================================================================
7--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kmode.c 2007-01-25 23:53:59.000000000 +0000
8+++ xorg-server-1.1.99.3/hw/kdrive/src/kmode.c 2007-01-27 17:17:09.000000000 +0000
9@@ -41,6 +41,11 @@ const KdMonitorTiming kdMonitorTimings[
10 1, 11, 14, KdSyncNegative,
11 },
12
13+ { 240, 320, 64, 0,
14+ 0, 0, 0, KdSyncNegative,
15+ 0, 0, 0, KdSyncNegative,
16+ },
17+
18 /* Other VESA modes */
19 { 640, 350, 85, 31500, /* VESA */
20 32, 96, 192, KdSyncPositive, /* 26.413 */
21@@ -80,6 +85,22 @@ const KdMonitorTiming kdMonitorTimings[
22 16, 48, 160, KdSyncNegative, /* 31.469 */
23 10, 33, 45, KdSyncNegative, /* 59.940 */
24 },
25+
26+
27+ { 480, 640, 60, 0,
28+ 0, 0, 0, KdSyncNegative,
29+ 0, 0, 0, KdSyncNegative,
30+ },
31+
32+ { 800, 480, 51, 0,
33+ 0, 0, 0, KdSyncNegative,
34+ 0, 0, 0, KdSyncNegative,
35+ },
36+
37+ { 480, 800, 51, 0,
38+ 0, 0, 0, KdSyncNegative,
39+ 0, 0, 0, KdSyncNegative,
40+ },
41
42 /* 800x600 modes */
43 { 800, 600, 85, 56250, /* VESA */
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch
new file mode 100644
index 0000000000..35ccadaa8d
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/no-serial-probing.patch
@@ -0,0 +1,13 @@
1--- xserver/hw/kdrive/linux/mouse.c.orig 2004-05-13 14:25:51.000000000 -0700
2+++ xserver/hw/kdrive/linux/mouse.c 2005-09-22 12:20:47.000000000 -0700
3@@ -927,8 +927,10 @@ char *kdefaultMouse[] = {
4 "/dev/psaux",
5 "/dev/input/mice",
6 "/dev/adbmouse",
7+#ifdef BREAK_MY_SERIAL_CONSOLE
8 "/dev/ttyS0",
9 "/dev/ttyS1",
10+#endif
11 };
12
13 #define NUM_DEFAULT_MOUSE (sizeof (kdefaultMouse) / sizeof (kdefaultMouse[0]))
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch
new file mode 100644
index 0000000000..2a10f13d40
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate.patch
@@ -0,0 +1,73 @@
1---
2 Xext/Makefile.am | 5
3 Xext/xcalibrate.c | 262 +++++++++++++++++++++++++++++++++++++++++++++
4 configure.ac | 8 +
5 include/kdrive-config.h.in | 3
6 mi/miinitext.c | 6 +
7 5 files changed, 283 insertions(+), 1 deletion(-)
8
9Index: xorg-server-1.1.99.3/mi/miinitext.c
10===================================================================
11--- xorg-server-1.1.99.3.orig/mi/miinitext.c 2006-11-03 14:49:06.000000000 +0000
12+++ xorg-server-1.1.99.3/mi/miinitext.c 2007-01-27 17:59:40.000000000 +0000
13@@ -368,6 +368,9 @@ extern void ResExtensionInit(INITARGS);
14 #ifdef DMXEXT
15 extern void DMXExtensionInit(INITARGS);
16 #endif
17+#ifdef XCALIBRATE
18+extern void XCalibrateExtensionInit(INITARGS);
19+#endif
20 #ifdef XEVIE
21 extern void XevieExtensionInit(INITARGS);
22 #endif
23@@ -662,6 +665,9 @@ InitExtensions(argc, argv)
24 #ifdef XSP
25 if (!noXspExtension) XSPExtensionInit();
26 #endif
27+#ifdef XCALIBRATE
28+ XCalibrateExtensionInit ();
29+#endif
30 }
31
32 void
33Index: xorg-server-1.1.99.3/configure.ac
34===================================================================
35--- xorg-server-1.1.99.3.orig/configure.ac 2006-11-03 14:49:05.000000000 +0000
36+++ xorg-server-1.1.99.3/configure.ac 2007-01-29 22:58:18.000000000 +0000
37@@ -1584,7 +1590,7 @@ if test "$KDRIVE" = yes; then
38 KDRIVE_LIB='$(top_builddir)/hw/kdrive/src/libkdrive.a'
39 KDRIVE_OS_LIB='$(top_builddir)/hw/kdrive/linux/liblinux.a'
40 KDRIVE_STUB_LIB='$(top_builddir)/hw/kdrive/src/libkdrivestubs.a'
41- KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $XSP_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_OS_LIB $KDRIVE_PURE_LIBS $KDRIVE_STUB_LIB"
42+ KDRIVE_LIBS="$XSERVERLIBS_LIBS $DIX_LIB $XSP_LIB $KDRIVE_LIB $TSLIB_LIBS $KDRIVE_PURE_LIBS $KDRIVE_OS_LIB $KDRIVE_STUB_LIB"
43
44 # check if we can build Xephyr
45 PKG_CHECK_MODULES(XEPHYR, x11 xext xfont xau xdmcp, [xephyr="yes"], [xephyr="no"])
46Index: xorg-server-1.1.99.3/include/kdrive-config.h.in
47===================================================================
48--- xorg-server-1.1.99.3.orig/include/kdrive-config.h.in 2006-11-03 14:49:06.000000000 +0000
49+++ xorg-server-1.1.99.3/include/kdrive-config.h.in 2007-01-27 17:59:40.000000000 +0000
50@@ -28,4 +28,7 @@
51 /* Have the backtrace() functiln. */
52 #undef HAVE_BACKTRACE
53
54+/* Enable XCalibrate extension */
55+#undef XCALIBRATE
56+
57 #endif /* _KDRIVE_CONFIG_H_ */
58Index: xorg-server-1.1.99.3/Xext/Makefile.am
59===================================================================
60--- xorg-server-1.1.99.3.orig/Xext/Makefile.am 2006-11-03 14:49:05.000000000 +0000
61+++ xorg-server-1.1.99.3/Xext/Makefile.am 2007-01-29 22:58:33.000000000 +0000
62@@ -81,6 +81,11 @@ BUILTIN_SRCS += $(XCALIBRATE_SRCS)
63 # XCalibrare needs tslib
64 endif
65
66+XCALIBRATE_SRCS = xcalibrate.c
67+if XCALIBRATE
68+BUILTIN_SRCS += $(XCALIBRATE_SRCS)
69+endif
70+
71 # X EVent Interception Extension: allows accessibility helpers & composite
72 # managers to intercept events from input devices and transform as needed
73 # before the clients see them.
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate_coords.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate_coords.patch
new file mode 100644
index 0000000000..fbe89b16b1
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xcalibrate_coords.patch
@@ -0,0 +1,122 @@
1---
2 Xext/xcalibrate.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
3 hw/kdrive/src/kdrive.h | 3 +++
4 hw/kdrive/src/kinput.c | 12 ++++++++++++
5 3 files changed, 61 insertions(+), 1 deletion(-)
6
7Index: xorg-server-1.1.99.3/Xext/xcalibrate.c
8===================================================================
9--- xorg-server-1.1.99.3.orig/Xext/xcalibrate.c 2007-06-30 16:27:13.000000000 +0100
10+++ xorg-server-1.1.99.3/Xext/xcalibrate.c 2007-06-30 16:27:15.000000000 +0100
11@@ -166,7 +166,6 @@ ProcXCalibrateSetRawMode (ClientPtr clie
12 return (client->noClientException);
13 }
14
15-
16 static int
17 SProcXCalibrateSetRawMode (ClientPtr client)
18 {
19@@ -180,6 +179,47 @@ SProcXCalibrateSetRawMode (ClientPtr cli
20 return ProcXCalibrateSetRawMode(client);
21 }
22
23+static int
24+ProcXCalibrateScreenToCoord (ClientPtr client)
25+{
26+ REQUEST(xXCalibrateScreenToCoordReq);
27+ xXCalibrateScreenToCoordReply rep;
28+
29+ REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq);
30+
31+ memset (&rep, 0, sizeof (rep));
32+ rep.type = X_Reply;
33+ rep.sequenceNumber = client->sequence;
34+ rep.x = stuff->x;
35+ rep.y = stuff->y;
36+
37+ KdScreenToMouseCoords(&rep.x, &rep.y);
38+
39+ if (client->swapped)
40+ {
41+ int n;
42+
43+ swaps (&rep.x, n);
44+ swaps (&rep.y, n);
45+ }
46+ WriteToClient(client, sizeof (rep), (char *) &rep);
47+ return (client->noClientException);
48+}
49+
50+static int
51+SProcXCalibrateScreenToCoord (ClientPtr client)
52+{
53+ REQUEST(xXCalibrateScreenToCoordReq);
54+ int n;
55+
56+ REQUEST_SIZE_MATCH (xXCalibrateScreenToCoordReq);
57+
58+ swaps(&stuff->x, n);
59+ swaps(&stuff->y, n);
60+
61+ return ProcXCalibrateScreenToCoord(client);
62+}
63+
64 static void
65 XCalibrateResetProc (ExtensionEntry *extEntry)
66 {
67@@ -194,6 +234,9 @@ ProcXCalibrateDispatch (ClientPtr client
68 return ProcXCalibrateQueryVersion(client);
69 case X_XCalibrateRawMode:
70 return ProcXCalibrateSetRawMode(client);
71+ case X_XCalibrateScreenToCoord:
72+ return ProcXCalibrateScreenToCoord(client);
73+
74 default: break;
75 }
76
77@@ -213,6 +256,8 @@ SProcXCalibrateDispatch (ClientPtr clien
78 return SProcXCalibrateQueryVersion(client);
79 case X_XCalibrateRawMode:
80 return SProcXCalibrateSetRawMode(client);
81+ case X_XCalibrateScreenToCoord:
82+ return SProcXCalibrateScreenToCoord(client);
83
84 default: break;
85 }
86Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h
87===================================================================
88--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.h 2007-06-30 16:27:13.000000000 +0100
89+++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h 2007-06-30 16:30:40.000000000 +0100
90@@ -851,6 +851,9 @@ void
91 KdSetPointerMatrix (KdPointerMatrix *pointer);
92
93 void
94+KdScreenToMouseCoords (int *x, int *y);
95+
96+void
97 KdComputePointerMatrix (KdPointerMatrix *pointer, Rotation randr, int width, int height);
98
99 void
100Index: xorg-server-1.1.99.3/hw/kdrive/src/kinput.c
101===================================================================
102--- xorg-server-1.1.99.3.orig/hw/kdrive/src/kinput.c 2007-06-30 16:27:14.000000000 +0100
103+++ xorg-server-1.1.99.3/hw/kdrive/src/kinput.c 2007-06-30 16:30:16.000000000 +0100
104@@ -570,6 +570,18 @@ KdSetPointerMatrix (KdPointerMatrix *mat
105 }
106
107 void
108+KdScreenToMouseCoords (int *x, int *y)
109+{
110+ int (*m)[3] = kdPointerMatrix.matrix;
111+ int div = m[0][1] * m[1][0] - m[1][1] * m[0][0];
112+ int sx = *x;
113+ int sy = *y;
114+
115+ *x = (m[0][1] * sy - m[0][1] * m[1][2] + m[1][1] * m[0][2] - m[1][1] * sx) / div;
116+ *y = (m[1][0] * sx + m[0][0] * m[1][2] - m[1][0] * m[0][2] - m[0][0] * sy) / div;
117+}
118+
119+void
120 KdComputePointerMatrix (KdPointerMatrix *m, Rotation randr, int width,
121 int height)
122 {
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch
new file mode 100644
index 0000000000..a8f002ea2a
--- /dev/null
+++ b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/xfbdev-fb-opt.patch
@@ -0,0 +1,82 @@
1---
2 hw/kdrive/fbdev/fbdev.c | 17 ++++++++++++-----
3 hw/kdrive/fbdev/fbdev.h | 1 +
4 hw/kdrive/fbdev/fbinit.c | 20 ++++++++++++++++----
5 3 files changed, 29 insertions(+), 9 deletions(-)
6
7--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.c
8+++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbdev.c
9@@ -33,16 +33,23 @@
10
11 extern int KdTsPhyScreen;
12
13+char *fbdevDevicePath = NULL;
14 Bool
15 fbdevInitialize (KdCardInfo *card, FbdevPriv *priv)
16 {
17 int k;
18 unsigned long off;
19- if ((priv->fd = open("/dev/fb0", O_RDWR)) < 0 && \
20- (priv->fd = open("/dev/fb/0", O_RDWR)) < 0) {
21- perror("Error opening /dev/fb0");
22- return FALSE;
23- }
24+
25+ if (fbdevDevicePath == NULL)
26+ fbdevDevicePath = "/dev/fb0";
27+
28+ if ((priv->fd = open(fbdevDevicePath, O_RDWR)) < 0)
29+ {
30+ ErrorF("Error opening framebuffer %s: %s\n",
31+ fbdevDevicePath, strerror(errno));
32+ return FALSE;
33+ }
34+
35 /* quiet valgrind */
36 memset (&priv->fix, '\0', sizeof (priv->fix));
37 if ((k=ioctl(priv->fd, FBIOGET_FSCREENINFO, &priv->fix)) < 0) {
38--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbdev.h
39+++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbdev.h
40@@ -53,6 +53,7 @@ typedef struct _fbdevScrPriv {
41 } FbdevScrPriv;
42
43 extern KdCardFuncs fbdevFuncs;
44+extern char* fbdevDevicePath;
45
46 Bool
47 fbdevInitialize (KdCardInfo *card, FbdevPriv *priv);
48--- xorg-server-X11R7.1-1.1.0.orig/hw/kdrive/fbdev/fbinit.c
49+++ xorg-server-X11R7.1-1.1.0/hw/kdrive/fbdev/fbinit.c
50@@ -59,16 +59,28 @@ InitInput (int argc, char **argv)
51 void
52 ddxUseMsg (void)
53 {
54- KdUseMsg();
55+ KdUseMsg();
56+ ErrorF("\nXfbdev Device Usage:\n");
57+ ErrorF("-fb path Framebuffer device to use. Defaults to /dev/fb0\n");
58+ ErrorF("\n");
59 }
60
61 int
62 ddxProcessArgument (int argc, char **argv, int i)
63 {
64- return KdProcessArgument (argc, argv, i);
65-}
66-
67+ if (!strcmp (argv[i], "-fb"))
68+ {
69+ if (i+1 < argc)
70+ {
71+ fbdevDevicePath = argv[i+1];
72+ return 2;
73+ }
74+ UseMsg();
75+ exit(1);
76+ }
77
78+ return KdProcessArgument (argc, argv, i);
79+}
80
81 KdCardFuncs fbdevFuncs = {
82 fbdevCardInit, /* cardinit */