|
@@ -367,10 +367,20 @@ static const struct dmi_system_id acpisleep_dmi_table[] __initconst = {
|
|
|
{},
|
|
|
};
|
|
|
|
|
|
+static bool ignore_blacklist;
|
|
|
+
|
|
|
+void __init acpi_sleep_no_blacklist(void)
|
|
|
+{
|
|
|
+ ignore_blacklist = true;
|
|
|
+}
|
|
|
+
|
|
|
static void __init acpi_sleep_dmi_check(void)
|
|
|
{
|
|
|
int year;
|
|
|
|
|
|
+ if (ignore_blacklist)
|
|
|
+ return;
|
|
|
+
|
|
|
if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year >= 2012)
|
|
|
acpi_nvs_nosave_s3();
|
|
|
|
|
@@ -697,7 +707,8 @@ static const struct acpi_device_id lps0_device_ids[] = {
|
|
|
#define ACPI_LPS0_ENTRY 5
|
|
|
#define ACPI_LPS0_EXIT 6
|
|
|
|
|
|
-#define ACPI_S2IDLE_FUNC_MASK ((1 << ACPI_LPS0_ENTRY) | (1 << ACPI_LPS0_EXIT))
|
|
|
+#define ACPI_LPS0_SCREEN_MASK ((1 << ACPI_LPS0_SCREEN_OFF) | (1 << ACPI_LPS0_SCREEN_ON))
|
|
|
+#define ACPI_LPS0_PLATFORM_MASK ((1 << ACPI_LPS0_ENTRY) | (1 << ACPI_LPS0_EXIT))
|
|
|
|
|
|
static acpi_handle lps0_device_handle;
|
|
|
static guid_t lps0_dsm_guid;
|
|
@@ -900,7 +911,8 @@ static int lps0_device_attach(struct acpi_device *adev,
|
|
|
if (out_obj && out_obj->type == ACPI_TYPE_BUFFER) {
|
|
|
char bitmask = *(char *)out_obj->buffer.pointer;
|
|
|
|
|
|
- if ((bitmask & ACPI_S2IDLE_FUNC_MASK) == ACPI_S2IDLE_FUNC_MASK) {
|
|
|
+ if ((bitmask & ACPI_LPS0_PLATFORM_MASK) == ACPI_LPS0_PLATFORM_MASK ||
|
|
|
+ (bitmask & ACPI_LPS0_SCREEN_MASK) == ACPI_LPS0_SCREEN_MASK) {
|
|
|
lps0_dsm_func_mask = bitmask;
|
|
|
lps0_device_handle = adev->handle;
|
|
|
/*
|