Re: 答复: 答复: 答复: [PATCH] input: alps-fix the issue alps cs19 trackstick do not work.
From: "dmitry.torokhov@gmail.com" <dmitry.torokhov@gmail.com>
Date: 2019-06-11 17:45:12
Also in:
lkml
On Tue, Jun 11, 2019 at 07:38:56PM +0200, Pali Rohár wrote:
On Tuesday 11 June 2019 10:32:28 dmitry.torokhov@gmail.com wrote:quoted
On Tue, Jun 11, 2019 at 07:17:07PM +0200, Pali Rohár wrote:quoted
On Tuesday 11 June 2019 10:07:07 dmitry.torokhov@gmail.com wrote:quoted
On Tue, Jun 11, 2019 at 09:23:33AM +0200, Pali Rohár wrote:quoted
On Tuesday 11 June 2019 12:32:33 Hui Wang wrote:quoted
On 2019/6/11 上午11:23, Hui Wang wrote:quoted
On 2019/6/11 上午11:05, Xiaoxiao Liu wrote:quoted
Hi Pali, I discussed with our FW team about this problem. We think the V8 method means a touchpad feature and does not fit the CS19 trackpoint device. CS19 TrackPoint needn't use any Absolute (Raw) mode and is usually use standard mouse data. CS19 TrackPoint device is a completely different device with DualPoint device of Dell/HP. CS19 TrackPoint device is independent of Touchpad. (Touchpad is connecting by I2C, TrackPoint is directly connecting with PS2 port.) And it has completely another FW. So we think it is better to use the mouse mode for CS19 trackpoint.Maybe here is some mis-understanding, the mouse mode here doesn't mean we use psmouse-base.c for cs19 (bare ps/2 mouse), we plan to use trackpoint.c to drive this HW, so this trackpoint has all features a trackpoint should have.And I sent a patch one month ago to let the the trackpoint.c to drive this HW: https://www.spinics.net/lists/linux-input/msg61341.html, maybe that patch is reference.So instead of creating blacklist, you should check for TP_VARIANT_ALPS in alps.c and disallow its usage. Or maybe better, move trackpoint.c detect code before alsp.c detect code in psmouse-base. And no changes in alps.c are needed.I'd be very cautions of moving around the protocol detection. It is very fragile, so if we can detect trackpoint-only case in alps.c and skip on to trackpoint I would prefer it.The main problem is that proposed trackpoint-only check in alps.c is basically what trackpoint.c is doing for checking if device is trackpoint (via function trackpoint_start_protocol()). So I'm not sure now what is the best solution...Unfortunately currently trackpoint is being probed only after we tried Elan, Genius, and Logitech PS2++ protocols, and I am not sure if moving trackpoint around will disturb them or not. I do not think there is much code duplication by pulling limited version of trackpoint detection code into alps.c and then have it bail out when it sees trackpoint-only device so trackpoint.c can handle it properly.Ok. Seems that it is the best solution. The last question is, should be use ALPS or Trackpoint protocol? Because it looks like that device can be configured to one or other. What are pros and cons of these two protocols?
As far as I know the device implements trackpoint protocol, although not complete version. Several manufacturers started making trackponts once IBM/Lenovo patents on the original one expired (I think). The data stream is regular relative PS/2, bit it allows controlling device behavior a bit, such as press-to-select option and device sensitivity. IBM/Lenovo version has many more parameters. Thanks. -- Dmitry