linux/drivers/base
Rafael J. Wysocki 94d76d5de3 platform / ACPI: Attach/detach ACPI PM during probe/remove/shutdown
Drivers usually expect that the devices they are supposed to handle
will be operational when their .probe() routines are called, but that
need not be the case on some ACPI-based systems with ACPI-based
device enumeration where the BIOSes don't put devices into D0 by
default.  To work around this problem it is sufficient to change
bus type .probe() routines to ensure that devices will be powered
on before the drivers' .probe() routines run (and their .remove()
and .shutdown() routines accordingly).

Modify platform_drv_probe() to run acpi_dev_pm_attach() for devices
whose ACPI handles are present, so that ACPI power management is used
to change their power states.  Analogously, modify
platform_drv_remove() and platform_drv_shutdown() to call
acpi_dev_pm_detach() for those devices, so that they are not subject
to ACPI PM any more.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
2012-11-27 13:44:45 +01:00
..
power Merge branch 'pm-qos' into acpi-dev-pm 2012-11-15 00:13:50 +01:00
regmap regmap: select REGMAP if REGMAP_MMIO and REGMAP_IRQ enabled 2012-10-17 22:09:35 +09:00
attribute_container.c
base.h driver core: move the deferred probe pointer into the private area 2012-03-08 12:17:22 -08:00
bus.c driver core: move uevent call to driver_register 2012-07-16 18:04:25 -07:00
class.c Revert "driver core: check start node in klist_iter_init_node" 2012-04-19 19:17:30 -07:00
core.c device and dynamic_debug: Use dev_vprintk_emit and dev_printk_emit 2012-09-17 06:10:05 -07:00
cpu.c sched: Remove stale power aware scheduling remnants and dysfunctional knobs 2012-05-17 13:48:56 +02:00
dd.c [SCSI] cleanup usages of scsi_complete_async_scans 2012-07-20 09:25:22 +01:00
devres.c driver core: devres: introduce devres_for_each_res 2012-08-16 13:30:29 -07:00
devtmpfs.c userns: Convert devtmpfs to use GLOBAL_ROOT_UID and GLOBAL_ROOT_GID 2012-09-21 03:13:05 -07:00
dma-buf.c make get_file() return its argument 2012-09-26 21:10:25 -04:00
dma-coherent.c drivers: dma-coherent: Fix typo in dma_mmap_from_coherent documentation 2012-10-23 14:05:32 +02:00
dma-contiguous.c drivers: dma-contiguous: Don't redefine SZ_1M 2012-10-23 14:05:32 +02:00
dma-mapping.c common: dma-mapping: introduce dma_get_sgtable() function 2012-07-30 12:25:46 +02:00
driver.c driver core: don't trigger uevent after failure 2012-07-17 10:40:23 -07:00
firmware_class.c firmware loader: sync firmware cache by async_synchronize_full_domain 2012-10-22 08:37:18 -07:00
firmware.c
hypervisor.c
init.c driver-core: implement 'sysdev' functionality for regular devices and buses 2011-12-14 14:29:38 -08:00
isa.c
Kconfig drivers: cma: Fix wrong CMA selected region size default value 2012-10-23 14:05:33 +02:00
Makefile drivers: add Contiguous Memory Allocator 2012-05-21 15:09:37 +02:00
map.c
memory.c memory-hotplug: update memory block's state and notify userspace 2012-10-09 16:23:02 +09:00
module.c
node.c mm: fix off-by-one bug in print_nodes_state() 2012-05-29 16:22:19 -07:00
platform.c platform / ACPI: Attach/detach ACPI PM during probe/remove/shutdown 2012-11-27 13:44:45 +01:00
soc.c mode_t whack-a-mole: ->is_visible() returns umode_t... 2012-05-29 23:28:42 -04:00
syscore.c
topology.c cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
transport_class.c