ACPI: Remove the arguments of acpi_bus_add() that are not used
Rafael J. Wysocki [Thu, 20 Dec 2012 23:36:47 +0000 (00:36 +0100)]
Notice that acpi_bus_add() uses only 2 of its 4 arguments and
redefine its header to match the body.  Update all of its callers as
necessary and observe that this leads to quite a number of removed
lines of code (Linus will like that).

Add a kerneldoc comment documenting acpi_bus_add() and wonder how
its callers make wrong assumptions about the second argument (make
note to self to take care of that later).

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Acked-by: Toshi Kani <toshi.kani@hp.com>

drivers/acpi/acpi_memhotplug.c
drivers/acpi/container.c
drivers/acpi/dock.c
drivers/acpi/processor_driver.c
drivers/acpi/scan.c
drivers/pci/hotplug/acpiphp_glue.c
drivers/pci/hotplug/sgi_hotplug.c
include/acpi/acpi_bus.h

index eb30e5a..d0a7da7 100644 (file)
@@ -157,34 +157,17 @@ static int
 acpi_memory_get_device(acpi_handle handle,
                       struct acpi_memory_device **mem_device)
 {
-       acpi_status status;
-       acpi_handle phandle;
        struct acpi_device *device = NULL;
-       struct acpi_device *pdevice = NULL;
        int result;
 
-
        if (!acpi_bus_get_device(handle, &device) && device)
                goto end;
 
-       status = acpi_get_parent(handle, &phandle);
-       if (ACPI_FAILURE(status)) {
-               ACPI_EXCEPTION((AE_INFO, status, "Cannot find acpi parent"));
-               return -EINVAL;
-       }
-
-       /* Get the parent device */
-       result = acpi_bus_get_device(phandle, &pdevice);
-       if (result) {
-               acpi_handle_warn(phandle, "Cannot get acpi bus device\n");
-               return -EINVAL;
-       }
-
        /*
         * Now add the notified device.  This creates the acpi_device
         * and invokes .add function
         */
-       result = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE);
+       result = acpi_bus_add(handle, &device);
        if (result) {
                acpi_handle_warn(handle, "Cannot add acpi bus\n");
                return -EINVAL;
index 98b85e3..0688f83 100644 (file)
@@ -135,20 +135,6 @@ static int acpi_container_remove(struct acpi_device *device, int type)
        return status;
 }
 
-static int container_device_add(struct acpi_device **device, acpi_handle handle)
-{
-       acpi_handle phandle;
-       struct acpi_device *pdev;
-
-       if (acpi_get_parent(handle, &phandle))
-               return -ENODEV;
-
-       if (acpi_bus_get_device(phandle, &pdev))
-               return -ENODEV;
-
-       return acpi_bus_add(device, pdev, handle, ACPI_BUS_TYPE_DEVICE);
-}
-
 static void container_notify_cb(acpi_handle handle, u32 type, void *context)
 {
        struct acpi_device *device = NULL;
@@ -180,7 +166,7 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)
                if (!ACPI_FAILURE(status) || device)
                        break;
 
-               result = container_device_add(&device, handle);
+               result = acpi_bus_add(handle, &device);
                if (result) {
                        acpi_handle_warn(handle, "Failed to add container\n");
                        break;
index f32bd47..ff30582 100644 (file)
@@ -310,8 +310,6 @@ static int dock_present(struct dock_station *ds)
 static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
 {
        struct acpi_device *device;
-       struct acpi_device *parent_device;
-       acpi_handle parent;
        int ret;
 
        if (acpi_bus_get_device(handle, &device)) {
@@ -319,16 +317,9 @@ static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
                 * no device created for this object,
                 * so we should create one.
                 */
-               acpi_get_parent(handle, &parent);
-               if (acpi_bus_get_device(parent, &parent_device))
-                       parent_device = NULL;
-
-               ret = acpi_bus_add(&device, parent_device, handle,
-                       ACPI_BUS_TYPE_DEVICE);
-               if (ret) {
+               ret = acpi_bus_add(handle, &device);
+               if (ret)
                        pr_debug("error adding bus, %x\n", -ret);
-                       return NULL;
-               }
        }
        return device;
 }
index e83311b..18b292e 100644 (file)
@@ -677,28 +677,6 @@ static int is_processor_present(acpi_handle handle)
        return 0;
 }
 
