diff options
-rw-r--r-- | drivers/base/class.c | 17 | ||||
-rw-r--r-- | drivers/base/core.c | 17 | ||||
-rw-r--r-- | include/linux/device.h | 2 |
3 files changed, 17 insertions, 19 deletions
diff --git a/drivers/base/class.c b/drivers/base/class.c index 0ff267a248db..2e705f6abb4c 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c | |||
@@ -893,23 +893,6 @@ void class_interface_unregister(struct class_interface *class_intf) | |||
893 | class_put(parent); | 893 | class_put(parent); |
894 | } | 894 | } |
895 | 895 | ||
896 | int virtual_device_parent(struct device *dev) | ||
897 | { | ||
898 | if (!dev->class) | ||
899 | return -ENODEV; | ||
900 | |||
901 | if (!dev->class->virtual_dir) { | ||
902 | static struct kobject *virtual_dir = NULL; | ||
903 | |||
904 | if (!virtual_dir) | ||
905 | virtual_dir = kobject_add_dir(&devices_subsys.kset.kobj, "virtual"); | ||
906 | dev->class->virtual_dir = kobject_add_dir(virtual_dir, dev->class->name); | ||
907 | } | ||
908 | |||
909 | dev->kobj.parent = dev->class->virtual_dir; | ||
910 | return 0; | ||
911 | } | ||
912 | |||
913 | int __init classes_init(void) | 896 | int __init classes_init(void) |
914 | { | 897 | { |
915 | int retval; | 898 | int retval; |
diff --git a/drivers/base/core.c b/drivers/base/core.c index d4f35d8902a2..dbcd40b987d2 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -384,6 +384,23 @@ void device_initialize(struct device *dev) | |||
384 | device_init_wakeup(dev, 0); | 384 | device_init_wakeup(dev, 0); |
385 | } | 385 | } |
386 | 386 | ||
387 | static int virtual_device_parent(struct device *dev) | ||
388 | { | ||
389 | if (!dev->class) | ||
390 | return -ENODEV; | ||
391 | |||
392 | if (!dev->class->virtual_dir) { | ||
393 | static struct kobject *virtual_dir = NULL; | ||
394 | |||
395 | if (!virtual_dir) | ||
396 | virtual_dir = kobject_add_dir(&devices_subsys.kset.kobj, "virtual"); | ||
397 | dev->class->virtual_dir = kobject_add_dir(virtual_dir, dev->class->name); | ||
398 | } | ||
399 | |||
400 | dev->kobj.parent = dev->class->virtual_dir; | ||
401 | return 0; | ||
402 | } | ||
403 | |||
387 | /** | 404 | /** |
388 | * device_add - add device to device hierarchy. | 405 | * device_add - add device to device hierarchy. |
389 | * @dev: device. | 406 | * @dev: device. |
diff --git a/include/linux/device.h b/include/linux/device.h index b00e02711393..00b29e0c5ce0 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -440,8 +440,6 @@ extern struct device *device_create(struct class *cls, struct device *parent, | |||
440 | __attribute__((format(printf,4,5))); | 440 | __attribute__((format(printf,4,5))); |
441 | extern void device_destroy(struct class *cls, dev_t devt); | 441 | extern void device_destroy(struct class *cls, dev_t devt); |
442 | 442 | ||
443 | extern int virtual_device_parent(struct device *dev); | ||
444 | |||
445 | /* | 443 | /* |
446 | * Platform "fixup" functions - allow the platform to have their say | 444 | * Platform "fixup" functions - allow the platform to have their say |
447 | * about devices and actions that the general device layer doesn't | 445 | * about devices and actions that the general device layer doesn't |