diff options
Diffstat (limited to 'drivers/ipack/ipack.c')
-rw-r--r-- | drivers/ipack/ipack.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/ipack/ipack.c b/drivers/ipack/ipack.c index 4f913aa88971..6e066c53acce 100644 --- a/drivers/ipack/ipack.c +++ b/drivers/ipack/ipack.c | |||
@@ -227,7 +227,7 @@ static int ipack_unregister_bus_member(struct device *dev, void *data) | |||
227 | struct ipack_bus_device *bus = data; | 227 | struct ipack_bus_device *bus = data; |
228 | 228 | ||
229 | if (idev->bus == bus) | 229 | if (idev->bus == bus) |
230 | ipack_device_unregister(idev); | 230 | ipack_device_del(idev); |
231 | 231 | ||
232 | return 1; | 232 | return 1; |
233 | } | 233 | } |
@@ -419,7 +419,7 @@ out: | |||
419 | return ret; | 419 | return ret; |
420 | } | 420 | } |
421 | 421 | ||
422 | int ipack_device_register(struct ipack_device *dev) | 422 | int ipack_device_init(struct ipack_device *dev) |
423 | { | 423 | { |
424 | int ret; | 424 | int ret; |
425 | 425 | ||
@@ -428,6 +428,7 @@ int ipack_device_register(struct ipack_device *dev) | |||
428 | dev->dev.parent = dev->bus->parent; | 428 | dev->dev.parent = dev->bus->parent; |
429 | dev_set_name(&dev->dev, | 429 | dev_set_name(&dev->dev, |
430 | "ipack-dev.%u.%u", dev->bus->bus_nr, dev->slot); | 430 | "ipack-dev.%u.%u", dev->bus->bus_nr, dev->slot); |
431 | device_initialize(&dev->dev); | ||
431 | 432 | ||
432 | if (dev->bus->ops->set_clockrate(dev, 8)) | 433 | if (dev->bus->ops->set_clockrate(dev, 8)) |
433 | dev_warn(&dev->dev, "failed to switch to 8 MHz operation for reading of device ID.\n"); | 434 | dev_warn(&dev->dev, "failed to switch to 8 MHz operation for reading of device ID.\n"); |
@@ -447,19 +448,22 @@ int ipack_device_register(struct ipack_device *dev) | |||
447 | dev_err(&dev->dev, "failed to switch to 32 MHz operation.\n"); | 448 | dev_err(&dev->dev, "failed to switch to 32 MHz operation.\n"); |
448 | } | 449 | } |
449 | 450 | ||
450 | ret = device_register(&dev->dev); | 451 | return 0; |
451 | if (ret < 0) | 452 | } |
452 | kfree(dev->id); | 453 | EXPORT_SYMBOL_GPL(ipack_device_init); |
453 | 454 | ||
454 | return ret; | 455 | int ipack_device_add(struct ipack_device *dev) |
456 | { | ||
457 | return device_add(&dev->dev); | ||
455 | } | 458 | } |
456 | EXPORT_SYMBOL_GPL(ipack_device_register); | 459 | EXPORT_SYMBOL_GPL(ipack_device_add); |
457 | 460 | ||
458 | void ipack_device_unregister(struct ipack_device *dev) | 461 | void ipack_device_del(struct ipack_device *dev) |
459 | { | 462 | { |
460 | device_unregister(&dev->dev); | 463 | device_del(&dev->dev); |
464 | ipack_put_device(dev); | ||
461 | } | 465 | } |
462 | EXPORT_SYMBOL_GPL(ipack_device_unregister); | 466 | EXPORT_SYMBOL_GPL(ipack_device_del); |
463 | 467 | ||
464 | void ipack_get_device(struct ipack_device *dev) | 468 | void ipack_get_device(struct ipack_device *dev) |
465 | { | 469 | { |