linuxkpi: Support s2idle in pm_suspend_target_state
When going to s2idle, set Linux' pm_suspend_target_state to PM_SUSPEND_TO_IDLE instead of setting PM_SUSPEND_MEM (for S3) in all cases. This is necessary because more recent versions of the amdgpu DRM drivers have different paths for when entering s2idle & S0ix is supported than S3. Reviewed by: bz Approved by: bz Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51591
This commit is contained in:
@@ -119,17 +119,27 @@ acpi_evaluate_dsm(ACPI_HANDLE ObjHandle, const guid_t *guid,
|
||||
}
|
||||
|
||||
static void
|
||||
linux_handle_power_suspend_event(void *arg __unused,
|
||||
enum power_stype stype __unused)
|
||||
linux_handle_power_suspend_event(void *arg __unused, enum power_stype stype)
|
||||
{
|
||||
/*
|
||||
* Only support S3 for now.
|
||||
* acpi_sleep_event isn't always called so we use power_suspend_early
|
||||
* instead which means we don't know what state we're switching to.
|
||||
* TODO: Make acpi_sleep_event consistent
|
||||
*/
|
||||
linux_acpi_target_sleep_state = ACPI_STATE_S3;
|
||||
pm_suspend_target_state = PM_SUSPEND_MEM;
|
||||
switch (stype) {
|
||||
case POWER_STYPE_SUSPEND_TO_IDLE:
|
||||
/*
|
||||
* XXX: obiwac Not 100% sure this is correct, but
|
||||
* acpi_target_sleep_state does seem to be set to
|
||||
* ACPI_STATE_S3 during s2idle on Linux.
|
||||
*/
|
||||
linux_acpi_target_sleep_state = ACPI_STATE_S3;
|
||||
pm_suspend_target_state = PM_SUSPEND_TO_IDLE;
|
||||
break;
|
||||
case POWER_STYPE_SUSPEND_TO_MEM:
|
||||
linux_acpi_target_sleep_state = ACPI_STATE_S3;
|
||||
pm_suspend_target_state = PM_SUSPEND_MEM;
|
||||
break;
|
||||
default:
|
||||
printf("%s: sleep type %d not yet supported\n",
|
||||
__func__, stype);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user