Lines Matching full:parent
26 /* Caller must hold parent unreg_sem read or write lock */
29 struct mdev_parent *parent = mdev->type->parent;
33 lockdep_assert_held(&parent->unreg_sem);
46 * mdev_register_parent: Register a device as parent for mdevs
47 * @parent: parent structure registered
48 * @dev: device structure representing parent device.
53 * Registers the @parent stucture as a parent for mdev types and thus mdev
59 int mdev_register_parent(struct mdev_parent *parent, struct device *dev,
67 memset(parent, 0, sizeof(*parent));
68 init_rwsem(&parent->unreg_sem);
69 parent->dev = dev;
70 parent->mdev_driver = mdev_driver;
71 parent->types = types;
72 parent->nr_types = nr_types;
73 atomic_set(&parent->available_instances, mdev_driver->max_instances);
75 ret = parent_create_sysfs_files(parent);
90 * mdev_unregister_parent : Unregister a parent device
91 * @parent: parent structure to unregister
93 void mdev_unregister_parent(struct mdev_parent *parent)
98 dev_info(parent->dev, "MDEV: Unregistering\n");
100 down_write(&parent->unreg_sem);
101 class_compat_remove_link(mdev_bus_compat_class, parent->dev);
102 device_for_each_child(parent->dev, NULL, mdev_device_remove_cb);
103 parent_remove_sysfs_files(parent);
104 up_write(&parent->unreg_sem);
106 kobject_uevent_env(&parent->dev->kobj, KOBJ_CHANGE, envp);
113 struct mdev_parent *parent = mdev->type->parent;
117 if (!parent->mdev_driver->get_available)
118 atomic_inc(&parent->available_instances);
132 struct mdev_parent *parent = type->parent;
133 struct mdev_driver *drv = parent->mdev_driver;
150 if (!atomic_read(&parent->available_instances)) {
154 atomic_dec(&parent->available_instances);
164 mdev->dev.parent = parent->dev;
180 /* Check if parent unregistration has started */
181 if (!down_read_trylock(&parent->unreg_sem)) {
200 up_read(&parent->unreg_sem);
207 up_read(&parent->unreg_sem);
216 struct mdev_parent *parent = mdev->type->parent;
237 /* Check if parent unregistration has started */
238 if (!down_read_trylock(&parent->unreg_sem))
242 up_read(&parent->unreg_sem);