* Re: ALPS input driver problem with DualPoint on Dell E6400/E6500
@ 2008-11-25 18:45 Alexander Hofbauer
2008-12-08 14:14 ` ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch] Matthew Chapman
0 siblings, 1 reply; 4+ messages in thread
From: Alexander Hofbauer @ 2008-11-25 18:45 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 543 bytes --]
Hi!
> I can put together a patch, but it's a non-trivial change... I'm
> interested in hearing whether anyone else has the same problem with
> their E6400/E6500 or other DualPoint laptop, or has better ideas
> regarding how to deal with this.
I'm facing the same problem here on my "Latitude E5500" and 2.6.27.7
with no found workarounds so far ("synclient TouchpadOff=0" works until
reset but doesn't avoid the touchpad getting reset eventually).
If there was a patch to test I'd be happy to do so :-).
Thank you,
Alex
[-- Attachment #2: Dies ist ein digital signierter Nachrichtenteil --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch]
2008-11-25 18:45 ALPS input driver problem with DualPoint on Dell E6400/E6500 Alexander Hofbauer
@ 2008-12-08 14:14 ` Matthew Chapman
2008-12-08 19:06 ` Alexander Hofbauer
2009-02-24 0:16 ` Andy Isaacson
0 siblings, 2 replies; 4+ messages in thread
From: Matthew Chapman @ 2008-12-08 14:14 UTC (permalink / raw)
To: Alexander Hofbauer; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 733 bytes --]
Hi,
Here's a patch that implements the 9-byte packet format, which solves
the problem for me.
Matt
On Tue, Nov 25, 2008 at 07:45:42PM +0100, Alexander Hofbauer wrote:
> Hi!
>
> > I can put together a patch, but it's a non-trivial change... I'm
> > interested in hearing whether anyone else has the same problem with
> > their E6400/E6500 or other DualPoint laptop, or has better ideas
> > regarding how to deal with this.
>
> I'm facing the same problem here on my "Latitude E5500" and 2.6.27.7
> with no found workarounds so far ("synclient TouchpadOff=0" works until
> reset but doesn't avoid the touchpad getting reset eventually).
>
>
> If there was a patch to test I'd be happy to do so :-).
>
>
> Thank you,
> Alex
[-- Attachment #2: alps.diff --]
[-- Type: text/plain, Size: 1866 bytes --]
--- linux-2.6.27/drivers/input/mouse/alps.c 2008-12-09 00:31:48.000000000 +1100
+++ linux-2.6.27.alps/drivers/input/mouse/alps.c 2008-12-09 01:08:09.000000000 +1100
@@ -100,6 +100,19 @@
return;
}
+ if ((packet[3] & 0xf) == 0xf) {
+ /* 9-byte packet format seen on some DualPoints */
+ /* handle relative update and then fall through for remainder */
+ input_report_rel(dev2, REL_X,
+ packet[4] ? packet[4] - ((packet[3] << 4) & 0x100) : 0);
+ input_report_rel(dev2, REL_Y,
+ packet[5] ? ((packet[3] << 3) & 0x100) - packet[5] : 0);
+ input_sync(dev2);
+ packet[3] = packet[6];
+ packet[4] = packet[7];
+ packet[5] = packet[8];
+ }
+
if (priv->i->flags & ALPS_OLDPROTO) {
left = packet[2] & 0x10;
right = packet[2] & 0x08;
@@ -197,6 +210,21 @@
if ((psmouse->packet[0] & priv->i->mask0) != priv->i->byte0)
return PSMOUSE_BAD_DATA;
+ if ((psmouse->pktcnt >= 4) && ((psmouse->packet[3] & 0xf) == 0xf))
+ {
+ /* 9-byte packet format seen on some DualPoints */
+ /* Bytes 7 - 9 should have 0 in the highest bit */
+ if ((psmouse->pktcnt >= 7) && (psmouse->pktcnt <= 9) &&
+ (psmouse->packet[psmouse->pktcnt - 1] & 0x80))
+ return PSMOUSE_BAD_DATA;
+
+ if (psmouse->pktcnt == 9) {
+ alps_process_packet(psmouse);
+ return PSMOUSE_FULL_PACKET;
+ }
+ return PSMOUSE_GOOD_DATA;
+ }
+
/* Bytes 2 - 6 should have 0 in the highest bit */
if (psmouse->pktcnt >= 2 && psmouse->pktcnt <= 6 &&
(psmouse->packet[psmouse->pktcnt - 1] & 0x80))
--- linux-2.6.27/drivers/input/mouse/psmouse.h 2008-10-10 09:13:53.000000000 +1100
+++ linux-2.6.27.alps/drivers/input/mouse/psmouse.h 2008-11-06 02:32:45.000000000 +1100
@@ -42,7 +42,7 @@
struct work_struct resync_work;
char *vendor;
char *name;
- unsigned char packet[8];
+ unsigned char packet[9];
unsigned char badbyte;
unsigned char pktcnt;
unsigned char pktsize;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch]
2008-12-08 14:14 ` ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch] Matthew Chapman
@ 2008-12-08 19:06 ` Alexander Hofbauer
2009-02-24 0:16 ` Andy Isaacson
1 sibling, 0 replies; 4+ messages in thread
From: Alexander Hofbauer @ 2008-12-08 19:06 UTC (permalink / raw)
To: linux-kernel; +Cc: Matthew Chapman
[-- Attachment #1: Type: text/plain, Size: 1351 bytes --]
On Die, 2008-12-09 at 01:14 +1100, Matthew Chapman wrote:
> Hi,
>
> Here's a patch that implements the 9-byte packet format, which solves
> the problem for me.
Thank you.
Indeed, the patch seems to work except for losing "grip" when using e.g.
the DualPoint Stick and the touchpad buttons at the same time.
Let's assume I click a window decoration drawn by compiz
(gtk-window-decorator) to move the window and the use the Stick. At
"normal" speed the window is dropped immediately. If I start dragging
very slowly I can sometimes move it successfully.
Playing around and trying to get some usable output from xev I could
reproducibly freeze the whole system (at least graphical output and
keyboard/mouse input) but I don't know if this is related to using
2.6.28-rc7 or the video drivers+compiz or the ALPS DualPoint anyway.
I nevertheless also experimented with metacity. Dragging works most of
the time but even metacity sometimes seems to interpret a double click
and maximizes the window instead of starting to move it.
So I'm quite positive that this patch still has some rough edges and
events that don't belong where they appear (or at least are not expected
by the window managers) because not mixing Touchpad's and -stick's
controls doesn't have any issues at all.
Greetings from Austria,
Alex
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch]
2008-12-08 14:14 ` ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch] Matthew Chapman
2008-12-08 19:06 ` Alexander Hofbauer
@ 2009-02-24 0:16 ` Andy Isaacson
1 sibling, 0 replies; 4+ messages in thread
From: Andy Isaacson @ 2009-02-24 0:16 UTC (permalink / raw)
To: Matthew Chapman; +Cc: Alexander Hofbauer, linux-kernel, linux-input
On Tue, Dec 09, 2008 at 01:14:38AM +1100, Matthew Chapman wrote:
> Hi,
>
> Here's a patch that implements the 9-byte packet format, which solves
> the problem for me.
>
> Matt
Matt,
Your patch fixes http://bugzilla.kernel.org/show_bug.cgi?id=12577 for
me. Would you consider resending it to linux-input@ with your
Signed-off-by?
Thanks,
-andy
> --- linux-2.6.27/drivers/input/mouse/alps.c 2008-12-09 00:31:48.000000000 +1100
> +++ linux-2.6.27.alps/drivers/input/mouse/alps.c 2008-12-09 01:08:09.000000000 +1100
> @@ -100,6 +100,19 @@
> return;
> }
>
> + if ((packet[3] & 0xf) == 0xf) {
> + /* 9-byte packet format seen on some DualPoints */
> + /* handle relative update and then fall through for remainder */
> + input_report_rel(dev2, REL_X,
> + packet[4] ? packet[4] - ((packet[3] << 4) & 0x100) : 0);
> + input_report_rel(dev2, REL_Y,
> + packet[5] ? ((packet[3] << 3) & 0x100) - packet[5] : 0);
> + input_sync(dev2);
> + packet[3] = packet[6];
> + packet[4] = packet[7];
> + packet[5] = packet[8];
> + }
> +
> if (priv->i->flags & ALPS_OLDPROTO) {
> left = packet[2] & 0x10;
> right = packet[2] & 0x08;
> @@ -197,6 +210,21 @@
> if ((psmouse->packet[0] & priv->i->mask0) != priv->i->byte0)
> return PSMOUSE_BAD_DATA;
>
> + if ((psmouse->pktcnt >= 4) && ((psmouse->packet[3] & 0xf) == 0xf))
> + {
> + /* 9-byte packet format seen on some DualPoints */
> + /* Bytes 7 - 9 should have 0 in the highest bit */
> + if ((psmouse->pktcnt >= 7) && (psmouse->pktcnt <= 9) &&
> + (psmouse->packet[psmouse->pktcnt - 1] & 0x80))
> + return PSMOUSE_BAD_DATA;
> +
> + if (psmouse->pktcnt == 9) {
> + alps_process_packet(psmouse);
> + return PSMOUSE_FULL_PACKET;
> + }
> + return PSMOUSE_GOOD_DATA;
> + }
> +
> /* Bytes 2 - 6 should have 0 in the highest bit */
> if (psmouse->pktcnt >= 2 && psmouse->pktcnt <= 6 &&
> (psmouse->packet[psmouse->pktcnt - 1] & 0x80))
> --- linux-2.6.27/drivers/input/mouse/psmouse.h 2008-10-10 09:13:53.000000000 +1100
> +++ linux-2.6.27.alps/drivers/input/mouse/psmouse.h 2008-11-06 02:32:45.000000000 +1100
> @@ -42,7 +42,7 @@
> struct work_struct resync_work;
> char *vendor;
> char *name;
> - unsigned char packet[8];
> + unsigned char packet[9];
> unsigned char badbyte;
> unsigned char pktcnt;
> unsigned char pktsize;
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-02-24 0:29 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-25 18:45 ALPS input driver problem with DualPoint on Dell E6400/E6500 Alexander Hofbauer
2008-12-08 14:14 ` ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch] Matthew Chapman
2008-12-08 19:06 ` Alexander Hofbauer
2009-02-24 0:16 ` Andy Isaacson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox