diff options
author | Rafael J. Wysocki | 2014-01-12 23:45:04 +0100 |
---|---|---|
committer | Rafael J. Wysocki | 2014-01-12 23:45:04 +0100 |
commit | 25d412d932fb3289ae5b510845d523330b80bb71 (patch) | |
tree | 7234bf9bf03af4b0f1f40830169cd7219ef586ed /drivers/pci | |
parent | Merge branch 'acpi-cleanup' (diff) | |
parent | ACPI / scan: ACPI device object sysfs attribute for _STA evaluation (diff) | |
download | kernel-qcow2-linux-25d412d932fb3289ae5b510845d523330b80bb71.tar.gz kernel-qcow2-linux-25d412d932fb3289ae5b510845d523330b80bb71.tar.xz kernel-qcow2-linux-25d412d932fb3289ae5b510845d523330b80bb71.zip |
Merge branch 'acpi-hotplug'
* acpi-hotplug:
ACPI / scan: ACPI device object sysfs attribute for _STA evaluation
ACPI / hotplug / driver core: Handle containers in a special way
ACPI / hotplug: Add demand_offline hotplug profile flag
ACPI / bind: Move acpi_get_child() to drivers/ide/ide-acpi.c
ACPI / bind: Pass struct acpi_device pointer to acpi_bind_one()
ACPI / bind: Rework struct acpi_bus_type
ACPI / bind: Redefine acpi_preset_companion()
ACPI / bind: Redefine acpi_get_child()
PCI / ACPI: Use acpi_find_child_device() for child devices lookup
ACPI / bind: Simplify child device lookups
ACPI / scan: Use direct recurrence for device hierarchy walks
ACPI: Introduce acpi_set_device_status()
ACPI / hotplug: Drop unfinished global notification handling routines
ACPI / hotplug: Rework generic code to handle suprise removals
ACPI / hotplug: Move container-specific code out of the core
ACPI / hotplug: Make ACPI PCI root hotplug use common hotplug code
ACPI / hotplug: Introduce common hotplug function acpi_device_hotplug()
ACPI / hotplug: Do not fail bus and device checks for disabled hotplug
ACPI / scan: Add acpi_device objects for all device nodes in the namespace
ACPI / scan: Define non-empty device removal handler
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/hotplug/acpiphp_glue.c | 2 | ||||
-rw-r--r-- | drivers/pci/pci-acpi.c | 14 |
2 files changed, 7 insertions, 9 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index e86439283a5d..4f0c40d405fc 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -491,7 +491,7 @@ static void acpiphp_bus_add(acpi_handle handle) acpi_bus_scan(handle); acpi_bus_get_device(handle, &adev); - if (adev) + if (acpi_device_enumerated(adev)) acpi_device_set_power(adev, ACPI_STATE_D0); } diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c index 68128d6bd33d..733a8222b13f 100644 --- a/drivers/pci/pci-acpi.c +++ b/drivers/pci/pci-acpi.c @@ -303,10 +303,10 @@ void acpi_pci_remove_bus(struct pci_bus *bus) } /* ACPI bus type */ -static int acpi_pci_find_device(struct device *dev, acpi_handle *handle) +static struct acpi_device *acpi_pci_find_companion(struct device *dev) { struct pci_dev *pci_dev = to_pci_dev(dev); - bool is_bridge; + bool check_children; u64 addr; /* @@ -314,14 +314,12 @@ static int acpi_pci_find_device(struct device *dev, acpi_handle *handle) * is set only after acpi_pci_find_device() has been called for the * given device. */ - is_bridge = pci_dev->hdr_type == PCI_HEADER_TYPE_BRIDGE + check_children = pci_dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || pci_dev->hdr_type == PCI_HEADER_TYPE_CARDBUS; /* Please ref to ACPI spec for the syntax of _ADR */ addr = (PCI_SLOT(pci_dev->devfn) << 16) | PCI_FUNC(pci_dev->devfn); - *handle = acpi_find_child(ACPI_HANDLE(dev->parent), addr, is_bridge); - if (!*handle) - return -ENODEV; - return 0; + return acpi_find_child_device(ACPI_COMPANION(dev->parent), addr, + check_children); } static void pci_acpi_setup(struct device *dev) @@ -364,7 +362,7 @@ static bool pci_acpi_bus_match(struct device *dev) static struct acpi_bus_type acpi_pci_bus = { .name = "PCI", .match = pci_acpi_bus_match, - .find_device = acpi_pci_find_device, + .find_companion = acpi_pci_find_companion, .setup = pci_acpi_setup, .cleanup = pci_acpi_cleanup, }; |