Re: ALPS v7 trackpad passthrough to Thinkpad trackpoint
From: Ari Entlich <hidden>
Date: 2015-08-07 16:35:35
On Fri, Aug 7, 2015 at 10:12 AM, Pali Rohár [off-list ref] wrote:
For some old ALPS devices which use V1 and V2 protocols (with flag ALPS_PASS) there is something like that. On that devices touchpad is behind trackpoint HW. But you cannot wait for data or poll for both devices at same time -- you need to choose if tou want to talk directly to touchpad (via passthrough mode) or just to trackpoint. I think because of this limitation ALPS driver implement all logic in one driver... Above was for old ALPS devices. New ALPS devices with V3 or V5 protocols have trackpoint behind touchpad, so normally OS communicate with touchpad (and not with trackstick like before). But here touchpad sends data for both touchpad and trackstick events and so OS does not have normal access to "hidden" trackstick. There is a way "jump" into passthrough mode and talk directly to trackpoint. But it is used only for configuring trackstick and currently it is used to configure trackstick so it send data (via touchpad) in format which is supported by our ALPS driver. On the other hand, synaptics driver and devices support full "encapsulation" or how can I call it of serio PS/2 device and in this case you can use full set of PS/2 commands directly with trackstick (behind synaptics touchpad). ALPS devices do not support something like that.
It looks to me like the Synaptics passthrough is implemented primarily via the ability to write directly to the trackpoint. Events coming from the trackpoint are implemented similarly to the ALPS driver - by redirecting trackpoint events to the second device which the driver creates for the trackpoint.
Note I just wrote information which I understand from driver source code and with "playing" with touchpads. There can be some mistakes (so somebody can correct me), but this is how I understand this situation. I do not have access and I have never seen any "official" documentation. I can say, that current ALPS driver in kernel does not support it for 100% sure. But maybe we just missing some information which allows us to do it. But in my opinion ALPS firmware which is running in ALPS touchpad does not support something like full passthrough to trackpoint device like synaptics. For me it does not make sense to add such function into firmware, because it already send all needed data for OS to allow processing both touchpad and trackpoint data.
The issue isn't so much getting information from the trackpoint but sending information TO it. The trackpoint driver is able to send special commands to the trackpoint to modify its behavior. As far as I can tell, this is pretty much the only thing it does. See drivers/input/mouse/trackpoint.c for details.
Questions are: Do we need full access to trackpoint hardware? Do we know if trackpoint (used by ALPS input solutions) supports configuring speed or acceleration in hardware? It is really not easier to do it in software?
As I mentioned in my first email, I'm aware that mouse behavior can be modified in userspace. However, that's not what I'm asking about. I want to have the same capabilities with this device as I had with the old one, if at all possible. And anyways, there are some things that the trackpoint driver can do that cannot be done in software. Ari
-- Pali Rohár pali.rohar@gmail.com
-- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html