PCI / ACPI PM: Propagate wake-up enable for devices w/o ACPI support
authorRafael J. Wysocki <rjw@sisk.pl>
Tue, 8 Sep 2009 21:16:24 +0000 (23:16 +0200)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 9 Sep 2009 21:19:24 +0000 (14:19 -0700)
commit0baed8da1ed91b664759f6c7f955b3a804457389
tree673cb494cb7e98df71c33e16ab304a5618e263fe
parent9b83ccd2f14f647936dcfbf4a9a20c501007dd69
PCI / ACPI PM: Propagate wake-up enable for devices w/o ACPI support

Some PCI devices (not PCI Express), like PCI add-on cards, can
generate PME#, but they don't have any special platform wake-up
support.  For this reason, even if they generate PME# to wake up the
system from a sleep state, wake-up events are not generated by the
platform.

It turns out that, at least on some systems, PCI bridges and the PCI
host bridge have ACPI GPEs associated with them that, if enabled to
generate wake-up events, allow the system to wake up if one of the
add-on devices asserts PME# while the system is in a sleep state.
Following this observation, if a PCI device without direct ACPI
wake-up support is prepared to wake up the system during a transition
into a sleep state (eg. suspend to RAM), try to configure the bridges
on the path from the device to the root bridge to wake-up the system.

Reviewed-by: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/acpi/sleep.c
drivers/pci/pci-acpi.c