Re: [PATCH 1/2] input/serio/i8042: Skip selftest on i8042 controller in some ASUS laptops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 26, 2016 at 6:13 PM, Marcos Souza
<marcos.souza.org@xxxxxxxxx> wrote:
> Hi Dmitry,
>
> On Mon, Jul 25, 2016 at 3:48 PM, Marcos Souza
> <marcos.souza.org@xxxxxxxxx> wrote:
>> Hi Dmitry,
>>
>> On Mon, Jul 25, 2016 at 3:22 PM Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
>> wrote:
>>>
>>> [ resending to all - mutt is for some reason confused about recipent
>>> list ]
>>> On Mon, Jul 25, 2016 at 02:20:16PM -0300, Marcos Paulo de Souza wrote:
>>> > On suspend/resume cycle, selftest is executed on to reset i8042
>>> > controller. But
>>> > when this is done in these devices, posterior calls to detect/init
>>> > functions
>>> > to elantech driver fails. Skipping selftest fixes this problem.
>>> >
>>> > An easier step to reproduce this problem is adding i8042.reset=1 as a
>>> > kernel
>>> > parameter. On problematic laptops, it'll make the system to start with
>>> > the
>>> > touchpad already stucked, since psmouse_probe forcibly calls the
>>> > selftest function.
>>> >
>>> > This patch was inspired by John Hiesey's change[1].
>>> >
>>> > [1]: https://marc.info/?l=linux-input&m=144312209020616&w=2
>>> >
>>> > Fixes: "ETPS/2 Elantech Touchpad dies after resume from suspend"
>>> > (https://bugzilla.kernel.org/show_bug.cgi?id=7739)
>>>
>>> *sigh* You just cant win, they'll manage to mess up the firmware one way
>>> or another :( Witness:
>>
>>
>> They're experts on messing things up :(
>>
>>>
>>>
>>> "
>>> commit 1ca56e513a9fd356d5a9e0de45dbe0e189e00386
>>> Author: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
>>> Date:   Tue Jul 20 20:25:34 2010 -0700
>>>
>>>     Input: i8042 - reset keyboard controller wehen resuming from S2R
>>>
>>>     Some laptops, such as Lenovo 3000 N100, require keyboard controller
>>> reset
>>>     in order to have touchpad operable after suspend to RAM. Even if box
>>> does
>>>     not need the reset it should be safe to do so, so instead of chasing
>>>     after misbehaving boxes and grow DMI tables, let's reset the
>>> controller
>>>     unconditionally.
>>>
>>>     Reported-and-tested-by: Jerome Lacoste <jerome.lacoste@xxxxxxxxx>
>>>     Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx>
>>> "
>>>
>>> so apparently it is not safe to reset the controller on resume. Oh joy.
>>>
>>> The issue I have here is selftest is the same as reset, and we already
>>> have i8042_reset flag, so 2 flags controlling the same functionality is
>>> not great. Could we extend i8042 to an enum, like:
>>>
>>> I8042_RESET_ALWAYS
>>> I8042_RESET_NEVER
>>> I8042_RESET_ON_RESUME (default)
>>>
>>> and have a custom module parameter for it?
>>>
>>> i8042.reset and i8042_reset={1|Y|y} would result in I8042_RESET_ALWAYS
>>> i8042.reset={0|N|n} would result in I8042_RESET_NEVER
>>> Without i8042.reset we just reset it when resuming from S3.
>>>
>>> What do you think?
>>
>>
>> Seems to be a very good approach. I'll send a new version.
>
> You asked me to adapt my previous patch, making it accept:
>
> i8042.reset
> i8042.reset={1,y,Y}
> i8042.reset={0,n,N}
>
> But, when using a charp as module parameter, it doesn't allocate
> memory to i8042_reset when we don't use the equal sign. So, in this
> case I can't tell if the user is using i8042.reset, or don't any
> parameter (in this case it means to use I8042_RESET_ON_RESUME)
>
> So, in this case, should we just change i8042.reset to accept 1,y,n?
> This should solve the problem too (although I think people who already
> use such parameter will complain...)
>
> What do you think?

I think you will have to provide custom parameter parsing method.
psmouse module has one, so you can use it as an example.

Thanks.

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



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux