diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-07-13 17:27:23 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-07-22 21:58:42 -0400 |
commit | be1c9de98d8904c75a5ab8b2a0d97bea0f7c07cc (patch) | |
tree | 43c1f3632a3b8be20cae5db77bdcd2f0852acdd7 /drivers/pci | |
parent | b9eb179fe6d9acc11a54194d2df147e991f049aa (diff) |
ACPI / PCI: Make bus registration and unregistration symmetric
Since acpi_pci_slot_enumerate() and acpiphp_enumerate_slots() can get
the ACPI device handle they need from bus->bridge, it is not
necessary to pass that handle to them as an argument.
Drop the second argument of acpi_pci_slot_enumerate() and
acpiphp_enumerate_slots(), rework them to obtain the ACPI handle
from bus->bridge and make acpi_pci_add_bus() and
acpi_pci_remove_bus() entirely symmetrical.
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/hotplug/acpiphp_glue.c | 6 | ||||
-rw-r--r-- | drivers/pci/pci-acpi.c | 16 |
2 files changed, 8 insertions, 14 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index 8bfad0dc29ab..a203ba529fef 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c | |||
@@ -1147,14 +1147,16 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type, | |||
1147 | * Create hotplug slots for the PCI bus. | 1147 | * Create hotplug slots for the PCI bus. |
1148 | * It should always return 0 to avoid skipping following notifiers. | 1148 | * It should always return 0 to avoid skipping following notifiers. |
1149 | */ | 1149 | */ |
1150 | void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle) | 1150 | void acpiphp_enumerate_slots(struct pci_bus *bus) |
1151 | { | 1151 | { |
1152 | acpi_handle handle; | ||
1152 | struct acpiphp_bridge *bridge; | 1153 | struct acpiphp_bridge *bridge; |
1153 | 1154 | ||
1154 | if (acpiphp_disabled) | 1155 | if (acpiphp_disabled) |
1155 | return; | 1156 | return; |
1156 | 1157 | ||
1157 | if (detect_ejectable_slots(handle) <= 0) | 1158 | handle = ACPI_HANDLE(bus->bridge); |
1159 | if (!handle || detect_ejectable_slots(handle) <= 0) | ||
1158 | return; | 1160 | return; |
1159 | 1161 | ||
1160 | bridge = kzalloc(sizeof(struct acpiphp_bridge), GFP_KERNEL); | 1162 | bridge = kzalloc(sizeof(struct acpiphp_bridge), GFP_KERNEL); |
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c index dbdc5f7e2b29..c78cc432edab 100644 --- a/drivers/pci/pci-acpi.c +++ b/drivers/pci/pci-acpi.c | |||
@@ -290,24 +290,16 @@ static struct pci_platform_pm_ops acpi_pci_platform_pm = { | |||
290 | 290 | ||
291 | void acpi_pci_add_bus(struct pci_bus *bus) | 291 | void acpi_pci_add_bus(struct pci_bus *bus) |
292 | { | 292 | { |
293 | acpi_handle handle = NULL; | 293 | if (acpi_pci_disabled || !bus->bridge) |
294 | |||
295 | if (bus->bridge) | ||
296 | handle = ACPI_HANDLE(bus->bridge); | ||
297 | if (acpi_pci_disabled || handle == NULL) | ||
298 | return; | 294 | return; |
299 | 295 | ||
300 | acpi_pci_slot_enumerate(bus, handle); | 296 | acpi_pci_slot_enumerate(bus); |
301 | acpiphp_enumerate_slots(bus, handle); | 297 | acpiphp_enumerate_slots(bus); |
302 | } | 298 | } |
303 | 299 | ||
304 | void acpi_pci_remove_bus(struct pci_bus *bus) | 300 | void acpi_pci_remove_bus(struct pci_bus *bus) |
305 | { | 301 | { |
306 | /* | 302 | if (acpi_pci_disabled || !bus->bridge) |
307 | * bus->bridge->acpi_node.handle has already been reset to NULL | ||
308 | * when acpi_pci_remove_bus() is called, so don't check ACPI handle. | ||
309 | */ | ||
310 | if (acpi_pci_disabled) | ||
311 | return; | 303 | return; |
312 | 304 | ||
313 | acpiphp_remove_slots(bus); | 305 | acpiphp_remove_slots(bus); |