-static
-int acpi_processor_device_add(acpi_handle handle, struct acpi_device **device)
-{
-       acpi_handle phandle;
-       struct acpi_device *pdev;
-
-
-       if (acpi_get_parent(handle, &phandle)) {
-               return -ENODEV;
-       }
-
-       if (acpi_bus_get_device(phandle, &pdev)) {
-               return -ENODEV;
-       }
-
-       if (acpi_bus_add(device, pdev, handle, ACPI_BUS_TYPE_PROCESSOR)) {
-               return -ENODEV;
-       }
-
-       return 0;
-}
-
 static void acpi_processor_hotplug_notify(acpi_handle handle,
                                          u32 event, void *data)
 {
@@ -721,7 +699,7 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
                if (!acpi_bus_get_device(handle, &device))
                        break;
 
-               result = acpi_processor_device_add(handle, &device);
+               result = acpi_bus_add(handle, &device);
                if (result) {
                        acpi_handle_err(handle, "Unable to add the device\n");
                        break;
index 6321cab..25095bf 100644 (file)
@@ -1650,25 +1650,33 @@ static int acpi_bus_scan(acpi_handle handle, bool start,
        return ret;
 }
 
-/*
- * acpi_bus_add
+/**
+ * acpi_bus_add - Add ACPI device node objects in a given namespace scope.
+ * @handle: Root of the namespace scope to scan.
+ * @ret: Location to store a return struct acpi_device pointer.
+ *
+ * Scan a given ACPI tree (probably recently hot-plugged) and create and add
+ * found devices.
  *
- * scan a given ACPI tree and (probably recently hot-plugged)
- * create and add found devices.
+ * If no devices were found, -ENODEV is returned, but it does not mean that
+ * there has been a real error.  There just have been no suitable ACPI objects
+ * in the table trunk from which the kernel could create a device and add an
+ * appropriate driver.
  *
- * If no devices were found -ENODEV is returned which does not
- * mean that this is a real error, there just have been no suitable
- * ACPI objects in the table trunk from which the kernel could create
- * a device and add an appropriate driver.
+ * If 0 is returned, the memory location pointed to by @ret will be populated
+ * with a pointer to a struct acpi_device created while scanning the namespace.
+ * If @handle corresponds to a device node, that will be a pointer to the struct
+ * acpi_device object corresponding to @handle.  Otherwise, it will be a pointer
+ * to a struct acpi_device corresponding to one of its descendants.
+ *
+ * If an error code is returned, NULL will be stored in the memory location
+ * pointed to by @ret.
  */
-
-int
-acpi_bus_add(struct acpi_device **child,
-            struct acpi_device *parent, acpi_handle handle, int type)
+int acpi_bus_add(acpi_handle handle, struct acpi_device **ret)
 {
        int err;
 
-       err = acpi_bus_scan(handle, false, child);
+       err = acpi_bus_scan(handle, false, ret);
        if (err)
                return err;
 
index 7e2bad4..dfc2df5 100644 (file)
@@ -734,15 +734,9 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
  */
 static int acpiphp_bus_add(struct acpiphp_func *func)
 {
-       acpi_handle phandle;
-       struct acpi_device *device, *pdevice;
+       struct acpi_device *device;
        int ret_val;
 
-       acpi_get_parent(func->handle, &phandle);
-       if (acpi_bus_get_device(phandle, &pdevice)) {
-               dbg("no parent device, assuming NULL\n");
-               pdevice = NULL;
-       }
        if (!acpi_bus_get_device(func->handle, &device)) {
                dbg("bus exists... trim\n");
                /* this shouldn't be in here, so remove
@@ -752,8 +746,7 @@ static int acpiphp_bus_add(struct acpiphp_func *func)
                dbg("acpi_bus_trim return %x\n", ret_val);
        }
 
-       ret_val = acpi_bus_add(&device, pdevice, func->handle,
-               ACPI_BUS_TYPE_DEVICE);
+       ret_val = acpi_bus_add(func->handle, &device);
        if (ret_val) {
                dbg("error adding bus, %x\n",
                        -ret_val);
@@ -1129,8 +1122,7 @@ static int acpiphp_configure_bridge (acpi_handle handle)
 
 static void handle_bridge_insertion(acpi_handle handle, u32 type)
 {
-       struct acpi_device *device, *pdevice;
-       acpi_handle phandle;
+       struct acpi_device *device;
 
        if ((type != ACPI_NOTIFY_BUS_CHECK) &&
                        (type != ACPI_NOTIFY_DEVICE_CHECK)) {
@@ -1138,12 +1130,7 @@ static void handle_bridge_insertion(acpi_handle handle, u32 type)
                return;
        }
 
-       acpi_get_parent(handle, &phandle);
-       if (acpi_bus_get_device(phandle, &pdevice)) {
-               dbg("no parent device, assuming NULL\n");
-               pdevice = NULL;
-       }
-       if (acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE)) {
+       if (acpi_bus_add(handle, &device)) {
                err("cannot add bridge to acpi list\n");
                return;
        }
index 20c960d..801b58d 100644 (file)
@@ -448,8 +448,7 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
                        if (ACPI_SUCCESS(ret) &&
                            (adr>>16) == (slot->device_num + 1)) {
 
-                               ret = acpi_bus_add(&device, pdevice, chandle,
-                                                  ACPI_BUS_TYPE_DEVICE);
+                               ret = acpi_bus_add(chandle, &device);
                                if (ACPI_FAILURE(ret)) {
                                        printk(KERN_ERR "%s: acpi_bus_add "
                                               "failed (0x%x) for slot %d "
index 6d47a58..75c6b3f 100644 (file)
@@ -358,8 +358,7 @@ static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 ty
 #endif
 int acpi_bus_register_driver(struct acpi_driver *driver);
 void acpi_bus_unregister_driver(struct acpi_driver *driver);
-int acpi_bus_add(struct acpi_device **child, struct acpi_device *parent,
-                acpi_handle handle, int type);
+int acpi_bus_add(acpi_handle handle, struct acpi_device **ret);
 void acpi_bus_hot_remove_device(void *context);
 int acpi_bus_trim(struct acpi_device *start, int rmdevice);
 acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd);