Lines Matching refs:v4l2_dev
17 int v4l2_device_register(struct device *dev, struct v4l2_device *v4l2_dev) in v4l2_device_register() argument
19 if (v4l2_dev == NULL) in v4l2_device_register()
22 INIT_LIST_HEAD(&v4l2_dev->subdevs); in v4l2_device_register()
23 spin_lock_init(&v4l2_dev->lock); in v4l2_device_register()
24 v4l2_prio_init(&v4l2_dev->prio); in v4l2_device_register()
25 kref_init(&v4l2_dev->ref); in v4l2_device_register()
27 v4l2_dev->dev = dev; in v4l2_device_register()
30 if (WARN_ON(!v4l2_dev->name[0])) in v4l2_device_register()
36 if (!v4l2_dev->name[0]) in v4l2_device_register()
37 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), "%s %s", in v4l2_device_register()
40 dev_set_drvdata(dev, v4l2_dev); in v4l2_device_register()
47 struct v4l2_device *v4l2_dev = in v4l2_device_release() local
50 if (v4l2_dev->release) in v4l2_device_release()
51 v4l2_dev->release(v4l2_dev); in v4l2_device_release()
54 int v4l2_device_put(struct v4l2_device *v4l2_dev) in v4l2_device_put() argument
56 return kref_put(&v4l2_dev->ref, v4l2_device_release); in v4l2_device_put()
60 int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename, in v4l2_device_set_name() argument
67 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), in v4l2_device_set_name()
70 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), in v4l2_device_set_name()
76 void v4l2_device_disconnect(struct v4l2_device *v4l2_dev) in v4l2_device_disconnect() argument
78 if (v4l2_dev->dev == NULL) in v4l2_device_disconnect()
81 if (dev_get_drvdata(v4l2_dev->dev) == v4l2_dev) in v4l2_device_disconnect()
82 dev_set_drvdata(v4l2_dev->dev, NULL); in v4l2_device_disconnect()
83 put_device(v4l2_dev->dev); in v4l2_device_disconnect()
84 v4l2_dev->dev = NULL; in v4l2_device_disconnect()
88 void v4l2_device_unregister(struct v4l2_device *v4l2_dev) in v4l2_device_unregister() argument
94 if (v4l2_dev == NULL || !v4l2_dev->name[0]) in v4l2_device_unregister()
96 v4l2_device_disconnect(v4l2_dev); in v4l2_device_unregister()
99 list_for_each_entry_safe(sd, next, &v4l2_dev->subdevs, list) { in v4l2_device_unregister()
107 v4l2_dev->name[0] = '\0'; in v4l2_device_unregister()
111 int v4l2_device_register_subdev(struct v4l2_device *v4l2_dev, in v4l2_device_register_subdev() argument
117 if (!v4l2_dev || !sd || sd->v4l2_dev || !sd->name[0]) in v4l2_device_register_subdev()
127 sd->owner_v4l2_dev = v4l2_dev->dev && v4l2_dev->dev->driver && in v4l2_device_register_subdev()
128 sd->owner == v4l2_dev->dev->driver->owner; in v4l2_device_register_subdev()
133 sd->v4l2_dev = v4l2_dev; in v4l2_device_register_subdev()
135 err = v4l2_ctrl_add_handler(v4l2_dev->ctrl_handler, sd->ctrl_handler, in v4l2_device_register_subdev()
142 if (v4l2_dev->mdev) { in v4l2_device_register_subdev()
143 err = media_device_register_entity(v4l2_dev->mdev, &sd->entity); in v4l2_device_register_subdev()
155 spin_lock(&v4l2_dev->lock); in v4l2_device_register_subdev()
156 list_add_tail(&sd->list, &v4l2_dev->subdevs); in v4l2_device_register_subdev()
157 spin_unlock(&v4l2_dev->lock); in v4l2_device_register_subdev()
168 sd->v4l2_dev = NULL; in v4l2_device_register_subdev()
189 int __v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev, in __v4l2_device_register_subdev_nodes() argument
199 list_for_each_entry(sd, &v4l2_dev->subdevs, list) { in __v4l2_device_register_subdev_nodes()
215 vdev->v4l2_dev = v4l2_dev; in __v4l2_device_register_subdev_nodes()
234 if (vdev->v4l2_dev->mdev) { in __v4l2_device_register_subdev_nodes()
251 list_for_each_entry(sd, &v4l2_dev->subdevs, list) { in __v4l2_device_register_subdev_nodes()
263 struct v4l2_device *v4l2_dev; in v4l2_device_unregister_subdev() local
266 if (sd == NULL || sd->v4l2_dev == NULL) in v4l2_device_unregister_subdev()
269 v4l2_dev = sd->v4l2_dev; in v4l2_device_unregister_subdev()
271 spin_lock(&v4l2_dev->lock); in v4l2_device_unregister_subdev()
273 spin_unlock(&v4l2_dev->lock); in v4l2_device_unregister_subdev()
277 sd->v4l2_dev = NULL; in v4l2_device_unregister_subdev()
280 if (v4l2_dev->mdev) { in v4l2_device_unregister_subdev()