diff options
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/driver.c | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 5b3542b7d3..d4066fc178 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c @@ -133,21 +133,21 @@ int register_device(struct device_d *new_device) INIT_LIST_HEAD(&new_device->parameters); INIT_LIST_HEAD(&new_device->active); - if (!new_device->bus) - return 0; - - if (!new_device->parent) { - new_device->parent = &new_device->bus->dev; - dev_add_child(new_device->parent, new_device); - } + if (new_device->bus) { + if (!new_device->parent) + new_device->parent = &new_device->bus->dev; - list_add_tail(&new_device->bus_list, &new_device->bus->device_list); + list_add_tail(&new_device->bus_list, &new_device->bus->device_list); - bus_for_each_driver(new_device->bus, drv) { - if (!match(drv, new_device)) - break; + bus_for_each_driver(new_device->bus, drv) { + if (!match(drv, new_device)) + break; + } } + if (new_device->parent) + list_add_tail(&new_device->sibling, &new_device->parent->children); + return 0; } EXPORT_SYMBOL(register_device); @@ -186,16 +186,6 @@ int unregister_device(struct device_d *old_dev) } EXPORT_SYMBOL(unregister_device); -int dev_add_child(struct device_d *dev, struct device_d *child) -{ - child->parent = dev; - - list_add_tail(&child->sibling, &dev->children); - - return 0; -} -EXPORT_SYMBOL(dev_add_child); - struct driver_d *get_driver_by_name(const char *name) { struct driver_d *drv; |