Re: [PATCH 1/3] input: alps: Reset mouse before identifying it

From: Dmitry Torokhov
Date: Wed Oct 15 2014 - 13:43:40 EST


On Wed, Oct 15, 2014 at 02:53:11PM +0200, Pali Rohár wrote:
> 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).

I think this is a step in right direction. Do you know what exactly
fails in alps_identify() on your box if you do not call psmouse_reset?

Thanks.

--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/