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

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

 



On Tue, Oct 01, 2024 at 08:16:07PM +0800, Huacai Chen wrote:
> 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:

OK, so please make a fix and resubmit the whole thing for the next merge
window. I think it needs to cook a little bit more and get more testing
before it can be merged in mainline, given how fragile PS/2 detection
is.

> 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