ACPI: Remove the arguments of acpi_bus_add() that are not used

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>
This commit is contained in:
Rafael J. Wysocki 2012-12-21 00:36:47 +01:00
parent 02f57c67a8
commit 636458de36
8 changed files with 32 additions and 101 deletions

View file

@ -157,34 +157,17 @@ static int
acpi_memory_get_device(acpi_handle handle, acpi_memory_get_device(acpi_handle handle,
struct acpi_memory_device **mem_device) struct acpi_memory_device **mem_device)
{ {
acpi_status status;
acpi_handle phandle;
struct acpi_device *device = NULL; struct acpi_device *device = NULL;
struct acpi_device *pdevice = NULL;
int result; int result;
if (!acpi_bus_get_device(handle, &device) && device) if (!acpi_bus_get_device(handle, &device) && device)
goto end; 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 * Now add the notified device. This creates the acpi_device
* and invokes .add function * and invokes .add function
*/ */
result = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE); result = acpi_bus_add(handle, &device);
if (result) { if (result) {
acpi_handle_warn(handle, "Cannot add acpi bus\n"); acpi_handle_warn(handle, "Cannot add acpi bus\n");
return -EINVAL; return -EINVAL;

View file

@ -135,20 +135,6 @@ static int acpi_container_remove(struct acpi_device *device, int type)
return status; 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) static void container_notify_cb(acpi_handle handle, u32 type, void *context)
{ {
struct acpi_device *device = NULL; 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) if (!ACPI_FAILURE(status) || device)
break; break;
result = container_device_add(&device, handle); result = acpi_bus_add(handle, &device);
if (result) { if (result) {
acpi_handle_warn(handle, "Failed to add container\n"); acpi_handle_warn(handle, "Failed to add container\n");
break; break;

View file

@ -310,8 +310,6 @@ static int dock_present(struct dock_station *ds)
static struct acpi_device * dock_create_acpi_device(acpi_handle handle) static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
{ {
struct acpi_device *device; struct acpi_device *device;
struct acpi_device *parent_device;
acpi_handle parent;
int ret; int ret;
if (acpi_bus_get_device(handle, &device)) { 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, * no device created for this object,
* so we should create one. * so we should create one.
*/ */
acpi_get_parent(handle, &parent); ret = acpi_bus_add(handle, &device);
if (acpi_bus_get_device(parent, &parent_device)) if (ret)
parent_device = NULL;
ret = acpi_bus_add(&device, parent_device, handle,
ACPI_BUS_TYPE_DEVICE);
if (ret) {
pr_debug("error adding bus, %x\n", -ret); pr_debug("error adding bus, %x\n", -ret);
return NULL;
}
} }
return device; return device;
} }

View file

@ -677,28 +677,6 @@ static int is_processor_present(acpi_handle handle)
return 0; 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, static void acpi_processor_hotplug_notify(acpi_handle handle,
u32 event, void *data) u32 event, void *data)
{ {
@ -721,7 +699,7 @@ static void acpi_processor_hotplug_notify(acpi_handle handle,
if (!acpi_bus_get_device(handle, &device)) if (!acpi_bus_get_device(handle, &device))
break; break;
result = acpi_processor_device_add(handle, &device); result = acpi_bus_add(handle, &device);
if (result) { if (result) {
acpi_handle_err(handle, "Unable to add the device\n"); acpi_handle_err(handle, "Unable to add the device\n");
break; break;

View file

@ -1650,25 +1650,33 @@ static int acpi_bus_scan(acpi_handle handle, bool start,
return ret; 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 and (probably recently hot-plugged) * Scan a given ACPI tree (probably recently hot-plugged) and create and add
* create and add found devices. * found devices.
* *
* If no devices were found -ENODEV is returned which does not * If no devices were found, -ENODEV is returned, but it does not mean that
* mean that this is a real error, there just have been no suitable * there has been a real error. There just have been no suitable ACPI objects
* ACPI objects in the table trunk from which the kernel could create * in the table trunk from which the kernel could create a device and add an
* a device and add an appropriate driver. * 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(acpi_handle handle, struct acpi_device **ret)
int
acpi_bus_add(struct acpi_device **child,
struct acpi_device *parent, acpi_handle handle, int type)
{ {
int err; int err;
err = acpi_bus_scan(handle, false, child); err = acpi_bus_scan(handle, false, ret);
if (err) if (err)
return err; return err;

View file

@ -734,15 +734,9 @@ static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
*/ */
static int acpiphp_bus_add(struct acpiphp_func *func) static int acpiphp_bus_add(struct acpiphp_func *func)
{ {
acpi_handle phandle; struct acpi_device *device;
struct acpi_device *device, *pdevice;
int ret_val; 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)) { if (!acpi_bus_get_device(func->handle, &device)) {
dbg("bus exists... trim\n"); dbg("bus exists... trim\n");
/* this shouldn't be in here, so remove /* 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); dbg("acpi_bus_trim return %x\n", ret_val);
} }
ret_val = acpi_bus_add(&device, pdevice, func->handle, ret_val = acpi_bus_add(func->handle, &device);
ACPI_BUS_TYPE_DEVICE);
if (ret_val) { if (ret_val) {
dbg("error adding bus, %x\n", dbg("error adding bus, %x\n",
-ret_val); -ret_val);
@ -1129,8 +1122,7 @@ static int acpiphp_configure_bridge (acpi_handle handle)
static void handle_bridge_insertion(acpi_handle handle, u32 type) static void handle_bridge_insertion(acpi_handle handle, u32 type)
{ {
struct acpi_device *device, *pdevice; struct acpi_device *device;
acpi_handle phandle;
if ((type != ACPI_NOTIFY_BUS_CHECK) && if ((type != ACPI_NOTIFY_BUS_CHECK) &&
(type != ACPI_NOTIFY_DEVICE_CHECK)) { (type != ACPI_NOTIFY_DEVICE_CHECK)) {
@ -1138,12 +1130,7 @@ static void handle_bridge_insertion(acpi_handle handle, u32 type)
return; return;
} }
acpi_get_parent(handle, &phandle); if (acpi_bus_add(handle, &device)) {
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)) {
err("cannot add bridge to acpi list\n"); err("cannot add bridge to acpi list\n");
return; return;
} }

View file

@ -448,8 +448,7 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
if (ACPI_SUCCESS(ret) && if (ACPI_SUCCESS(ret) &&
(adr>>16) == (slot->device_num + 1)) { (adr>>16) == (slot->device_num + 1)) {
ret = acpi_bus_add(&device, pdevice, chandle, ret = acpi_bus_add(chandle, &device);
ACPI_BUS_TYPE_DEVICE);
if (ACPI_FAILURE(ret)) { if (ACPI_FAILURE(ret)) {
printk(KERN_ERR "%s: acpi_bus_add " printk(KERN_ERR "%s: acpi_bus_add "
"failed (0x%x) for slot %d " "failed (0x%x) for slot %d "

View file

@ -358,8 +358,7 @@ static inline int acpi_bus_generate_proc_event(struct acpi_device *device, u8 ty
#endif #endif
int acpi_bus_register_driver(struct acpi_driver *driver); int acpi_bus_register_driver(struct acpi_driver *driver);
void acpi_bus_unregister_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, int acpi_bus_add(acpi_handle handle, struct acpi_device **ret);
acpi_handle handle, int type);
void acpi_bus_hot_remove_device(void *context); void acpi_bus_hot_remove_device(void *context);
int acpi_bus_trim(struct acpi_device *start, int rmdevice); int acpi_bus_trim(struct acpi_device *start, int rmdevice);
acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd); acpi_status acpi_bus_get_ejd(acpi_handle handle, acpi_handle * ejd);