Re: [PATCH v4] Input: Add driver for PixArt PS/2 touchpad

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Dmitry,

On Tue, Oct 1, 2024 at 7:50 PM Dmitry Torokhov
<dmitry.torokhov@xxxxxxxxx> wrote:
>
> On Tue, Oct 01, 2024 at 11:21:10AM +0200, Benjamin Tissoires wrote:
> > On Oct 01 2024, Dmitry Torokhov wrote:
> > > On Tue, Oct 01, 2024 at 01:53:44AM -0700, Dmitry Torokhov wrote:
> > > > On Mon, Sep 30, 2024 at 05:59:01PM +0200, Benjamin Tissoires wrote:
> > > > > Hi,
> > > > >
> > > > > On Jul 04 2024, Binbin Zhou wrote:
> > > > > > This patch introduces a driver for the PixArt PS/2 touchpad, which
> > > > > > supports both clickpad and touchpad types.
> > > > > >
> > > > > > At the same time, we extended the single data packet length to 16,
> > > > > > because according to the current PixArt hardware and FW design, we need
> > > > > > 11 bytes/15 bytes to represent the complete three-finger/four-finger data.
> > > > > >
> > > > > > Co-developed-by: Jon Xie <jon_xie@xxxxxxxxxx>
> > > > > > Signed-off-by: Jon Xie <jon_xie@xxxxxxxxxx>
> > > > > > Co-developed-by: Jay Lee <jay_lee@xxxxxxxxxx>
> > > > > > Signed-off-by: Jay Lee <jay_lee@xxxxxxxxxx>
> > > > > > Signed-off-by: Binbin Zhou <zhoubinbin@xxxxxxxxxxx>
> > > > >
> > > > > It looks like this new driver made in v6.12-rc1 but is already breaking
> > > > > other touchpads in fedora:
> > > > >
> > > > > https://bugzilla.redhat.com/show_bug.cgi?id=2314756
> > > > >
> > > > > The reported touchpads used to work properly but are now directed to use
> > > > > the PixArt PS2 driver instead of the old one (I would say it should be
> > > > > using Synaptics).
> > > > >
> > > > > I haven't touched PS/2 in a long time, so it's going to be hard to
> > > > > pinpoint the error from my side, but it seems that the new driver is a
> > > > > little bit too greedy.
> > > >
> > > > OK, I gonna revert it and hope PixArt folks will figure out less greedy
> > > > probing sequence (or maybe we need to push it down a few sports).
> > >
> > > Although, as I am trying to read the referenced bug, one of the
> > > reporters are saying that they touchpad is USB:
> > >
> > > SysFS ID: /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0
> > > ysFS BusID: 3-3:1.0
> > > Hardware Class: unknown
> > > Model: "Synaptics Unclassified device"
> > > Hotplug: USB
> > > Vendor: usb 0x06cb "Synaptics, Inc."
> >
> > I guess this must be the fingerprint reader or some other synaptics
> > device.
> >
> > In the 6.11 logs (now publicly available), we can see:
> > [    1.601507] psmouse serio1: trackpoint: Elan TrackPoint firmware: 0x92, buttons: 3/3
> > [    1.614026] input: TPPS/2 Elan TrackPoint as /devices/platform/i8042/serio1/input/input5
> > ...
> > [    2.286700] input: ELAN0672:00 04F3:3187 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-ELAN0672:00/0018:04F3:3187.0002/input/input7
> > [    2.286834] input: ELAN0672:00 04F3:3187 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-ELAN0672:00/0018:04F3:3187.0002/input/input9
> > [    2.286873] hid-generic 0018:04F3:3187.0002: input,hidraw1: I2C HID v1.00 Mouse [ELAN0672:00 04F3:3187] on i2c-ELAN0672:00
> > ...
> > [    2.337123] input: ELAN0672:00 04F3:3187 Mouse as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-ELAN0672:00/0018:04F3:3187.0002/input/input10
> > [    2.337173] input: ELAN0672:00 04F3:3187 Touchpad as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-ELAN0672:00/0018:04F3:3187.0002/input/input12
> > [    2.337212] hid-multitouch 0018:04F3:3187.0002: input,hidraw1: I2C HID v1.00 Mouse [ELAN0672:00 04F3:3187] on i2c-ELAN0672:00
> >
> >
> > So the touchpad seems to have the PS/2 fallback, and then switches to
> > i2c-HID. However, with PixArt the PS/2 touchpad isn't initialized, and
> > doesn't answered to i2c-hid (or is too much initialized, not sure).
>
> I see. It is interesting that the first probe fails:
>
> [    1.649119] psmouse serio1: pixart_ps2: init: Unable to query PixArt touchpad hardware.
>
>
> but then it goes and detects it a bit later:
>
> [    1.945075] input: PS/2 PixArt clickpad as /devices/platform/i8042/serio1/input/input5
>
> It would be curious to get the logs of the failing case with
> i8042.debug=1
>
> Anyway, I reverted the patch adding the driver and will send a pull
> request to Linus soon.
Don't revert now, I found the root cause:
In pixart_read_tp_type(), we can see

+       error = ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO);
+       if (error)
+               return error;
+
+       *type = param[0] == 0x0e ? PIXART_TYPE_TOUCHPAD : PIXART_TYPE_CLICKPAD;
+
+       return 0;

This means, a non-pixart device will also be detected as "pixart
clickpad" and return 0,  unless the ps2 doesn't work at all.

And then in pixart_detect(), we can see

+       if (set_properties) {
+               psmouse->vendor = "PixArt";
+               psmouse->name = (type == PIXART_TYPE_TOUCHPAD) ?
+                               "touchpad" : "clickpad";
+       }

This will confuse the later logic.

Huacai

>
> Thanks.
>
> --
> Dmitry





[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux