Re: [PATCH 0/3] ACPI / sleep: Support power button wakeup from S2I on recent Dell laptops
From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: 2017-06-12 19:11:58
Also in:
linux-acpi
On Mon, Jun 12, 2017 at 12:01 AM, Jérôme de Bretagne [off-list ref] wrote:
Hi Mario, Hi Rafael,quoted
quoted
Some assumptions now: either the SCI is ignored erroneously or it's not interpreted correctly by the expected driver? I guess that's the 2 possibilities I'll try to investigate.Well that's too bad. Yes, you're correct that the EC has changed between those versions. Are you testing on or off AC adapter?I haven't detected a pattern specific to the state of the AC adapter. Good news on another front. By adding some more logs in the s2idle-dell-test branch, I've been able to check and confirm that notify_handler() from intel-hid.c is actually called upon short power key press during s2idle on my Latitude 7275. However, the system with BIOS 1.1.31 doesn't match (anymore?) the current criteria to call pm_wakeup_hard_event introduced in commit: platform: x86: intel-hid: Wake up the system from suspend-to-idle 7871dc61497a71be93c4f80d43ac109152510e7e This ugly 3-line modification I've added on the actual patch here: + if (priv->wakeup_mode) { + + /* Wake up Dell Latitude 7275 BIOS 1.1.31. */ + if (event == 0xce) + pm_wakeup_hard_event(&device->dev); + + /* Wake up on 5-button array events only. */ + if (event == 0xc0 || !priv->array) + return; + + if (sparse_keymap_entry_from_scancode(priv->array, event)) + pm_wakeup_hard_event(&device->dev); + else + dev_info(&device->dev, "unknown event 0x%x\n", event); + + return; + } make the system wake up on a standard short press finally! Is the "Wake up on 5-button array events only." assumption broad enough to cover the various Intel systems that need this behavior? Or am I just detecting another ACPI issue in fact that prevents this system from setting up properly the 5 button array with BIOS 1.1.31?
It looks like priv->array is not set on your system with the new BIOS, which means that intel_button_array_input_setup() is not called any more, so either evaluating the HEBC method fails entirely, or its return value is not as expected.
How would you recommend me to test that 2nd assumption?
Log the status and event_cap right after the status = acpi_evaluate_integer(handle, "HEBC", NULL, &event_cap); statement in intel_hid_probe(). Thanks, Rafael