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()
150 v4l2_dev->name[0] = '\0'; in v4l2_device_unregister()
154 int v4l2_device_register_subdev(struct v4l2_device *v4l2_dev, in v4l2_device_register_subdev() argument
163 if (!v4l2_dev || !sd || sd->v4l2_dev || !sd->name[0]) in v4l2_device_register_subdev()
173 sd->owner_v4l2_dev = v4l2_dev->dev && v4l2_dev->dev->driver && in v4l2_device_register_subdev()
174 sd->owner == v4l2_dev->dev->driver->owner; in v4l2_device_register_subdev()
179 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()
200 spin_lock(&v4l2_dev->lock); in v4l2_device_register_subdev()
201 list_add_tail(&sd->list, &v4l2_dev->subdevs); in v4l2_device_register_subdev()
202 spin_unlock(&v4l2_dev->lock); in v4l2_device_register_subdev()
213 sd->v4l2_dev = NULL; in v4l2_device_register_subdev()
225 int v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev) in v4l2_device_register_subdev_nodes() argument
234 list_for_each_entry(sd, &v4l2_dev->subdevs, list) { in v4l2_device_register_subdev_nodes()
249 vdev->v4l2_dev = v4l2_dev; in v4l2_device_register_subdev_nodes()
265 if (vdev->v4l2_dev->mdev) { in v4l2_device_register_subdev_nodes()
282 list_for_each_entry(sd, &v4l2_dev->subdevs, list) { in v4l2_device_register_subdev_nodes()
294 struct v4l2_device *v4l2_dev; in v4l2_device_unregister_subdev() local
297 if (sd == NULL || sd->v4l2_dev == NULL) in v4l2_device_unregister_subdev()
300 v4l2_dev = sd->v4l2_dev; in v4l2_device_unregister_subdev()
302 spin_lock(&v4l2_dev->lock); in v4l2_device_unregister_subdev()
304 spin_unlock(&v4l2_dev->lock); in v4l2_device_unregister_subdev()
308 sd->v4l2_dev = NULL; in v4l2_device_unregister_subdev()
311 if (v4l2_dev->mdev) { in v4l2_device_unregister_subdev()