Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt...
[pandora-kernel.git] / drivers / acpi / pci_root.c
index 64f55b6..aefce33 100644 (file)
 #include <linux/proc_fs.h>
 #include <linux/spinlock.h>
 #include <linux/pm.h>
+#include <linux/pm_runtime.h>
 #include <linux/pci.h>
 #include <linux/pci-acpi.h>
 #include <linux/acpi.h>
+#include <linux/slab.h>
 #include <acpi/acpi_bus.h>
 #include <acpi/acpi_drivers.h>
 
@@ -528,6 +530,10 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
        if (flags != base_flags)
                acpi_pci_osc_support(root, flags);
 
+       pci_acpi_add_bus_pm_notifier(device, root->bus);
+       if (device->wakeup.flags.run_wake)
+               device_set_run_wake(root->bus->bridge, true);
+
        return 0;
 
 end:
@@ -549,6 +555,9 @@ static int acpi_pci_root_remove(struct acpi_device *device, int type)
 {
        struct acpi_pci_root *root = acpi_driver_data(device);
 
+       device_set_run_wake(root->bus->bridge, false);
+       pci_acpi_remove_bus_pm_notifier(device);
+
        kfree(root);
        return 0;
 }
@@ -558,6 +567,7 @@ static int __init acpi_pci_root_init(void)
        if (acpi_pci_disabled)
                return 0;
 
+       pci_acpi_crs_quirks();
        if (acpi_bus_register_driver(&acpi_pci_root_driver) < 0)
                return -ENODEV;