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