diff mbox

platform/x86: intel-hid: Power button suspend on Dell Latitude 7275

Message ID 20170917225712.12136-1-jerome.debretagne@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Jérôme de Bretagne Sept. 17, 2017, 10:57 p.m. UTC
From: Jérôme de Bretagne <jerome.debretagne@gmail.com>

On Dell Latitude 7275 the 5-button array is not exposed in the
ACPI tables, but still notifies are sent to the Intel HID device
object (device ID INT33D5) in response to power button actions.
They were ignored as the intel-hid driver was not prepared to
take care of them until recently.

Power button wakeup from suspend-to-idle was added in:
635173a17b03 ("intel-hid: Wake up Dell Latitude 7275 from
suspend-to-idle"). However power button suspend doesn't work
yet on this platform so it would be good to add it also.

On the affected platform (for which priv->array is NULL), add
a new upfront check against the power button press notification
(0xCE) to notify_handler(), outside the wakeup mode this time,
which allows to report the power button press event and
trigger the suspend. Also catch and ignore the corresponding
power button release notification (0xCF) to stop it from being
reported as an "unknown event" in the logs.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=196115
Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
---
 drivers/platform/x86/intel-hid.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

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

Comments

Limonciello, Mario Sept. 18, 2017, 9:29 p.m. UTC | #1
PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKw6lyw7RtZSBkZSBCcmV0YWdu
ZSBbbWFpbHRvOmplcm9tZS5kZWJyZXRhZ25lQGdtYWlsLmNvbV0NCj4gU2VudDogU3VuZGF5LCBT
ZXB0ZW1iZXIgMTcsIDIwMTcgNTo1NyBQTQ0KPiBUbzogcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2Vy
Lmtlcm5lbC5vcmcNCj4gQ2M6IERhcnJlbiBIYXJ0IDxkdmhhcnRAaW5mcmFkZWFkLm9yZz47IExL
TUwgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+Ow0KPiBMaW51eCBBQ1BJIDxsaW51eC1h
Y3BpQHZnZXIua2VybmVsLm9yZz47IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5l
dD47DQo+IEFuZHkgU2hldmNoZW5rbyA8YW5keS5zaGV2Y2hlbmtvQGdtYWlsLmNvbT47IExpbW9u
Y2llbGxvLCBNYXJpbw0KPiA8TWFyaW9fTGltb25jaWVsbG9ARGVsbC5jb20+OyBBbGV4IEh1bmcg
PGFsZXguaHVuZ0BjYW5vbmljYWwuY29tPg0KPiBTdWJqZWN0OiBbUEFUQ0hdIHBsYXRmb3JtL3g4
NjogaW50ZWwtaGlkOiBQb3dlciBidXR0b24gc3VzcGVuZCBvbiBEZWxsIExhdGl0dWRlDQo+IDcy
NzUNCj4gDQo+IEZyb206IErDqXLDtG1lIGRlIEJyZXRhZ25lIDxqZXJvbWUuZGVicmV0YWduZUBn
bWFpbC5jb20+DQo+IA0KPiBPbiBEZWxsIExhdGl0dWRlIDcyNzUgdGhlIDUtYnV0dG9uIGFycmF5
IGlzIG5vdCBleHBvc2VkIGluIHRoZQ0KPiBBQ1BJIHRhYmxlcywgYnV0IHN0aWxsIG5vdGlmaWVz
IGFyZSBzZW50IHRvIHRoZSBJbnRlbCBISUQgZGV2aWNlDQo+IG9iamVjdCAoZGV2aWNlIElEIElO
VDMzRDUpIGluIHJlc3BvbnNlIHRvIHBvd2VyIGJ1dHRvbiBhY3Rpb25zLg0KPiBUaGV5IHdlcmUg
aWdub3JlZCBhcyB0aGUgaW50ZWwtaGlkIGRyaXZlciB3YXMgbm90IHByZXBhcmVkIHRvDQo+IHRh
a2UgY2FyZSBvZiB0aGVtIHVudGlsIHJlY2VudGx5Lg0KPiANCj4gUG93ZXIgYnV0dG9uIHdha2V1
cCBmcm9tIHN1c3BlbmQtdG8taWRsZSB3YXMgYWRkZWQgaW46DQo+IDYzNTE3M2ExN2IwMyAoImlu
dGVsLWhpZDogV2FrZSB1cCBEZWxsIExhdGl0dWRlIDcyNzUgZnJvbQ0KPiBzdXNwZW5kLXRvLWlk
bGUiKS4gSG93ZXZlciBwb3dlciBidXR0b24gc3VzcGVuZCBkb2Vzbid0IHdvcmsNCj4geWV0IG9u
IHRoaXMgcGxhdGZvcm0gc28gaXQgd291bGQgYmUgZ29vZCB0byBhZGQgaXQgYWxzby4NCj4gDQo+
IE9uIHRoZSBhZmZlY3RlZCBwbGF0Zm9ybSAoZm9yIHdoaWNoIHByaXYtPmFycmF5IGlzIE5VTEwp
LCBhZGQNCj4gYSBuZXcgdXBmcm9udCBjaGVjayBhZ2FpbnN0IHRoZSBwb3dlciBidXR0b24gcHJl
c3Mgbm90aWZpY2F0aW9uDQo+ICgweENFKSB0byBub3RpZnlfaGFuZGxlcigpLCBvdXRzaWRlIHRo
ZSB3YWtldXAgbW9kZSB0aGlzIHRpbWUsDQo+IHdoaWNoIGFsbG93cyB0byByZXBvcnQgdGhlIHBv
d2VyIGJ1dHRvbiBwcmVzcyBldmVudCBhbmQNCj4gdHJpZ2dlciB0aGUgc3VzcGVuZC4gQWxzbyBj
YXRjaCBhbmQgaWdub3JlIHRoZSBjb3JyZXNwb25kaW5nDQo+IHBvd2VyIGJ1dHRvbiByZWxlYXNl
IG5vdGlmaWNhdGlvbiAoMHhDRikgdG8gc3RvcCBpdCBmcm9tIGJlaW5nDQo+IHJlcG9ydGVkIGFz
IGFuICJ1bmtub3duIGV2ZW50IiBpbiB0aGUgbG9ncy4NCj4gDQo+IExpbms6IGh0dHBzOi8vYnVn
emlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MTE1DQo+IFRlc3RlZC1ieTogSsOp
csO0bWUgZGUgQnJldGFnbmUgPGplcm9tZS5kZWJyZXRhZ25lQGdtYWlsLmNvbT4NCj4gU2lnbmVk
LW9mZi1ieTogSsOpcsO0bWUgZGUgQnJldGFnbmUgPGplcm9tZS5kZWJyZXRhZ25lQGdtYWlsLmNv
bT4NCj4gLS0tDQo+ICBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC1oaWQuYyB8IDE2ICsrKysr
KysrKysrKysrKysNCj4gIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspDQo+IA0KPiBk
aWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwtaGlkLmMgYi9kcml2ZXJzL3Bs
YXRmb3JtL3g4Ni9pbnRlbC1oaWQuYw0KPiBpbmRleCBhNzgyYzc4ZTdjNjMuLmIxOWY4ZGNmOWQ4
YyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwtaGlkLmMNCj4gKysr
IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwtaGlkLmMNCj4gQEAgLTIyNiw2ICsyMjYsMjIg
QEAgc3RhdGljIHZvaWQgbm90aWZ5X2hhbmRsZXIoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZl
bnQsDQo+IHZvaWQgKmNvbnRleHQpDQo+ICAJCXJldHVybjsNCj4gIAl9DQo+IA0KPiArCS8qDQo+
ICsJICogTmVlZGVkIGZvciBzdXNwZW5kIHRvIHdvcmsgb24gc29tZSBwbGF0Zm9ybXMgdGhhdCBk
b24ndCBleHBvc2UNCj4gKwkgKiB0aGUgNS1idXR0b24gYXJyYXksIGJ1dCBzdGlsbCBzZW5kIG5v
dGlmaWVzIHdpdGggcG93ZXIgYnV0dG9uDQo+ICsJICogZXZlbnQgY29kZSB0byB0aGlzIGRldmlj
ZSBvYmplY3Qgb24gcG93ZXIgYnV0dG9uIGFjdGlvbnMuDQo+ICsJICoNCj4gKwkgKiBSZXBvcnQg
dGhlIHBvd2VyIGJ1dHRvbiBwcmVzczsgY2F0Y2ggYW5kIGlnbm9yZSB0aGUgYnV0dG9uIHJlbGVh
c2UuDQo+ICsJICovDQo+ICsJaWYgKCFwcml2LT5hcnJheSkgew0KPiArCQlpZiAoZXZlbnQgPT0g
MHhjZSkgew0KPiArCQkJaW5wdXRfcmVwb3J0X2tleShwcml2LT5pbnB1dF9kZXYsIEtFWV9QT1dF
UiwgMSk7DQo+ICsJCQlpbnB1dF9zeW5jKHByaXYtPmlucHV0X2Rldik7DQo+ICsJCQlyZXR1cm47
DQo+ICsJCX0gZWxzZSBpZiAoZXZlbnQgPT0gMHhjZikNCj4gKwkJCXJldHVybjsNCj4gKwl9DQo+
ICsNCj4gIAkvKiAweEMwIGlzIGZvciBISUQgZXZlbnRzLCBvdGhlciB2YWx1ZXMgYXJlIGZvciA1
IGJ1dHRvbiBhcnJheSAqLw0KPiAgCWlmIChldmVudCAhPSAweGMwKSB7DQo+ICAJCWlmICghcHJp
di0+YXJyYXkgfHwNCg0KTEdUTSwgaXQncyBpbXByb3ZlZCBmcm9tIHdoYXQgeW91IHBvc3RlZCB0
byB0aGF0IGJ1ZyBhbHJlYWR5Lg0KDQpBY2tlZC1CeTogTWFyaW8gTGltb25jaWVsbG8gPG1hcmlv
LmxpbW9uY2llbGxvQGRlbGwuY29tPg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jérôme de Bretagne Sept. 18, 2017, 10:40 p.m. UTC | #2
2017-09-18 23:29 GMT+02:00  <Mario.Limonciello@dell.com>:
>> -----Original Message-----
>> From: Jérôme de Bretagne [mailto:jerome.debretagne@gmail.com]
>> Sent: Sunday, September 17, 2017 5:57 PM
>> To: platform-driver-x86@vger.kernel.org
>> Cc: Darren Hart <dvhart@infradead.org>; LKML <linux-kernel@vger.kernel.org>;
>> Linux ACPI <linux-acpi@vger.kernel.org>; Rafael J. Wysocki <rjw@rjwysocki.net>;
>> Andy Shevchenko <andy.shevchenko@gmail.com>; Limonciello, Mario
>> <Mario_Limonciello@Dell.com>; Alex Hung <alex.hung@canonical.com>
>> Subject: [PATCH] platform/x86: intel-hid: Power button suspend on Dell Latitude
>> 7275
>>
>> From: Jérôme de Bretagne <jerome.debretagne@gmail.com>
>>
>> On Dell Latitude 7275 the 5-button array is not exposed in the
>> ACPI tables, but still notifies are sent to the Intel HID device
>> object (device ID INT33D5) in response to power button actions.
>> They were ignored as the intel-hid driver was not prepared to
>> take care of them until recently.
>>
>> Power button wakeup from suspend-to-idle was added in:
>> 635173a17b03 ("intel-hid: Wake up Dell Latitude 7275 from
>> suspend-to-idle"). However power button suspend doesn't work
>> yet on this platform so it would be good to add it also.
>>
>> On the affected platform (for which priv->array is NULL), add
>> a new upfront check against the power button press notification
>> (0xCE) to notify_handler(), outside the wakeup mode this time,
>> which allows to report the power button press event and
>> trigger the suspend. Also catch and ignore the corresponding
>> power button release notification (0xCF) to stop it from being
>> reported as an "unknown event" in the logs.
>>
>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196115
>> Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
>> Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
>> ---
>>  drivers/platform/x86/intel-hid.c | 16 ++++++++++++++++
>>  1 file changed, 16 insertions(+)
>>
>> diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c
>> index a782c78e7c63..b19f8dcf9d8c 100644
>> --- a/drivers/platform/x86/intel-hid.c
>> +++ b/drivers/platform/x86/intel-hid.c
>> @@ -226,6 +226,22 @@ static void notify_handler(acpi_handle handle, u32 event,
>> void *context)
>>               return;
>>       }
>>
>> +     /*
>> +      * Needed for suspend to work on some platforms that don't expose
>> +      * the 5-button array, but still send notifies with power button
>> +      * event code to this device object on power button actions.
>> +      *
>> +      * Report the power button press; catch and ignore the button release.
>> +      */
>> +     if (!priv->array) {
>> +             if (event == 0xce) {
>> +                     input_report_key(priv->input_dev, KEY_POWER, 1);
>> +                     input_sync(priv->input_dev);
>> +                     return;
>> +             } else if (event == 0xcf)
>> +                     return;
>> +     }
>> +
>>       /* 0xC0 is for HID events, other values are for 5 button array */
>>       if (event != 0xc0) {
>>               if (!priv->array ||
>
> LGTM, it's improved from what you posted to that bug already.
>
> Acked-By: Mario Limonciello <mario.limonciello@dell.com>

Thanks Mario.

In fact, I updated my initial fix proposal on the 12th in [1] and
this patch matches exactly the updated version. You didn't receive
the update notification from Bugzilla?

[1] https://bugzilla.kernel.org/show_bug.cgi?id=196115#c12
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Limonciello, Mario Sept. 20, 2017, 8:07 p.m. UTC | #3
> -----Original Message-----

> From: Jérôme de Bretagne [mailto:jerome.debretagne@gmail.com]

> Sent: Monday, September 18, 2017 5:41 PM

> To: Limonciello, Mario <Mario_Limonciello@Dell.com>

> Cc: platform-driver-x86@vger.kernel.org; Darren Hart <dvhart@infradead.org>;

> LKML <linux-kernel@vger.kernel.org>; ACPI Devel Maling List <linux-

> acpi@vger.kernel.org>; Rafael J. Wysocki <rjw@rjwysocki.net>; Andy Shevchenko

> <andy.shevchenko@gmail.com>; Alex Hung <alex.hung@canonical.com>

> Subject: Re: [PATCH] platform/x86: intel-hid: Power button suspend on Dell

> Latitude 7275

> 

> 2017-09-18 23:29 GMT+02:00  <Mario.Limonciello@dell.com>:

> >> -----Original Message-----

> >> From: Jérôme de Bretagne [mailto:jerome.debretagne@gmail.com]

> >> Sent: Sunday, September 17, 2017 5:57 PM

> >> To: platform-driver-x86@vger.kernel.org

> >> Cc: Darren Hart <dvhart@infradead.org>; LKML <linux-kernel@vger.kernel.org>;

> >> Linux ACPI <linux-acpi@vger.kernel.org>; Rafael J. Wysocki

> <rjw@rjwysocki.net>;

> >> Andy Shevchenko <andy.shevchenko@gmail.com>; Limonciello, Mario

> >> <Mario_Limonciello@Dell.com>; Alex Hung <alex.hung@canonical.com>

> >> Subject: [PATCH] platform/x86: intel-hid: Power button suspend on Dell Latitude

> >> 7275

> >>

> >> From: Jérôme de Bretagne <jerome.debretagne@gmail.com>

> >>

> >> On Dell Latitude 7275 the 5-button array is not exposed in the

> >> ACPI tables, but still notifies are sent to the Intel HID device

> >> object (device ID INT33D5) in response to power button actions.

> >> They were ignored as the intel-hid driver was not prepared to

> >> take care of them until recently.

> >>

> >> Power button wakeup from suspend-to-idle was added in:

> >> 635173a17b03 ("intel-hid: Wake up Dell Latitude 7275 from

> >> suspend-to-idle"). However power button suspend doesn't work

> >> yet on this platform so it would be good to add it also.

> >>

> >> On the affected platform (for which priv->array is NULL), add

> >> a new upfront check against the power button press notification

> >> (0xCE) to notify_handler(), outside the wakeup mode this time,

> >> which allows to report the power button press event and

> >> trigger the suspend. Also catch and ignore the corresponding

> >> power button release notification (0xCF) to stop it from being

> >> reported as an "unknown event" in the logs.

> >>

> >> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196115

> >> Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>

> >> Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>

> >> ---

> >>  drivers/platform/x86/intel-hid.c | 16 ++++++++++++++++

> >>  1 file changed, 16 insertions(+)

> >>

> >> diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c

> >> index a782c78e7c63..b19f8dcf9d8c 100644

> >> --- a/drivers/platform/x86/intel-hid.c

> >> +++ b/drivers/platform/x86/intel-hid.c

> >> @@ -226,6 +226,22 @@ static void notify_handler(acpi_handle handle, u32

> event,

> >> void *context)

> >>               return;

> >>       }

> >>

> >> +     /*

> >> +      * Needed for suspend to work on some platforms that don't expose

> >> +      * the 5-button array, but still send notifies with power button

> >> +      * event code to this device object on power button actions.

> >> +      *

> >> +      * Report the power button press; catch and ignore the button release.

> >> +      */

> >> +     if (!priv->array) {

> >> +             if (event == 0xce) {

> >> +                     input_report_key(priv->input_dev, KEY_POWER, 1);

> >> +                     input_sync(priv->input_dev);

> >> +                     return;

> >> +             } else if (event == 0xcf)

> >> +                     return;

> >> +     }

> >> +

> >>       /* 0xC0 is for HID events, other values are for 5 button array */

> >>       if (event != 0xc0) {

> >>               if (!priv->array ||

> >

> > LGTM, it's improved from what you posted to that bug already.

> >

> > Acked-By: Mario Limonciello <mario.limonciello@dell.com>

> 

> Thanks Mario.

> 

> In fact, I updated my initial fix proposal on the 12th in [1] and

> this patch matches exactly the updated version. You didn't receive

> the update notification from Bugzilla?

> 

> [1] https://bugzilla.kernel.org/show_bug.cgi?id=196115#c12


No I didn't get one (or some enterprise spam filter helpfully avoided
letting it into my inbox).
Darren Hart Sept. 22, 2017, 11:45 p.m. UTC | #4
On Mon, Sep 18, 2017 at 12:57:12AM +0200, Jérôme de Bretagne wrote:
> From: Jérôme de Bretagne <jerome.debretagne@gmail.com>
> 
> On Dell Latitude 7275 the 5-button array is not exposed in the
> ACPI tables, but still notifies are sent to the Intel HID device
> object (device ID INT33D5) in response to power button actions.
> They were ignored as the intel-hid driver was not prepared to
> take care of them until recently.
> 
> Power button wakeup from suspend-to-idle was added in:
> 635173a17b03 ("intel-hid: Wake up Dell Latitude 7275 from
> suspend-to-idle"). However power button suspend doesn't work
> yet on this platform so it would be good to add it also.
> 
> On the affected platform (for which priv->array is NULL), add
> a new upfront check against the power button press notification
> (0xCE) to notify_handler(), outside the wakeup mode this time,
> which allows to report the power button press event and
> trigger the suspend. Also catch and ignore the corresponding
> power button release notification (0xCF) to stop it from being
> reported as an "unknown event" in the logs.
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=196115
> Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
> Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
> ---
>  drivers/platform/x86/intel-hid.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c
> index a782c78e7c63..b19f8dcf9d8c 100644
> --- a/drivers/platform/x86/intel-hid.c
> +++ b/drivers/platform/x86/intel-hid.c
> @@ -226,6 +226,22 @@ static void notify_handler(acpi_handle handle, u32 event, void *context)
>  		return;
>  	}
>  
> +	/*
> +	 * Needed for suspend to work on some platforms that don't expose
> +	 * the 5-button array, but still send notifies with power button
> +	 * event code to this device object on power button actions.
> +	 *
> +	 * Report the power button press; catch and ignore the button release.
> +	 */
> +	if (!priv->array) {
> +		if (event == 0xce) {
> +			input_report_key(priv->input_dev, KEY_POWER, 1);
> +			input_sync(priv->input_dev);
> +			return;
> +		} else if (event == 0xcf)
> +			return;

Minor CodingStyle nit. If the if block uses parens, so does the else block. In
this case, since the if returns, just skip the else entirely.

See Documentation/process/coding-style.rst
The example immediatley *before* 3.1) Spaces.

I've made this change and queued for testing.

> +	}
> +
>  	/* 0xC0 is for HID events, other values are for 5 button array */
>  	if (event != 0xc0) {
>  		if (!priv->array ||
>
Andy Shevchenko Sept. 25, 2017, 10:57 a.m. UTC | #5
On Sat, Sep 23, 2017 at 2:45 AM, Darren Hart <dvhart@infradead.org> wrote:
> On Mon, Sep 18, 2017 at 12:57:12AM +0200, Jérôme de Bretagne wrote:

>> +             if (event == 0xce) {
>> +                     input_report_key(priv->input_dev, KEY_POWER, 1);
>> +                     input_sync(priv->input_dev);
>> +                     return;
>> +             } else if (event == 0xcf)
>> +                     return;
>
> Minor CodingStyle nit. If the if block uses parens, so does the else block. In
> this case, since the if returns, just skip the else entirely.
>
> See Documentation/process/coding-style.rst
> The example immediatley *before* 3.1) Spaces.
>
> I've made this change and queued for testing.
>
>> +     }

Actually in this case even 'else' is redundant.
Darren Hart Sept. 27, 2017, 7:31 a.m. UTC | #6
On Mon, Sep 25, 2017 at 01:57:48PM +0300, Andy Shevchenko wrote:
> On Sat, Sep 23, 2017 at 2:45 AM, Darren Hart <dvhart@infradead.org> wrote:
> > On Mon, Sep 18, 2017 at 12:57:12AM +0200, Jérôme de Bretagne wrote:
> 
> >> +             if (event == 0xce) {
> >> +                     input_report_key(priv->input_dev, KEY_POWER, 1);
> >> +                     input_sync(priv->input_dev);
> >> +                     return;
> >> +             } else if (event == 0xcf)
> >> +                     return;
> >
> > Minor CodingStyle nit. If the if block uses parens, so does the else block. In
> > this case, since the if returns, just skip the else entirely.
> >
> > See Documentation/process/coding-style.rst
> > The example immediatley *before* 3.1) Spaces.
> >
> > I've made this change and queued for testing.
> >
> >> +     }
> 
> Actually in this case even 'else' is redundant.

Yes, this is what I meant above by "skip the else entirely", and is the
change I made prior to committing. I was just pointing out the coding
style at the same time :-)
Andy Shevchenko Sept. 27, 2017, 8:58 a.m. UTC | #7
On Wed, Sep 27, 2017 at 10:31 AM, Darren Hart <dvhart@infradead.org> wrote:
> On Mon, Sep 25, 2017 at 01:57:48PM +0300, Andy Shevchenko wrote:
>> On Sat, Sep 23, 2017 at 2:45 AM, Darren Hart <dvhart@infradead.org> wrote:
>> > On Mon, Sep 18, 2017 at 12:57:12AM +0200, Jérôme de Bretagne wrote:
>>
>> >> +             if (event == 0xce) {
>> >> +                     input_report_key(priv->input_dev, KEY_POWER, 1);
>> >> +                     input_sync(priv->input_dev);
>> >> +                     return;
>> >> +             } else if (event == 0xcf)
>> >> +                     return;
>> >
>> > Minor CodingStyle nit. If the if block uses parens, so does the else block. In
>> > this case, since the if returns, just skip the else entirely.
>> >
>> > See Documentation/process/coding-style.rst
>> > The example immediatley *before* 3.1) Spaces.
>> >
>> > I've made this change and queued for testing.
>> >
>> >> +     }
>>
>> Actually in this case even 'else' is redundant.
>
> Yes, this is what I meant above by "skip the else entirely", and is the
> change I made prior to committing. I was just pointing out the coding
> style at the same time :-)

Good we are on the same page WRT such pattern.
diff mbox

Patch

diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c
index a782c78e7c63..b19f8dcf9d8c 100644
--- a/drivers/platform/x86/intel-hid.c
+++ b/drivers/platform/x86/intel-hid.c
@@ -226,6 +226,22 @@  static void notify_handler(acpi_handle handle, u32 event, void *context)
 		return;
 	}
 
+	/*
+	 * Needed for suspend to work on some platforms that don't expose
+	 * the 5-button array, but still send notifies with power button
+	 * event code to this device object on power button actions.
+	 *
+	 * Report the power button press; catch and ignore the button release.
+	 */
+	if (!priv->array) {
+		if (event == 0xce) {
+			input_report_key(priv->input_dev, KEY_POWER, 1);
+			input_sync(priv->input_dev);
+			return;
+		} else if (event == 0xcf)
+			return;
+	}
+
 	/* 0xC0 is for HID events, other values are for 5 button array */
 	if (event != 0xc0) {
 		if (!priv->array ||