Thread (8 messages) flat view 8 messages, 3 authors, 2015-08-13

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help