Skip to content

Commit c86e5b5

Browse files
committed
Merge tag 'acpi-6.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI fixes from Rafael Wysocki: "These fix a recent regression in the ACPI button driver, add quirks related to EC wakeups from suspend-to-idle and fix coding mistakes related to the usage of sizeof() in the PPTT parser code: Summary: - Add suspend-to-idle EC wakeup quirks for Lenovo Go S (Mario Limonciello) - Prevent ACPI button from sending spurions KEY_POWER events to user space in some cases after a recent update (Mario Limonciello) - Compute the size of a structure instead of the size of a pointer in two places in the PPTT parser code (Jean-Marc Eurin)" * tag 'acpi-6.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI PPTT: Fix coding mistakes in a couple of sizeof() calls ACPI: EC: Set ec_no_wakeup for Lenovo Go S ACPI: button: Only send `KEY_POWER` for `ACPI_BUTTON_NOTIFY_STATUS`
2 parents 9b03fa1 + dcc4aca commit c86e5b5

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

drivers/acpi/button.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ static void acpi_button_notify(acpi_handle handle, u32 event, void *data)
458458
acpi_pm_wakeup_event(&device->dev);
459459

460460
button = acpi_driver_data(device);
461-
if (button->suspended)
461+
if (button->suspended || event == ACPI_BUTTON_NOTIFY_WAKE)
462462
return;
463463

464464
input = button->input;

drivers/acpi/ec.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2301,6 +2301,34 @@ static const struct dmi_system_id acpi_ec_no_wakeup[] = {
23012301
DMI_MATCH(DMI_PRODUCT_FAMILY, "103C_5336AN HP ZHAN 66 Pro"),
23022302
},
23032303
},
2304+
/*
2305+
* Lenovo Legion Go S; touchscreen blocks HW sleep when woken up from EC
2306+
* https://gitlab.freedesktop.org/drm/amd/-/issues/3929
2307+
*/
2308+
{
2309+
.matches = {
2310+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2311+
DMI_MATCH(DMI_PRODUCT_NAME, "83L3"),
2312+
}
2313+
},
2314+
{
2315+
.matches = {
2316+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2317+
DMI_MATCH(DMI_PRODUCT_NAME, "83N6"),
2318+
}
2319+
},
2320+
{
2321+
.matches = {
2322+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2323+
DMI_MATCH(DMI_PRODUCT_NAME, "83Q2"),
2324+
}
2325+
},
2326+
{
2327+
.matches = {
2328+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
2329+
DMI_MATCH(DMI_PRODUCT_NAME, "83Q3"),
2330+
}
2331+
},
23042332
{ },
23052333
};
23062334

drivers/acpi/pptt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ static int acpi_pptt_leaf_node(struct acpi_table_header *table_hdr,
229229
node_entry = ACPI_PTR_DIFF(node, table_hdr);
230230
entry = ACPI_ADD_PTR(struct acpi_subtable_header, table_hdr,
231231
sizeof(struct acpi_table_pptt));
232-
proc_sz = sizeof(struct acpi_pptt_processor *);
232+
proc_sz = sizeof(struct acpi_pptt_processor);
233233

234234
while ((unsigned long)entry + proc_sz < table_end) {
235235
cpu_node = (struct acpi_pptt_processor *)entry;
@@ -270,7 +270,7 @@ static struct acpi_pptt_processor *acpi_find_processor_node(struct acpi_table_he
270270
table_end = (unsigned long)table_hdr + table_hdr->length;
271271
entry = ACPI_ADD_PTR(struct acpi_subtable_header, table_hdr,
272272
sizeof(struct acpi_table_pptt));
273-
proc_sz = sizeof(struct acpi_pptt_processor *);
273+
proc_sz = sizeof(struct acpi_pptt_processor);
274274

275275
/* find the processor structure associated with this cpuid */
276276
while ((unsigned long)entry + proc_sz < table_end) {

0 commit comments

Comments
 (0)