- Partially back out the previous attempt to fix PS/2 protocol support.

Extended PS/2 protocol without moused(8) is only supported from FreeBSD 7.1
and above.
- Try default PS/2 and USB mouse ports if /dev/sysmouse does not exist.
Previously, it was only available when HAL support was compiled in.
They should be able to handle SysMouse protocol at operation level 1.
- Check protocol for ums(4) as it only supports SysMouse protocol.
- Sync X server with mouse driver.

Reviewed by:	rnoland
This commit is contained in:
Jung-uk Kim 2009-02-03 02:20:31 +00:00
parent 094329a722
commit 4dad67f31a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=227485
4 changed files with 44 additions and 33 deletions

View file

@ -7,7 +7,7 @@
PORTNAME= xf86-input-mouse
PORTVERSION= 1.4.0
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= x11-drivers
MAINTAINER= x11@FreeBSD.org

View file

@ -1,20 +1,11 @@
--- src/bsd_mouse.c.orig 2008-11-26 23:11:36.000000000 -0500
+++ src/bsd_mouse.c 2009-01-28 12:52:12.000000000 -0500
+++ src/bsd_mouse.c 2009-02-02 15:44:07.000000000 -0500
@@ -1,4 +1,3 @@
-
/*
* Copyright (c) 1999-2003 by The XFree86 Project, Inc.
*
@@ -28,6 +27,8 @@
#include <xorg-server.h>
+#define XPS2_SUPPORT
+
#include <X11/X.h>
#include "xf86.h"
#include "xf86Priv.h"
@@ -75,11 +76,13 @@
@@ -75,11 +74,13 @@
#define DEFAULT_MOUSE_DEV "/dev/mouse"
#define DEFAULT_SYSMOUSE_DEV "/dev/sysmouse"
#define DEFAULT_PS2_DEV "/dev/psm0"
@ -28,7 +19,7 @@
NULL
};
#elif (defined(__OpenBSD__) || defined(__NetBSD__)) && defined(WSCONS_SUPPORT)
@@ -100,7 +103,11 @@
@@ -100,7 +101,11 @@
#if defined(__NetBSD__)
return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO;
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
@ -41,7 +32,7 @@
#else
return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
#endif
@@ -179,10 +186,31 @@
@@ -179,10 +184,31 @@
{ MOUSE_PROTO_THINK, "ThinkingMouse" },
{ MOUSE_PROTO_SYSMOUSE, "SysMouse" }
};
@ -74,7 +65,7 @@
int i;
mousehw_t hw;
mousemode_t mode;
@@ -190,10 +218,20 @@
@@ -190,10 +216,20 @@
if (pInfo->fd == -1)
return NULL;
@ -96,7 +87,7 @@
/* interrogate the driver and get some intelligence on the device. */
hw.iftype = MOUSE_IF_UNKNOWN;
hw.model = MOUSE_MODEL_GENERIC;
@@ -209,9 +247,18 @@
@@ -209,9 +245,18 @@
protoPara[0] = mode.syncmask[0];
protoPara[1] = mode.syncmask[1];
}
@ -117,7 +108,7 @@
}
}
}
@@ -234,41 +281,41 @@
@@ -234,41 +279,41 @@
(protocol && xf86NameCmp(protocol, "SysMouse") == 0)) {
/*
* As the FreeBSD sysmouse driver defaults to protocol level 0
@ -176,7 +167,7 @@
}
return FALSE;
}
@@ -308,15 +355,12 @@
@@ -308,15 +353,23 @@
devMouse = FALSE;
}
close(fd);
@ -190,12 +181,23 @@
- }
} else {
close(fd);
+ /*
+ * If moused(8) owns the device, open(2) should have failed
+ * but just in case...
+ */
+ if (MousedRunning(*pdev))
+ continue;
+ /*
+ * ums(4) does not support anything but SysMouse protocol.
+ */
+ if (!strncmp(*pdev, DEFAULT_USB_DEV, 8) && protocol &&
+ strcasecmp(protocol, "auto") &&
+ strcasecmp(protocol, "sysmouse"))
+ continue;
break;
}
}
@@ -782,7 +826,9 @@
@@ -782,7 +835,9 @@
p->CheckProtocol = CheckProtocol;
#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)) && defined(MOUSE_PROTO_SYSMOUSE)
p->SetupAuto = SetupAuto;

