kern/120833: [patch] psm: try to detect Synaptics touchpad before IntelliMouse

Eygene Ryabinkin rea-fbsd at codelabs.ru
Tue Feb 19 14:30:02 UTC 2008


>Number:         120833
>Category:       kern
>Synopsis:       [patch] psm: try to detect Synaptics touchpad before IntelliMouse
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Feb 19 14:30:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Eygene Ryabinkin
>Release:        FreeBSD 6.3-RELEASE amd64
>Organization:
Code Labs
>Environment:

System: FreeBSD XXX 6.3-RELEASE FreeBSD 6.3-RELEASE #15: Tue Feb 19 16:24:48 MSK 2008 root at XXX:/usr/obj/usr/src/sys/XXX amd64

>Description:

On HP/Compaq 6910p (GB951EA) notebook, psm driver detects Synaptics
touchpad as the IntelliMouse:
-----
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse, device ID 3-00, 3 buttons
-----

>How-To-Repeat:

Get HP 6910p (the one at hand was the rik@'s one), enable Synaptics
hw.psm.synaptics_support, boot FreeBSD and look at dmesg.  Additionally,
one can try to use synaptics driver for Xorg (from ports): it will
refuse to find the device.

>Fix:

The simplest fix is to reorder touchpad detection in dev/atkbdc/psm.c:

--- patch-try_synaptics_earlier begins here ---
--- psm.c.orig	2008-02-19 16:59:05.000000000 +0300
+++ psm.c	2008-02-19 16:59:56.000000000 +0300
@@ -357,6 +357,8 @@
       0x08, MOUSE_4D_PACKETSIZE, enable_4dmouse, },
     { MOUSE_MODEL_4DPLUS,		/* A4 Tech 4D+ Mouse */
       0xc8, MOUSE_4DPLUS_PACKETSIZE, enable_4dplus, },
+    { MOUSE_MODEL_SYNAPTICS,		/* Synaptics Touchpad */
+      0xc0, MOUSE_SYNAPTICS_PACKETSIZE, enable_synaptics, },
     { MOUSE_MODEL_INTELLI,		/* Microsoft IntelliMouse */
       0x08, MOUSE_PS2INTELLI_PACKETSIZE, enable_msintelli, },
     { MOUSE_MODEL_GLIDEPOINT,		/* ALPS GlidePoint */
@@ -365,8 +367,6 @@
       0x80, MOUSE_PS2_PACKETSIZE, enable_kmouse, },
     { MOUSE_MODEL_VERSAPAD,		/* Interlink electronics VersaPad */
       0xe8, MOUSE_PS2VERSA_PACKETSIZE, enable_versapad, },
-    { MOUSE_MODEL_SYNAPTICS,		/* Synaptics Touchpad */
-      0xc0, MOUSE_SYNAPTICS_PACKETSIZE, enable_synaptics, },
     { MOUSE_MODEL_GENERIC,
       0xc0, MOUSE_PS2_PACKETSIZE, NULL, },
 };
--- patch-try_synaptics_earlier ends here ---

This works: FreeBSD's psm(4) detects the touchpad and Xorg happily
works with both touchpad and stick.  I don't know if it will break
something: it seems to me that Synaptics detection routine is rather
specific to the Synaptics itself, but the reality can be different.
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list