diff mbox series

[1/2] platform/x86: Add missing LPS0 functions for AMD

Message ID 20210317143842.786380-1-alexander.deucher@amd.com
State Superseded
Headers show
Series [1/2] platform/x86: Add missing LPS0 functions for AMD | expand

Commit Message

Deucher, Alexander March 17, 2021, 2:38 p.m. UTC
These are supposedly not required for AMD platforms,
but at least some HP laptops seem to require it to
properly turn off the keyboard backlight.

Based on a patch from Marcin Bachry <hegel666@gmail.com>.

Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1230
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: Marcin Bachry <hegel666@gmail.com>
---
 drivers/acpi/x86/s2idle.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Alex Deucher March 18, 2021, 12:59 p.m. UTC | #1
Let's hold off on these patches for the time being.  At least one of
them seems to cause problems on another laptop.

Thanks,

Alex

On Wed, Mar 17, 2021 at 10:39 AM Alex Deucher <alexander.deucher@amd.com> wrote:
>

> ACPI_LPS0_ENTRY_AMD/ACPI_LPS0_EXIT_AMD are supposedly not

> required for AMD platforms, and on some platforms they are

> not even listed in the function mask but at least some HP

> laptops seem to require it to properly support s0ix.

>

> Based on a patch from Marcin Bachry <hegel666@gmail.com>.

>

> Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1230

> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

> Cc: Marcin Bachry <hegel666@gmail.com>

> ---

>

> V2: rework the patch to just fix up the specific problematic

>     case by setting the function flags that are missing.

>

>  drivers/acpi/x86/s2idle.c | 7 +++++++

>  1 file changed, 7 insertions(+)

>

> diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c

> index 2d7ddb8a8cb6..482e6b23b21a 100644

> --- a/drivers/acpi/x86/s2idle.c

> +++ b/drivers/acpi/x86/s2idle.c

> @@ -368,6 +368,13 @@ static int lps0_device_attach(struct acpi_device *adev,

>

>         ACPI_FREE(out_obj);

>

> +       /*

> +        * Some HP laptops require ACPI_LPS0_ENTRY_AMD/ACPI_LPS0_EXIT_AMD for proper

> +        * S0ix, but don't set the function mask correctly.  Fix that up here.

> +        */

> +       if (acpi_s2idle_vendor_amd())

> +               lps0_dsm_func_mask |= (1 << ACPI_LPS0_ENTRY_AMD) | (1 << ACPI_LPS0_EXIT_AMD);

> +

>         acpi_handle_debug(adev->handle, "_DSM function mask: 0x%x\n",

>                           lps0_dsm_func_mask);

>

> --

> 2.30.2

>

> _______________________________________________

> amd-gfx mailing list

> amd-gfx@lists.freedesktop.org

> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
diff mbox series

Patch

diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
index 2b69536cdccb..2d7ddb8a8cb6 100644
--- a/drivers/acpi/x86/s2idle.c
+++ b/drivers/acpi/x86/s2idle.c
@@ -42,6 +42,8 @@  static const struct acpi_device_id lps0_device_ids[] = {
 
 /* AMD */
 #define ACPI_LPS0_DSM_UUID_AMD      "e3f32452-febc-43ce-9039-932122d37721"
+#define ACPI_LPS0_ENTRY_AMD         2
+#define ACPI_LPS0_EXIT_AMD          3
 #define ACPI_LPS0_SCREEN_OFF_AMD    4
 #define ACPI_LPS0_SCREEN_ON_AMD     5
 
@@ -408,6 +410,7 @@  int acpi_s2idle_prepare_late(void)
 
 	if (acpi_s2idle_vendor_amd()) {
 		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF_AMD);
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY_AMD);
 	} else {
 		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_OFF);
 		acpi_sleep_run_lps0_dsm(ACPI_LPS0_ENTRY);
@@ -422,6 +425,7 @@  void acpi_s2idle_restore_early(void)
 		return;
 
 	if (acpi_s2idle_vendor_amd()) {
+		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT_AMD);
 		acpi_sleep_run_lps0_dsm(ACPI_LPS0_SCREEN_ON_AMD);
 	} else {
 		acpi_sleep_run_lps0_dsm(ACPI_LPS0_EXIT);