View file

@ -8,7 +8,7 @@
PORTNAME= xorg-server
PORTVERSION= 1.5.3
PORTEPOCH= 1
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= x11-servers
MASTER_SITES= http://xorg.freedesktop.org/releases/individual/xserver/
DISTFILES= xorg-server-${PORTVERSION}.tar.bz2

View file

@ -1,11 +1,11 @@
--- hw/xfree86/os-support/bsd/bsd_mouse.c.orig 2007-08-23 15:05:48.000000000 -0400
+++ hw/xfree86/os-support/bsd/bsd_mouse.c 2008-04-08 15:41:42.000000000 -0400
--- hw/xfree86/os-support/bsd/bsd_mouse.c.orig 2008-11-05 11:52:17.000000000 -0500
+++ hw/xfree86/os-support/bsd/bsd_mouse.c 2009-02-02 15:56:11.000000000 -0500
@@ -1,4 +1,3 @@
-
/*
* Copyright (c) 1999-2003 by The XFree86 Project, Inc.
*
@@ -76,11 +75,15 @@
@@ -76,11 +75,13 @@
#define DEFAULT_MOUSE_DEV "/dev/mouse"
#define DEFAULT_SYSMOUSE_DEV "/dev/sysmouse"
#define DEFAULT_PS2_DEV "/dev/psm0"
@ -14,14 +14,12 @@
static const char *mouseDevs[] = {
DEFAULT_MOUSE_DEV,
DEFAULT_SYSMOUSE_DEV,
+#ifndef CONFIG_HAL
DEFAULT_PS2_DEV,
+ DEFAULT_USB_DEV,
+#endif
NULL
};
#elif defined(__OpenBSD__) && defined(WSCONS_SUPPORT)
@@ -101,7 +104,11 @@
#elif (defined(__OpenBSD__) || defined(__NetBSD__)) && defined(WSCONS_SUPPORT)
@@ -101,7 +102,11 @@
#if defined(__NetBSD__)
return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO;
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
@ -34,7 +32,7 @@
#else
return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
#endif
@@ -180,10 +187,31 @@
@@ -180,10 +185,31 @@
{ MOUSE_PROTO_THINK, "ThinkingMouse" },
{ MOUSE_PROTO_SYSMOUSE, "SysMouse" }
};
@ -67,7 +65,7 @@
int i;
mousehw_t hw;
mousemode_t mode;
@@ -191,10 +219,20 @@
@@ -191,10 +217,20 @@
if (pInfo->fd == -1)
return NULL;
@ -89,7 +87,7 @@
/* interrogate the driver and get some intelligence on the device. */
hw.iftype = MOUSE_IF_UNKNOWN;
hw.model = MOUSE_MODEL_GENERIC;
@@ -210,9 +248,18 @@
@@ -210,9 +246,18 @@
protoPara[0] = mode.syncmask[0];
protoPara[1] = mode.syncmask[1];
}
@ -110,7 +108,7 @@
}
}
}
@@ -235,41 +282,41 @@
@@ -235,41 +280,41 @@
(protocol && xf86NameCmp(protocol, "SysMouse") == 0)) {
/*
* As the FreeBSD sysmouse driver defaults to protocol level 0
@ -169,7 +167,7 @@
}
return FALSE;
}
@@ -309,15 +356,12 @@
@@ -309,15 +354,23 @@
devMouse = FALSE;
}
close(fd);
@ -183,12 +181,23 @@
- }
} else {
close(fd);
+ /*
+ * If moused(8) owns the device, open(2) should have failed
+ * but just in case...
+ */
+ if (MousedRunning(*pdev))
+ continue;
+ /*
+ * ums(4) does not support anything but SysMouse protocol.
+ */
+ if (!strncmp(*pdev, DEFAULT_USB_DEV, 8) && protocol &&
+ strcasecmp(protocol, "auto") &&
+ strcasecmp(protocol, "sysmouse"))
+ continue;
break;
}
}
@@ -775,7 +819,9 @@
@@ -775,7 +828,9 @@
p->CheckProtocol = CheckProtocol;
#if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)) && defined(MOUSE_PROTO_SYSMOUSE)
p->SetupAuto = SetupAuto;