On Tuesday 14 October 2014 08:08:34 Dmitry Torokhov wrote: > On Fri, Oct 03, 2014 at 11:47:59AM +0200, Hans de Goede wrote: > > Hi, > > > > Thanks for working on this! > > > > On 10/03/2014 11:43 AM, Pali Rohár wrote: > > > On some systems after starting computer function > > > alps_identify() does not detect dual ALPS > > > touchpad+trackstick device correctly and detect only > > > touchpad. > > > > > > Resetting ALPS device before identifiying it fixing this > > > problem and both parts touchpad and trackstick are > > > detected. > > > > > > Signed-off-by: Pali Rohár <pali.rohar@xxxxxxxxx> > > > Tested-by: Pali Rohár <pali.rohar@xxxxxxxxx> > > > > Looks good and seems sensible: > > > > Acked-by: Hans de Goede <hdegoede@xxxxxxxxxx> > > *sigh* I am not really happy about this, as we making boot > longer and longer for people without ALPS touchpads. It would > be better if we only reset the mouse when we knew we are > dealing with ALPS, and even better if we only reset it when > we suspected that we missed trackstick. Any chance of doing > this? > > Thanks. Dmitry, problem is that function check which detecting trackstick does not working when I start my laptop from power-off state and do not reset PS/2 device. But detecting ALPS touchpad looks like working. So if do not like this idea, what about doing something like this in alps_dectect function? int alps_detect(...) { ... /* detect if device is ALPS */ if (alps_identify(...) < 0) return -1; /* now we know that device is ALPS */ if (!(flags & ALPS_DUALPOINT)) { /* reset it and identify again, maybe there is trackstick */ psmouse_reset(...); alps_identify(...); } ... } It will does not affect non ALPS devices (because first identify call will fail), but will affect ALPS devices without trackstick (because identify will be called twice and reset too). -- Pali Rohár pali.rohar@xxxxxxxxx
Attachment:
signature.asc
Description: This is a digitally signed message part.