* Re: ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch]
[not found] ` <20081208141438.GA30462@cse.unsw.EDU.AU>
@ 2009-02-24 0:16 ` Andy Isaacson
0 siblings, 0 replies; only message 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] only message in thread
only message in thread, other threads:[~2009-02-24 0:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1227638742.5353.5.camel@mobian>
[not found] ` <20081208141438.GA30462@cse.unsw.EDU.AU>
2009-02-24 0:16 ` ALPS input driver problem with DualPoint on Dell E6400/E6500 [patch] Andy Isaacson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).