Lines Matching refs:v4l2_dev

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