Re: [PATCH] HID: alps: fix stick device not working after resume

From: Kai Heng Feng
Date: Mon Sep 19 2016 - 11:58:00 EST


On Mon, Sep 19, 2016 at 8:37 PM, Jiri Kosina <jikos@xxxxxxxxxx> wrote:
> On Mon, 19 Sep 2016, Kai-Heng Feng wrote:
>
>> The stick device does not work after resume, add U1_SP_ABS_MODE flag can
>> make the device work after resume.
>
> Do you happen to have any more details on why it doesn't work without
> U1_SP_ABS_MODE? Or was this a pure guesswork?

It' pure guesswork, based on how the existing code uses U1_TP_ABS_MODE flag
on both initialization and resume.

I also tested the the patch on an ALPS touchpad without stick device,
did not notice
any side effect on suspend/resume, so I made the U1_SP_ABS_MODE flag mandatory.

>
>>
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx>
>> ---
>> drivers/hid/hid-alps.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/hid/hid-alps.c b/drivers/hid/hid-alps.c
>> index 048befd..390f8d3 100644
>> --- a/drivers/hid/hid-alps.c
>> +++ b/drivers/hid/hid-alps.c
>> @@ -244,13 +244,13 @@ static int alps_raw_event(struct hid_device *hdev,
>> static int alps_post_reset(struct hid_device *hdev)
>> {
>> return u1_read_write_register(hdev, ADDRESS_U1_DEV_CTRL_1,
>> - NULL, U1_TP_ABS_MODE, false);
>> + NULL, U1_TP_ABS_MODE | U1_SP_ABS_MODE, false);
>> }
>>
>> static int alps_post_resume(struct hid_device *hdev)
>> {
>> return u1_read_write_register(hdev, ADDRESS_U1_DEV_CTRL_1,
>> - NULL, U1_TP_ABS_MODE, false);
>> + NULL, U1_TP_ABS_MODE | U1_SP_ABS_MODE, false);
>> }
>> #endif /* CONFIG_PM */
>
> --
> Jiri Kosina
> SUSE Labs
>