RE: [PATCH] platform/x86: intel-hid: Missing power button release on some Dell models

From: Mario.Limonciello
Date: Mon Jan 07 2019 - 10:46:21 EST




> -----Original Message-----
> From: platform-driver-x86-owner@xxxxxxxxxxxxxxx <platform-driver-x86-
> owner@xxxxxxxxxxxxxxx> On Behalf Of JÃrÃme de Bretagne
> Sent: Sunday, January 6, 2019 11:57 AM
> To: Alex Hung
> Cc: platform-driver-x86@xxxxxxxxxxxxxxx; Andy Shevchenko; Darren Hart;
> Limonciello, Mario; Rafael J. Wysocki; Chih-Wei Huang; Tristian Celestin; linux-
> kernel@xxxxxxxxxxxxxxx
> Subject: [PATCH] platform/x86: intel-hid: Missing power button release on some
> Dell models
>
>
> [EXTERNAL EMAIL]
>
> Power button suspend for some Dell models was added in:
>
> commit 821b85366284 (intel-hid: Power button suspend on Dell Latitude 7275)
>
> by checking against the power button press notification (0xCE) to report
> the power button press event. The corresponding power button release
> notification (0xCF) was caught and ignored to stop it from being reported
> as an "unknown event" in the logs.
>
> The missing button release event is creating issues on Android-x86, as
> reported on the project mailing list for a Dell Latitude 5175 model, since
> the events are expected in down/up pairs.
>
> Report the power button release event to fix this issue.
>
> Link: https://groups.google.com/forum/#!topic/android-x86/aSwZK9Nf9Ro
> Tested-by: Tristian Celestin <tristian.celestin@xxxxxxxxxxx>
> Tested-by: JÃrÃme de Bretagne <jerome.debretagne@xxxxxxxxx>
> Signed-off-by: JÃrÃme de Bretagne <jerome.debretagne@xxxxxxxxx>
> ---
> drivers/platform/x86/intel-hid.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/platform/x86/intel-hid.c b/drivers/platform/x86/intel-hid.c
> index e28bcf61b126..bc0d55a59015 100644
> --- a/drivers/platform/x86/intel-hid.c
> +++ b/drivers/platform/x86/intel-hid.c
> @@ -363,7 +363,7 @@ static void notify_handler(acpi_handle handle, u32 event,
> void *context)
> * 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.
> + * Report the power button press and release.
> */
> if (!priv->array) {
> if (event == 0xce) {
> @@ -372,8 +372,11 @@ static void notify_handler(acpi_handle handle, u32 event,
> void *context)
> return;
> }
>
> - if (event == 0xcf)
> + if (event == 0xcf) {
> + input_report_key(priv->input_dev, KEY_POWER, 0);
> + input_sync(priv->input_dev);
> return;
> + }
> }
>
> /* 0xC0 is for HID events, other values are for 5 button array */
> --
> 2.11.0

Reviewed-by: Mario Limonciello <mario.limonciello@xxxxxxxx>