Lines Matching refs:v4l2_dev
33 int v4l2_device_register(struct device *dev, struct v4l2_device *v4l2_dev) in v4l2_device_register() argument
35 if (v4l2_dev == NULL) in v4l2_device_register()
38 INIT_LIST_HEAD(&v4l2_dev->subdevs); in v4l2_device_register()
39 spin_lock_init(&v4l2_dev->lock); in v4l2_device_register()
40 v4l2_prio_init(&v4l2_dev->prio); in v4l2_device_register()
41 kref_init(&v4l2_dev->ref); in v4l2_device_register()
43 v4l2_dev->dev = dev; in v4l2_device_register()
46 if (WARN_ON(!v4l2_dev->name[0])) in v4l2_device_register()
52 if (!v4l2_dev->name[0]) in v4l2_device_register()
53 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), "%s %s", in v4l2_device_register()
56 dev_set_drvdata(dev, v4l2_dev); in v4l2_device_register()
63 struct v4l2_device *v4l2_dev = in v4l2_device_release() local
66 if (v4l2_dev->release) in v4l2_device_release()
67 v4l2_dev->release(v4l2_dev); in v4l2_device_release()
70 int v4l2_device_put(struct v4l2_device *v4l2_dev) in v4l2_device_put() argument
72 return kref_put(&v4l2_dev->ref, v4l2_device_release); in v4l2_device_put()
76 int v4l2_device_set_name(struct v4l2_device *v4l2_dev, const char *basename, in v4l2_device_set_name() argument
83 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), in v4l2_device_set_name()
86 snprintf(v4l2_dev->name, sizeof(v4l2_dev->name), in v4l2_device_set_name()
92 void v4l2_device_disconnect(struct v4l2_device *v4l2_dev) in v4l2_device_disconnect() argument
94 if (v4l2_dev->dev == NULL) in v4l2_device_disconnect()
97 if (dev_get_drvdata(v4l2_dev->dev) == v4l2_dev) in v4l2_device_disconnect()
98 dev_set_drvdata(v4l2_dev->dev, NULL); in v4l2_device_disconnect()
99 put_device(v4l2_dev->dev); in v4l2_device_disconnect()
100 v4l2_dev->dev = NULL; in v4l2_device_disconnect()
104 void v4l2_device_unregister(struct v4l2_device *v4l2_dev) in v4l2_device_unregister() argument
110 if (v4l2_dev == NULL || !v4l2_dev->name[0]) in v4l2_device_unregister()
112 v4l2_device_disconnect(v4l2_dev); in v4l2_device_unregister()
115 list_for_each_entry_safe(sd, next, &v4l2_dev->subdevs, list) { in v4l2_device_unregister()
141 v4l2_dev->name[0] = '\0'; in v4l2_device_unregister()
145 int v4l2_device_register_subdev(struct v4l2_device *v4l2_dev, in v4l2_device_register_subdev() argument
154 if (v4l2_dev == NULL || sd == NULL || !sd->name[0]) in v4l2_device_register_subdev()
158 WARN_ON(sd->v4l2_dev != NULL); in v4l2_device_register_subdev()
167 sd->owner_v4l2_dev = v4l2_dev->dev && v4l2_dev->dev->driver && in v4l2_device_register_subdev()
168 sd->owner == v4l2_dev->dev->driver->owner; in v4l2_device_register_subdev()
173 sd->v4l2_dev = v4l2_dev; in v4l2_device_register_subdev()
181 err = v4l2_ctrl_add_handler(v4l2_dev->ctrl_handler, sd->ctrl_handler, NULL); in v4l2_device_register_subdev()
187 if (v4l2_dev->mdev) { in v4l2_device_register_subdev()
188 err = media_device_register_entity(v4l2_dev->mdev, entity); in v4l2_device_register_subdev()
194 spin_lock(&v4l2_dev->lock); in v4l2_device_register_subdev()
195 list_add_tail(&sd->list, &v4l2_dev->subdevs); in v4l2_device_register_subdev()
196 spin_unlock(&v4l2_dev->lock); in v4l2_device_register_subdev()
206 sd->v4l2_dev = NULL; in v4l2_device_register_subdev()
218 int v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev) in v4l2_device_register_subdev_nodes() argument
227 list_for_each_entry(sd, &v4l2_dev->subdevs, list) { in v4l2_device_register_subdev_nodes()
239 vdev->v4l2_dev = v4l2_dev; in v4l2_device_register_subdev_nodes()
258 list_for_each_entry(sd, &v4l2_dev->subdevs, list) { in v4l2_device_register_subdev_nodes()
270 struct v4l2_device *v4l2_dev; in v4l2_device_unregister_subdev() local
273 if (sd == NULL || sd->v4l2_dev == NULL) in v4l2_device_unregister_subdev()
276 v4l2_dev = sd->v4l2_dev; in v4l2_device_unregister_subdev()
278 spin_lock(&v4l2_dev->lock); in v4l2_device_unregister_subdev()
280 spin_unlock(&v4l2_dev->lock); in v4l2_device_unregister_subdev()
284 sd->v4l2_dev = NULL; in v4l2_device_unregister_subdev()
287 if (v4l2_dev->mdev) { in v4l2_device_unregister_subdev()