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

[ Available lists | Index of freebsd-bugs | Month of Feb 2008 | Week of 19 Feb 2008 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
Eygene Ryabinkin <rea-fbsd@codelabs.ru>
Date
19 Feb 2008 14:30:02
Subject
kern/120833: [patch] psm: try to detect Synaptics touchpad before IntelliMouse
Message-ID
20080219142814.A9ACE1AF41E@void.codelabs.ru


[ Hide this part ]
 
>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@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:


Elapsed time: 0.125 seconds