Re: Synaptics and TrackPoint problems in 2.6.12

Dmitry Torokhov
2005-07-20T15:06:46Z

On 7/20/05, Sergey Vlasov <vsu@altlinux.ru> wrote:
> On Tue, 19 Jul 2005 23:40:18 -0400 Stephen Evanchik wrote:
>
> > I have been receiving a lot of complaints that TrackPoints on
> > Synaptics pass-thru ports stopped working with 2.6.12. I retested
> > 2.6.9 and 2.6.11-rc3 successfully, I believe 2.6.11.7 may also work
> > but that is unconfirmed at this point.
> >
> > The behavior is always the same .. after sending the read secondary ID
> > command, the TrackPoint seems to be disabled from that point forward.
> >
> > Any ideas?
>
> Looks like this problem was introduced by the change from PSMOUSE_PS2 to
> PSMOUSE_TRACKPOINT in the TrackPoint support patch. The Synaptics
> driver needs to know whether the device on the pass-thru port is using
> 3-byte or 4-byte packets; however, instead of checking child->pktsize,
> it checks child->type >= PSMOUSE_GENPS - and this check is now giving a
> wrong result. Therefore the Synaptics driver configures the pass-thru
> port for 4-byte packets, and all 3-byte packets from TrackPoint seem to
> be thrown away.

Oh, yes, that would do it.

> The patch below is reported to fix the problem - now the 4-byte mode is
> used only if child->pktsize == 4.

That is the correct fix.

> Another option is to change the
> PSMOUSE_TRACKPOINT value so that it is less than PSMOUSE_GENPS,

No, protocol numbers should not be changed as userspace drivers/setups
check them and rely on them being stable. That's why psmouse->pktsize
was introduced to begin with. Unfortunately synaptics pass-through
piece was missed and not adjusted.

I will add the patch to my tree, thanks!

> In theory, someone could attach a device which uses 6-byte packets to
> the Synaptics pass-thru port; I'm not sure what would happen in this
> case, but with Synaptics confugured for 3-byte packets (as the patch
> below will do) this configuration even has a chance of working.

I don't think it can support more than 4 byte packets. bytes 0 and 3
are protocol markers and can't be readily used for transmitting other
protocols data.

--
Dmitry