Browse Source

Merge branch 'master' of git+ssh://openadk.org/git/openadk

Waldemar Brodkorb 15 years ago
parent
commit
7cdbf8c14b

+ 4 - 0
mk/modules.mk

@@ -979,6 +979,10 @@ $(eval $(call KMOD_template,INPUT_MOUSEDEV,input-mousedev,\
 	$(MODULES_DIR)/kernel/drivers/input/mousedev \
 	$(MODULES_DIR)/kernel/drivers/input/mousedev \
 ,45))
 ,45))
 
 
+$(eval $(call KMOD_template,INPUT_EVDEV,input-evdev,\
+	$(MODULES_DIR)/kernel/drivers/input/evdev \
+,45))
+
 #
 #
 # USB
 # USB
 #
 #

+ 1 - 0
package/Config.in

@@ -544,6 +544,7 @@ source "package/xf86-video-cirrus/Config.in"
 source "package/xf86-video-geode/Config.in"
 source "package/xf86-video-geode/Config.in"
 source "package/xf86-input-mouse/Config.in"
 source "package/xf86-input-mouse/Config.in"
 source "package/xf86-input-keyboard/Config.in"
 source "package/xf86-input-keyboard/Config.in"
+source "package/xf86-input-evtouch/Config.in"
 
 
 menu "X Libraries"
 menu "X Libraries"
 source "package/libICE/Config.in"
 source "package/libICE/Config.in"

+ 33 - 0
package/xf86-input-evtouch/Makefile

