Subject: 2.6.11: touchpad unresponsive

I just compiled 2.6.11 from 2.6.10 config using 'make oldconfig',
activate new options to default values (i.e. set "main kernel lock
preemtive" to YES).

Booting X in new kernel makes my touchpad very unresponsive. I can't
click any longer in the touchpad area, and the touchpad doesn't response
when moving in small increments, so the whole experience is quite bad.

Attached Xorg log, may be of use.

2.6.10 worked ok in this respect, as 2.4.27.


Attachments:
(No filename) (448.00 B)
Xorg.0.log (57.25 kB)
Download all attachments

2005-03-02 17:17:25

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: 2.6.11: touchpad unresponsive

On Wed, 02 Mar 2005 16:55:59 +0100, [email protected]
<[email protected]> wrote:
> I just compiled 2.6.11 from 2.6.10 config using 'make oldconfig',
> activate new options to default values (i.e. set "main kernel lock
> preemtive" to YES).
>
> Booting X in new kernel makes my touchpad very unresponsive. I can't
> click any longer in the touchpad area, and the touchpad doesn't response
> when moving in small increments, so the whole experience is quite bad.
>

If it is identified as an ALPS touchpad you can try installing Peter
Osterlund's Synaptics X driver:

http://web.telia.com/~u89404340/touchpad/

Alternatively you can restore 2.6.10 behavior with psmouse.proto=exps
boot option (if psmouse is a module add "options psmouse proto=exps"
to your /etc/modprobe.conf).

--
Dmitry

Subject: Re: 2.6.11: touchpad unresponsive

Dmitry Torokhov wrote:

>On Wed, 02 Mar 2005 16:55:59 +0100, [email protected]
><[email protected]> wrote:
>
>
>>I just compiled 2.6.11 from 2.6.10 config using 'make oldconfig',
>>activate new options to default values (i.e. set "main kernel lock
>>preemtive" to YES).
>>
>>Booting X in new kernel makes my touchpad very unresponsive. I can't
>>click any longer in the touchpad area, and the touchpad doesn't response
>>when moving in small increments, so the whole experience is quite bad.
>>
>>
>>
>
>If it is identified as an ALPS touchpad you can try installing Peter
>Osterlund's Synaptics X driver:
>
> http://web.telia.com/~u89404340/touchpad/
>
>Alternatively you can restore 2.6.10 behavior with psmouse.proto=exps
>boot option (if psmouse is a module add "options psmouse proto=exps"
>to your /etc/modprobe.conf).
>
>
>
Yes, it's an ALPS touchpad.

Ok, I compiled latest synaptics driver (synaptics-0.14.0) under the
following conditions
- Enabled CONFIG_MOUSE_PS2 (already enabled)
- Enabled CONFIG_INPUT_EVDEV (this one on purpose)

I read README.alps so I tried patching the kernel with alps.patch as
suggested. Looks like it didn't work because patch refused to patch
already patched files. I gave a look at the patch and the kernel code,
and they seem to be incompatible (maybe you need to release a newe patch).

So I proceded without the patched kernel, installing the synaptics
driver using INSTALL and README.alps settings.

With plain INSTALL settings (no ALPS), the touchpad seemed responsible,
but kind of slow. Simple or double click didn't work.

With README.alps settings, touchpad feels a lot like in 2.6.10, thought
the "acceleration" seems to be non-linear.
Simple click worked BUT double-click didn't work. Horizontal/Vertical
scroll and Click-n-Drag worked too, so I'm almost there.

I tried to patch alps.c using the tiny patch at README.alps but that
didn't work either as that version is clearly not designed for 2.6.10
alps.c.

Thanks for your help.

By the way, I'm using a Toshiba laptop (Toshiba Satellite A10), maybe
you would like to add that to your supported hardware list.

2005-03-02 22:14:15

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: 2.6.11: touchpad unresponsive

On Wed, 02 Mar 2005 19:51:09 +0100, Miguelanxo Otero Salgueiro
<[email protected]> wrote:
> Dmitry Torokhov wrote:
>
> >On Wed, 02 Mar 2005 16:55:59 +0100, [email protected]
> ><[email protected]> wrote:
> >
> >
> >>I just compiled 2.6.11 from 2.6.10 config using 'make oldconfig',
> >>activate new options to default values (i.e. set "main kernel lock
> >>preemtive" to YES).
> >>
> >>Booting X in new kernel makes my touchpad very unresponsive. I can't
> >>click any longer in the touchpad area, and the touchpad doesn't response
> >>when moving in small increments, so the whole experience is quite bad.
> >>
> >>
> >>
> >
> >If it is identified as an ALPS touchpad you can try installing Peter
> >Osterlund's Synaptics X driver:
> >
> > http://web.telia.com/~u89404340/touchpad/
> >
> >Alternatively you can restore 2.6.10 behavior with psmouse.proto=exps
> >boot option (if psmouse is a module add "options psmouse proto=exps"
> >to your /etc/modprobe.conf).
> >
> >
> >
> Yes, it's an ALPS touchpad.
>
> Ok, I compiled latest synaptics driver (synaptics-0.14.0) under the
> following conditions
> - Enabled CONFIG_MOUSE_PS2 (already enabled)
> - Enabled CONFIG_INPUT_EVDEV (this one on purpose)
>
> I read README.alps so I tried patching the kernel with alps.patch as
> suggested. Looks like it didn't work because patch refused to patch
> already patched files. I gave a look at the patch and the kernel code,
> and they seem to be incompatible (maybe you need to release a newe patch).
>
> So I proceded without the patched kernel, installing the synaptics
> driver using INSTALL and README.alps settings.
>
> With plain INSTALL settings (no ALPS), the touchpad seemed responsible,
> but kind of slow. Simple or double click didn't work.
>
> With README.alps settings, touchpad feels a lot like in 2.6.10, thought
> the "acceleration" seems to be non-linear.
> Simple click worked BUT double-click didn't work. Horizontal/Vertical
> scroll and Click-n-Drag worked too, so I'm almost there.
>

There are more paches done by Peter in the input queue that should
improve ALPS tapping behaviour. Maybe Peter will add them to his
driver for time being.

>
> By the way, I'm using a Toshiba laptop (Toshiba Satellite A10), maybe
> you would like to add that to your supported hardware list.
>

Please let Peter ([email protected]) know as he maintains the driver/site.

--
Dmitry

2005-03-03 00:58:30

by Pete Zaitcev

[permalink] [raw]
Subject: Re: 2.6.11: touchpad unresponsive

On Wed, 2 Mar 2005 12:12:53 -0500, Dmitry Torokhov <[email protected]> wrote:

> > Booting X in new kernel makes my touchpad very unresponsive. I can't
> > click any longer in the touchpad area, and the touchpad doesn't response
> > when moving in small increments, so the whole experience is quite bad.

> If it is identified as an ALPS touchpad you can try installing Peter
> Osterlund's Synaptics X driver:
>
> http://web.telia.com/~u89404340/touchpad/

Not a bad idea but I suspect it may be simpler to use the attached patch
instead (written by Peter, actually).

-- Pete

diff -urp -X dontdiff linux-2.6.11-rc4/drivers/input/mousedev.c linux-2.6.11-rc4-lem/drivers/input/mousedev.c
--- linux-2.6.11-rc4/drivers/input/mousedev.c 2005-02-15 22:38:39.000000000 -0800
+++ linux-2.6.11-rc4-lem/drivers/input/mousedev.c 2005-02-15 22:54:35.000000000 -0800
@@ -71,6 +71,7 @@ struct mousedev {
struct mousedev_hw_data packet;
unsigned int pkt_count;
int old_x[4], old_y[4];
+ int frac_dx, frac_dy;
unsigned long touch;
};

@@ -117,24 +118,31 @@ static struct mousedev mousedev_mix;

static void mousedev_touchpad_event(struct input_dev *dev, struct mousedev *mousedev, unsigned int code, int value)
{
- int size;
+ int size, tmp;
+ enum { FRACTION_DENOM = 100 };

if (mousedev->touch) {
+ size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
+ if (size == 0) size = xres;
switch (code) {
case ABS_X:
- size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
- if (size == 0) size = xres;
fx(0) = value;
- if (mousedev->pkt_count >= 2)
- mousedev->packet.dx = ((fx(0) - fx(1)) / 2 + (fx(1) - fx(2)) / 2) * xres / (size * 2);
+ if (mousedev->pkt_count >= 2) {
+ tmp = ((value - fx(2)) * (250 * FRACTION_DENOM)) / size;
+ tmp += mousedev->frac_dx;
+ mousedev->packet.dx = tmp / FRACTION_DENOM;
+ mousedev->frac_dx = tmp - mousedev->packet.dx * FRACTION_DENOM;
+ }
break;

case ABS_Y:
- size = dev->absmax[ABS_Y] - dev->absmin[ABS_Y];
- if (size == 0) size = yres;
fy(0) = value;
- if (mousedev->pkt_count >= 2)
- mousedev->packet.dy = -((fy(0) - fy(1)) / 2 + (fy(1) - fy(2)) / 2) * yres / (size * 2);
+ if (mousedev->pkt_count >= 2) {
+ tmp = ((fy(2) - value) * (250 * FRACTION_DENOM)) / size;
+ tmp += mousedev->frac_dy;
+ mousedev->packet.dy = tmp / FRACTION_DENOM;
+ mousedev->frac_dy = tmp - mousedev->packet.dy * FRACTION_DENOM;
+ }
break;
}
}
@@ -268,6 +276,8 @@ static void mousedev_touchpad_touch(stru
clear_bit(0, &mousedev_mix.packet.buttons);
}
mousedev->touch = mousedev->pkt_count = 0;
+ mousedev->frac_dx = 0;
+ mousedev->frac_dy = 0;
}
else
if (!mousedev->touch)