blob: 540b6d2bee09e5ca4b2a721311db09799dd8449d [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#include <acpi/acpi.h>
#include <console/console.h>
#include <romstage_handoff.h>
#include <smbios.h>
/* This is filled with acpi_handoff_wakeup_s3() call early in ramstage. */
static int acpi_slp_type = -1;
static void acpi_handoff_wakeup(void)
{
if (acpi_slp_type < 0) {
if (romstage_handoff_is_resume()) {
printk(BIOS_DEBUG, "S3 Resume\n");
acpi_slp_type = ACPI_S3;
} else {
printk(BIOS_DEBUG, "Normal boot\n");
acpi_slp_type = ACPI_S0;
}
}
}
int acpi_handoff_wakeup_s3(void)
{
acpi_handoff_wakeup();
return (acpi_slp_type == ACPI_S3);
}
void __weak mainboard_suspend_resume(void)
{
}
/* Default mapping to ACPI FADT preferred_pm_profile field. */
uint8_t acpi_get_preferred_pm_profile(void)
{
switch (smbios_mainboard_enclosure_type()) {
case SMBIOS_ENCLOSURE_LAPTOP:
case SMBIOS_ENCLOSURE_CONVERTIBLE:
return PM_MOBILE;
case SMBIOS_ENCLOSURE_DETACHABLE:
case SMBIOS_ENCLOSURE_TABLET:
return PM_TABLET;
case SMBIOS_ENCLOSURE_DESKTOP:
return PM_DESKTOP;
case SMBIOS_ENCLOSURE_UNKNOWN:
default:
return PM_UNSPECIFIED;
}
}