@@ -0,0 +1,33 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=		xf86-input-evtouch
+PKG_VERSION:=		0.8.8
+PKG_RELEASE:=		1
+PKG_BUILDDEP+=		xorg-server
+PKG_MD5SUM:=		4d8e092356d8353002f60a4907046c13
+PKG_DESCR:=		X11 driver for touchscreen
+PKG_SECTION:=		x11
+PKG_DEPENDS:=		xorg-server kmod-input-evdev
+PKG_SITES:=		http://www.conan.de/touchscreen/
+
+DISTFILES:= 		${PKG_NAME}-${PKG_VERSION}.tar.bz2
+
+PKG_TARGET_DEPENDS:=	alix1c
+
+include $(TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,XF86_INPUT_EVTOUCH,${PKG_NAME},$(PKG_VERSION)-$(PKG_RELEASE),${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+
+CONFIGURE_STYLE:=	gnu
+BUILD_STYLE:=		auto
+INSTALL_STYLE:=		auto
+
+post-install:
+	${INSTALL_DIR} ${IDIR_XF86_INPUT_EVTOUCH}/usr/lib/xorg/modules/input
+	${CP} ${WRKINST}/usr/lib/xorg/modules/input/evtouch_drv.so \
+		${IDIR_XF86_INPUT_EVTOUCH}/usr/lib/xorg/modules/input/
+
+include ${TOPDIR}/mk/pkg-bottom.mk

+ 277 - 0
package/xf86-input-evtouch/extra/xf86OSmouse.h

@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) 1999-2003 by The XFree86 Project, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the copyright holder(s)
+ * and author(s) shall not be used in advertising or otherwise to promote
+ * the sale, use or other dealings in this Software without prior written
+ * authorization from the copyright holder(s) and author(s).
+ */
+
+/* Public interface to OS-specific mouse support. */
+
+#ifndef _XF86OSMOUSE_H_
+#define _XF86OSMOUSE_H_
+
+#include "xf86Xinput.h"
+
+/* Mouse interface classes */
+#define MSE_NONE	0x00
+#define MSE_SERIAL	0x01		/* serial port */
+#define MSE_BUS		0x02		/* old bus mouse */
+#define MSE_PS2		0x04		/* standard read-only PS/2 */
+#define MSE_XPS2	0x08		/* extended PS/2 */
+#define MSE_AUTO	0x10		/* auto-detect (PnP) */
+#define MSE_MISC	0x20		/* The OS layer will identify the
+					 * specific protocol names that are
+					 * supported for this class. */
+
+/* Mouse Protocol IDs. */
+typedef enum {
+    PROT_UNKNOWN = -2,
+    PROT_UNSUP = -1,		/* protocol is not supported */
+    PROT_MS = 0,
+    PROT_MSC,
+    PROT_MM,
+    PROT_LOGI,
+    PROT_LOGIMAN,
+    PROT_MMHIT,
+    PROT_GLIDE,
+    PROT_IMSERIAL,
+    PROT_THINKING,
+    PROT_ACECAD,
+    PROT_VALUMOUSESCROLL,
+    PROT_PS2,
+    PROT_GENPS2,
+    PROT_IMPS2,
+    PROT_EXPPS2,
+    PROT_THINKPS2,
+    PROT_MMPS2,
+    PROT_GLIDEPS2,
+    PROT_NETPS2,
+    PROT_NETSCPS2,
+    PROT_BM,
+    PROT_AUTO,
+    PROT_SYSMOUSE,
+    PROT_NUMPROTOS	/* This must always be last. */
+} MouseProtocolID;
+
+struct _MouseDevRec;
+
+typedef int (*GetInterfaceTypesProc)(void);
+typedef const char **(*BuiltinNamesProc)(void);
+typedef Bool (*CheckProtocolProc)(const char *protocol);
+typedef Bool (*BuiltinPreInitProc)(InputInfoPtr pInfo, const char *protocol,
+				   int flags);
+typedef const char *(*DefaultProtocolProc)(void);
+typedef const char *(*SetupAutoProc)(InputInfoPtr pInfo, int *protoPara);
+typedef void (*SetResProc)(InputInfoPtr pInfo, const char* protocol, int rate,
+			   int res);
+typedef const char *(*FindDeviceProc)(InputInfoPtr pInfo, const char *protocol,
+				      int flags);
+typedef const char *(*GuessProtocolProc)(InputInfoPtr pInfo, int flags);
+
+/*
+ * OSMouseInfoRec is used to pass information from the OSMouse layer to the
+ * OS-independent mouse driver.
+ */
+typedef struct {
+	GetInterfaceTypesProc	SupportedInterfaces;
+	BuiltinNamesProc	BuiltinNames;
+	CheckProtocolProc	CheckProtocol;
+	BuiltinPreInitProc	PreInit;
+	DefaultProtocolProc	DefaultProtocol;
+	SetupAutoProc		SetupAuto;
+	SetResProc		SetPS2Res;
+	SetResProc		SetBMRes;
+	SetResProc		SetMiscRes;
+	FindDeviceProc		FindDevice;
+	GuessProtocolProc	GuessProtocol;
+} OSMouseInfoRec, *OSMouseInfoPtr;
+
+/*
+ * SupportedInterfaces: Returns the mouse interface types that the OS support.
+ *		If MSE_MISC is returned, then the BuiltinNames and
+ *		CheckProtocol should be set.
+ *
+ * BuiltinNames: Returns the names of the protocols that are fully handled
+ *		in the OS-specific code.  These are names that don't appear
+ *		directly in the main "mouse" driver.
+ *
+ * CheckProtocol: Checks if the protocol name given is supported by the
+ *		OS.  It should return TRUE for both "builtin" protocols and
+ *		protocols of type MSE_MISC that are supported by the OS.
+ *
+ * PreInit:	The PreInit function for protocols that are builtin.  This
+ *		function is passed the protocol name.
+ *
+ * DefaultProtocol: Returns the name of a default protocol that should be used
+ *		for the OS when none has been supplied in the config file.
+ *		This should only be set when there is a reasonable default.
+ *
+ * SetupAuto:	This function can be used to do OS-specific protocol
+ *		auto-detection.  It returns the name of the detected protocol,
+ *		or NULL when detection fails.  It may also adjust one or more
+ *		of the "protoPara" values for the detected protocol by setting
+ *		then to something other than -1.  SetupAuto gets called in two
+ *		ways.  The first is before any devices have been opened.  This
+ *		can be used when the protocol "Auto" always maps to a single
+ *		protocol type.  The second is with the device open, allowing
+ *		OS-specific probing to be done.
+ *
+ * SetPS2Res:	Set the resolution and sample rate for MSE_PS2 and MSE_XPS2
+ *		protocol types.
+ *
+ * SetBMRes:	Set the resolution and sample rate for MSE_BM protocol types.
+ *
+ * SetMiscRes:	Set the resolution and sample rate for MSE_MISC protocol types.
+ *
+ * FindDevice:	This function gets called when no Device has been specified
+ *		in the config file.  OS-specific methods may be used to guess
+ * 		which input device to use.  This function is called after the
+ *		pre-open attempts at protocol discovery are done, but before
+ * 		the device is open.  I.e., after the first SetupAuto() call,
+ *		after the DefaultProtocol() call, but before the PreInit()
+ *		call.  Available protocol information may be used in locating
+ *		the default input device.
+ *
+ * GuessProtocol: A last resort attempt at guessing the mouse protocol by
+ *		whatever OS-specific means might be available.  OS-independent
+ *		things should be in the mouse driver.  This function gets
+ *		called after the mouse driver's OS-independent methods have
+ *		failed.
+ */
+
+extern OSMouseInfoPtr xf86OSMouseInit(int flags);
+
+/* Adjust this when the mouse interface changes. */
+
+/*
+ * History:
+ *
+ *  1.0.0 - Everything up to when versioning was started.
+ *  1.1.0 - FindDevice and GuessProtocol added to OSMouseInfoRec
+ *  1.2.0 - xisbscale added to MouseDevRec
+ *
+ */
+
+/* Z axis mapping */
+#define MSE_NOZMAP	0
+#define MSE_MAPTOX	-1
+#define MSE_MAPTOY	-2
+#define MSE_MAPTOZ	-3
+#define MSE_MAPTOW	-4
+
+/* Generalize for other axes. */
+#define MSE_NOAXISMAP	MSE_NOZMAP
+
+#define MSE_MAXBUTTONS	24
+#define MSE_DFLTBUTTONS	 3
+
+/*
+ * Mouse device record.  This is shared by the mouse driver and the OSMouse
+ * layer.
+ */
+
+typedef void (*checkMovementsProc)(InputInfoPtr,int, int);
+typedef void (*autoProbeProc)(InputInfoPtr, Bool, Bool);
+typedef Bool (*collectDataProc)(struct _MouseDevRec *, unsigned char);
+typedef Bool (*dataGoodProc)(struct _MouseDevRec *);
+
+typedef void (*PostMseEventProc)(InputInfoPtr pInfo, int buttons,
+			      int dx, int dy, int dz, int dw);
+typedef void (*MouseCommonOptProc)(InputInfoPtr pInfo);
+
+typedef struct _MouseDevRec {
+    PtrCtrlProcPtr	Ctrl;
+    PostMseEventProc	PostEvent;
+    MouseCommonOptProc	CommonOptions;
+    DeviceIntPtr	device;
+    const char *	mseDevice;
+    const char *	protocol;
+    MouseProtocolID	protocolID;
+    MouseProtocolID	oldProtocolID; /* hack */
+    int			class;
+    int			mseModel;
+    int			baudRate;
+    int			oldBaudRate;
+    int			sampleRate;
+    int			lastButtons;
+    int			threshold;	/* acceleration */
+    int			num;
+    int			den;
+    int			buttons;	/* # of buttons */
+    int			emulateState;	/* automata state for 2 button mode */
+    Bool		emulate3Buttons;
+    Bool		emulate3ButtonsSoft;
+    int			emulate3Timeout;/* Timeout for 3 button emulation */
+    Bool		chordMiddle;
+    Bool                flipXY;
+    int                 invX;
+    int                 invY;
+    int			mouseFlags;	/* Flags to Clear after opening
+					 * mouse dev */
+    int			truebuttons;	/* (not used)
+					 * Arg to maintain before
+					 * emulate3buttons timer callback */
+    int			resolution;
+    int			negativeZ;	/* button mask */
+    int			positiveZ;	/* button mask */
+    int			negativeW;	/* button mask */
+    int			positiveW;	/* button mask */
+    pointer		buffer;		/* usually an XISBuffer* */
+    int			protoBufTail;
+    unsigned char	protoBuf[8];
+    unsigned char	protoPara[8];
+    unsigned char	inSync;		/* driver in sync with datastream */
+    pointer		mousePriv;	/* private area */
+    InputInfoPtr	pInfo;
+    int			origProtocolID;
+    const char *	origProtocol;
+    Bool		emulate3Pending;/* timer waiting */
+    CARD32		emulate3Expires;/* time to fire emulation code */
+    Bool		emulateWheel;
+    int			wheelInertia;
+    int			wheelButton;
+    int			negativeX;	/* Button values.  Unlike the Z and */
+    int			positiveX;	/* W equivalents, these are button  */
+    int			negativeY;	/* values rather than button masks. */
+    int			positiveY;
+    int			wheelYDistance;
+    int			wheelXDistance;
+    Bool		autoProbe;
+    checkMovementsProc  checkMovements;
+    autoProbeProc	autoProbeMouse;
+    collectDataProc	collectData;
+    dataGoodProc	dataGood;
+    int			angleOffset;
+    pointer		pDragLock;	/* drag lock area */
+    int			xisbscale;	/* buffer size for 1 event */
+    int			wheelButtonTimeout;/* Timeout for the wheel button emulation */
+    CARD32		wheelButtonExpires;
+    int			doubleClickSourceButtonMask;
+    int			doubleClickTargetButton;
+    int			doubleClickTargetButtonMask;
+    int			doubleClickOldSourceState;
+    int			lastMappedButtons;
+    int			buttonMap[MSE_MAXBUTTONS];
+} MouseDevRec, *MouseDevPtr;
+
+#endif /* _XF86OSMOUSE_H_ */

+ 11 - 0
package/xf86-input-evtouch/patches/patch-ev_calibrate_c

@@ -0,0 +1,11 @@
+--- xf86-input-evtouch-0.8.8.orig/ev_calibrate.c	2008-11-10 12:25:32.000000000 +0100
++++ xf86-input-evtouch-0.8.8/ev_calibrate.c	2010-01-08 17:13:52.000000000 +0100
+@@ -218,7 +218,7 @@ int main (void)
+         int cap_style = CapButt;        /* style of the line's edje and */
+         int join_style = JoinBevel;        /*  joined lines.                */
+ 
+-        int event_mask = ExposureMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask;
++        int event_mask = ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask;
+ 
+         int depth;
+         int screen_num;

+ 125 - 0
package/xf86-input-evtouch/patches/patch-evtouch_c

@@ -0,0 +1,125 @@
+--- xf86-input-evtouch-0.8.8.orig/evtouch.c	2008-11-11 09:47:55.000000000 +0100
++++ xf86-input-evtouch-0.8.8/evtouch.c	2010-01-08 17:14:02.000000000 +0100
+@@ -30,8 +30,8 @@
+ 
+ #define _evdev_touch_C_
+ 
+-#include <xf86Version.h>
+-#if XF86_VERSION_CURRENT >= XF86_VERSION_NUMERIC(3,9,0,0,0)
++#include <xorgVersion.h>
++#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(3,9,0,0,0)
+ #define XFREE86_V4
+ #endif
+ 
+@@ -74,7 +74,6 @@
+ #include "xf86_OSproc.h"
+ #include "xf86Xinput.h"
+ #include "exevents.h"
+-#include "xf86OSmouse.h"
+ #include "randrstr.h"
+ 
+ #ifndef NEED_XF86_TYPES
+@@ -139,7 +138,7 @@ static XF86ModuleVersionInfo VersionRec 
+         "Kenan Esau",
+         MODINFOSTRING1,
+         MODINFOSTRING2,
+-        XF86_VERSION_CURRENT,
++        XORG_VERSION_CURRENT,
+         0, 8, 8,
+         ABI_CLASS_XINPUT,
+         ABI_XINPUT_VERSION,
+@@ -167,7 +166,7 @@ Unplug(pointer p)
+ }
+ 
+ 
+-XF86ModuleData evtouchModuleData = {&VersionRec, Plug, Unplug };
++_X_EXPORT XF86ModuleData evtouchModuleData = {&VersionRec, Plug, Unplug };
+ 
+ #endif /* XFree86LOADER */
+ 
+@@ -306,7 +305,7 @@ void EVTouchProcessAbs(EVTouchPrivatePtr
+ 	}
+ 
+         if (pos_changed == 1) {
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 2
+                 ConvertProc(priv->local, 0, 2, 
+                             priv->raw_x, priv->raw_y,
+                             0, 0, 0, 0, 
+@@ -370,7 +369,7 @@ void EVTouchProcessRel(EVTouchPrivatePtr
+                         priv->raw_y = priv->min_y;
+         }
+ 
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 2
+         ConvertProc(priv->local, 0, 2,
+                     priv->raw_x, priv->raw_y,
+                     0, 0, 0, 0,
+@@ -591,6 +590,10 @@ DeviceInit (DeviceIntPtr dev)
+         EVTouchPrivatePtr priv = (EVTouchPrivatePtr) (local->private);
+         unsigned char map[EV_MAX_BUTTONS];
+         int i;
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++        Atom btn_label;
++        Atom axis_labels[2] = { 0, 0 };
++#endif
+ 
+         for (i = 0; i < EV_MAX_BUTTONS; i++)
+                 map[i] = i;
+@@ -629,7 +632,11 @@ DeviceInit (DeviceIntPtr dev)
+         /* 
+          * Device reports button press for 5 buttons.
+          */
+-        if (InitButtonClassDeviceStruct (dev, EV_MAX_BUTTONS, map) == FALSE)
++        if (InitButtonClassDeviceStruct (dev, EV_MAX_BUTTONS,
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++                 &btn_label,
++#endif
++                 map) == FALSE)
+         {
+                 ErrorF("Unable to allocate EVTouch touchscreen ButtonClassDeviceStruct\n");
+                 return BadAlloc;
+@@ -653,28 +660,34 @@ DeviceInit (DeviceIntPtr dev)
+          * Device reports motions on 2 axes in absolute coordinates.
+          * Axes min and max values are reported in raw coordinates.
+          */
+-        if (InitValuatorClassDeviceStruct(dev, 2, xf86GetMotionEvents,
+-                                          local->history_size, Absolute) == FALSE)
++        if (InitValuatorClassDeviceStruct(dev, 2,
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++				      axis_labels,
++#endif
++                              local->history_size, Absolute) == FALSE)
+         {
+                 ErrorF ("Unable to allocate EVTouch touchscreen ValuatorClassDeviceStruct\n");
+                 return !Success;
+         }
+ 
+-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 2
+-        xf86InitValuatorAxisStruct(dev, 0, 0, priv->screen_width,
++        xf86InitValuatorAxisStruct(dev, 0, 
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++				           axis_labels[0],
++#endif
++                                   0, priv->screen_width,
+                                    1024,
+                                    EV_AXIS_MIN_RES /* min_res */ ,
+                                    EV_AXIS_MAX_RES /* max_res */ );
+         xf86InitValuatorDefaults(dev, 0);
+-        xf86InitValuatorAxisStruct(dev, 1, 0, priv->screen_height,
++        xf86InitValuatorAxisStruct(dev, 1,
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
++				           axis_labels[1],
++#endif
++                                   0, priv->screen_height,
+                                    1024,
+                                    EV_AXIS_MIN_RES /* min_res */ ,
+                                    EV_AXIS_MAX_RES /* max_res */ );
+         xf86InitValuatorDefaults(dev, 1);
+-#else
+-	xf86InitValuatorAxisStruct(dev, 0, priv->min_x, priv->max_x,
+-        xf86InitValuatorDefaults(dev, 1);
+-#endif
+ 
+         /* Initial position of pointer on screen: Centered */
+         priv->cur_x=(priv->max_x - priv->min_x)/2;

+ 6 - 0
target/linux/config/Config.in.input

@@ -38,4 +38,10 @@ config ADK_KPACKAGE_KMOD_INPUT_MOUSEDEV
 	tristate
 	tristate
 	default n
 	default n
 
 
+config ADK_KPACKAGE_KMOD_INPUT_EVDEV
+	prompt "kmod-input-evdev................. Event support"
+	select ADK_KERNEL_INPUT
+	tristate
+	default n
+
 endmenu
 endmenu