aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/pci_slot.c
diff options
context:
space:
mode:
authorTaku Izumi <izumi.taku@jp.fujitsu.com>2012-09-18 02:22:35 -0400
committerBjorn Helgaas <bhelgaas@google.com>2012-09-24 17:29:40 -0400
commit55bfe3c0c561783655a8ff2f6f3f19ac1362b132 (patch)
tree270c4b1344f93f417e46f6abd9a9c91a5a3e8c55 /drivers/acpi/pci_slot.c
parentd0020f65220c237f300355873125df5efe2c2740 (diff)
PCI/ACPI: Pass acpi_pci_root to acpi_pci_drivers' add/remove interface
This patch changes .add/.remove interfaces of acpi_pci_driver. In the current implementation acpi_handle is passed as a parameter of .add/.remove interface. However, the acpi_pci_root structure contains more useful information than just the acpi_handle. This enables us to avoid some useless lookups in each acpi_pci_driver. Note: This changes interfaces used by acpi_pci_register_driver(), an exported symbol. This patch updates all the in-kernel users, but any out-of-kernel acpi_pci_register_driver() users will need updates. [bhelgaas: changelog] Signed-off-by: Taku Izumi <izumi.taku@jp.fujitsu.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/acpi/pci_slot.c')
-rw-r--r--drivers/acpi/pci_slot.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/acpi/pci_slot.c b/drivers/acpi/pci_slot.c
index e50e31a518af..8051ffa7609d 100644
--- a/drivers/acpi/pci_slot.c
+++ b/drivers/acpi/pci_slot.c
@@ -67,8 +67,8 @@ struct acpi_pci_slot {
67 struct list_head list; /* node in the list of slots */ 67 struct list_head list; /* node in the list of slots */
68}; 68};
69 69
70static int acpi_pci_slot_add(acpi_handle handle); 70static int acpi_pci_slot_add(struct acpi_pci_root *root);
71static void acpi_pci_slot_remove(acpi_handle handle); 71static void acpi_pci_slot_remove(struct acpi_pci_root *root);
72 72
73static LIST_HEAD(slot_list); 73static LIST_HEAD(slot_list);
74static DEFINE_MUTEX(slot_list_lock); 74static DEFINE_MUTEX(slot_list_lock);
@@ -295,11 +295,11 @@ walk_root_bridge(acpi_handle handle, acpi_walk_callback user_function)
295 * @handle: points to an acpi_pci_root 295 * @handle: points to an acpi_pci_root
296 */ 296 */
297static int 297static int
298acpi_pci_slot_add(acpi_handle handle) 298acpi_pci_slot_add(struct acpi_pci_root *root)
299{ 299{
300 acpi_status status; 300 acpi_status status;
301 301
302 status = walk_root_bridge(handle, register_slot); 302 status = walk_root_bridge(root->device->handle, register_slot);
303 if (ACPI_FAILURE(status)) 303 if (ACPI_FAILURE(status))
304 err("%s: register_slot failure - %d\n", __func__, status); 304 err("%s: register_slot failure - %d\n", __func__, status);
305 305
@@ -311,10 +311,11 @@ acpi_pci_slot_add(acpi_handle handle)
311 * @handle: points to an acpi_pci_root 311 * @handle: points to an acpi_pci_root
312 */ 312 */
313static void 313static void
314acpi_pci_slot_remove(acpi_handle handle) 314acpi_pci_slot_remove(struct acpi_pci_root *root)
315{ 315{
316 struct acpi_pci_slot *slot, *tmp; 316 struct acpi_pci_slot *slot, *tmp;
317 struct pci_bus *pbus; 317 struct pci_bus *pbus;
318 acpi_handle handle = root->device->handle;
318 319
319 mutex_lock(&slot_list_lock); 320 mutex_lock(&slot_list_lock);
320 list_for_each_entry_safe(slot, tmp, &slot_list, list) { 321 list_for_each_entry_safe(slot, tmp, &slot_list, list) {