Skip to content
Snippets Groups Projects
Commit 821b8536 authored by Jérôme de Bretagne's avatar Jérôme de Bretagne Committed by Darren Hart (VMware)
Browse files

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

On Dell Latitude 7275 the 5-button array is not exposed in the ACPI
tables, but notififies are still 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:

commit 635173a1 ("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
reporting the power button press event and triggers 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: default avatarJérôme de Bretagne <jerome.debretagne@gmail.com>
Signed-off-by: default avatarJérôme de Bretagne <jerome.debretagne@gmail.com>
Acked-By: default avatarMario Limonciello <mario.limonciello@dell.com>
[dvhart: minor coding style and commit message format fix]
Signed-off-by: default avatarDarren Hart (VMware) <dvhart@infradead.org>

Signed-off-by: default avatarDarren Hart (VMware) <dvhart@infradead.org>
parent 12933ea2
No related branches found
No related tags found
No related merge requests found
......@@ -226,6 +226,24 @@ 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;
}
if (event == 0xcf)
return;
}
/* 0xC0 is for HID events, other values are for 5 button array */
if (event != 0xc0) {
if (!priv->array ||
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment