linux/drivers/acpi
Rafael J. Wysocki 0baed8da1e 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>
2009-09-09 14:19:24 -07:00
..
acpica ACPICA: Windows compatibility fix: same buffer/string store 2009-08-28 15:17:07 -04:00
ac.c ACPI: ac: use .notify method instead of installing handler directly 2009-06-18 00:13:14 -04:00
acpi_memhotplug.c ACPI: Ingore the memory block with zero block size in course of memory hotplug 2009-08-02 12:25:12 -04:00
battery.c ACPI: battery: fix CONFIG_ACPI_PROCFS_POWER=n build warning 2009-06-18 00:38:27 -04:00
blacklist.c ACPI: DMI to disable Vista compatibility on some Sony laptops 2009-06-23 23:32:47 -04:00
bus.c ACPI: use handle, not device, in system notification path 2009-06-18 00:13:15 -04:00
button.c ACPI: button: remove control method/fixed hardware distinctions 2009-04-11 00:36:41 -04:00
cm_sbs.c ACPI: remove private acpica headers from driver files 2008-12-31 01:15:22 -05:00
container.c ACPI: add missing KERN_* constants to printks 2009-02-07 00:29:32 -05:00
debug.c Merge branch 'acpi-modparam' into release 2009-04-05 01:45:50 -04:00
dock.c Merge branch 'linus' into release 2009-04-05 02:14:15 -04:00
ec.c ACPI: EC: Fix ACPI EC resume non-query interrupt message 2009-04-23 23:56:57 -04:00
event.c netlink: change return-value logic of netlink_broadcast() 2009-02-05 23:56:36 -08:00
fan.c Merge branch 'linus' into release 2009-04-05 02:14:15 -04:00
glue.c ACPI: kill acpi_get_physical_pci_device() 2009-06-17 23:32:24 -04:00
internal.h ACPI: call acpi_wakeup_device_init() explicitly rather than as initcall 2009-03-27 12:51:31 -04:00
Kconfig PCI: drivers/pci/slot.c should depend on CONFIG_SYSFS 2009-06-18 13:57:24 -07:00
Makefile Merge branch 'async-battery' into release 2009-04-05 01:48:46 -04:00
numa.c x86, ACPI: add support for x2apic ACPI extensions 2009-04-03 20:08:12 -04:00
osl.c ACPI: bind workqueues to CPU 0 to avoid SMI corruption 2009-08-02 12:08:50 -04:00
pci_bind.c ACPI: kill acpi_get_pci_id 2009-06-17 23:32:23 -04:00
pci_irq.c Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release 2009-06-24 01:19:50 -04:00
pci_link.c ACPI: pci_link: simplify list of link devices 2009-03-17 01:53:29 -04:00
pci_root.c ACPI: export acpi_pci_root and friends 2009-09-09 13:29:22 -07:00
pci_slot.c PCI: pci_slot: grab refcount on slot's bus 2009-04-06 11:31:14 -07:00
power.c ACPI PM: Replace wakeup.prepared with reference counter 2009-09-09 14:19:18 -07:00
proc.c ACPI: convert acpi_device_lock spinlock to mutex 2009-04-07 00:02:40 -04:00
processor_core.c acpi: don't call acpi_processor_init if acpi is disabled 2009-08-26 20:06:52 -07:00
processor_idle.c clockevent: Prevent dead lock on clockevents_lock 2009-08-19 18:15:10 +02:00
processor_perflib.c ACPI: sanity check _PSS frequency to prevent cpufreq crash 2009-05-29 20:45:58 -04:00
processor_thermal.c ACPI processor: force throttling state when BIOS returns incorrect value 2009-08-26 20:06:53 -07:00
processor_throttling.c acpi processor: remove superfluous warning message 2009-08-26 20:06:53 -07:00
reboot.c ACPI: reboot.c: use new acpi_reset interface 2008-12-31 01:15:00 -05:00
sbs.c Merge branch 'linus' into release 2009-04-05 02:14:15 -04:00
sbshc.c ACPI: remove private acpica headers from driver files 2008-12-31 01:15:22 -05:00
sbshc.h ACPI: SBS: Ignore alarms coming from unknown devices 2007-12-14 15:14:06 -05:00
scan.c ACPI PM: Replace wakeup.prepared with reference counter 2009-09-09 14:19:18 -07:00
sleep.c PCI / ACPI PM: Propagate wake-up enable for devices w/o ACPI support 2009-09-09 14:19:24 -07:00
sleep.h ACPI: convert acpi_device_lock spinlock to mutex 2009-04-07 00:02:40 -04:00
system.c ACPI: root-only read protection on /sys/firmware/acpi/tables/* 2009-08-02 11:26:43 -04:00
tables.c Merge branch 'linus' into release 2009-04-05 02:14:15 -04:00
thermal.c thermal: Fix polling frequency for systems without passive cooling 2009-04-18 01:05:23 -04:00
utils.c ACPI: scheduling in atomic via acpi_evaluate_integer () 2008-11-26 17:39:06 -05:00
video_detect.c ACPI: video: convert to acpi_get_pci_dev 2009-06-17 23:32:23 -04:00
video.c ACPI: don't free non-existent backlight in acpi video module 2009-08-28 15:17:07 -04:00
wakeup.c ACPI PM: Replace wakeup.prepared with reference counter 2009-09-09 14:19:18 -07:00