Lines Matching refs:vdev
48 struct video_device *vdev = to_video_device(cd); in index_show() local
50 return sprintf(buf, "%i\n", vdev->index); in index_show()
57 struct video_device *vdev = to_video_device(cd); in dev_debug_show() local
59 return sprintf(buf, "%i\n", vdev->dev_debug); in dev_debug_show()
65 struct video_device *vdev = to_video_device(cd); in dev_debug_store() local
73 vdev->dev_debug = value; in dev_debug_store()
81 struct video_device *vdev = to_video_device(cd); in name_show() local
83 return sprintf(buf, "%.*s\n", (int)sizeof(vdev->name), vdev->name); in name_show()
127 static inline void devnode_set(struct video_device *vdev) in devnode_set() argument
129 set_bit(vdev->num, devnode_bits(vdev->vfl_type)); in devnode_set()
133 static inline void devnode_clear(struct video_device *vdev) in devnode_clear() argument
135 clear_bit(vdev->num, devnode_bits(vdev->vfl_type)); in devnode_clear()
139 static inline int devnode_find(struct video_device *vdev, int from, int to) in devnode_find() argument
141 return find_next_zero_bit(devnode_bits(vdev->vfl_type), to, from); in devnode_find()
150 void video_device_release(struct video_device *vdev) in video_device_release() argument
152 kfree(vdev); in video_device_release()
156 void video_device_release_empty(struct video_device *vdev) in video_device_release_empty() argument
163 static inline void video_get(struct video_device *vdev) in video_get() argument
165 get_device(&vdev->dev); in video_get()
168 static inline void video_put(struct video_device *vdev) in video_put() argument
170 put_device(&vdev->dev); in video_put()
176 struct video_device *vdev = to_video_device(cd); in v4l2_device_release() local
177 struct v4l2_device *v4l2_dev = vdev->v4l2_dev; in v4l2_device_release()
180 if (WARN_ON(video_devices[vdev->minor] != vdev)) { in v4l2_device_release()
187 video_devices[vdev->minor] = NULL; in v4l2_device_release()
190 cdev_del(vdev->cdev); in v4l2_device_release()
193 vdev->cdev = NULL; in v4l2_device_release()
196 devnode_clear(vdev); in v4l2_device_release()
201 if (v4l2_dev->mdev && vdev->vfl_dir != VFL_DIR_M2M) { in v4l2_device_release()
203 media_devnode_remove(vdev->intf_devnode); in v4l2_device_release()
204 if (vdev->entity.function != MEDIA_ENT_F_UNKNOWN) in v4l2_device_release()
205 media_device_unregister_entity(&vdev->entity); in v4l2_device_release()
222 vdev->release(vdev); in v4l2_device_release()
307 struct video_device *vdev = video_devdata(filp); in v4l2_read() local
310 if (!vdev->fops->read) in v4l2_read()
312 if (video_is_registered(vdev)) in v4l2_read()
313 ret = vdev->fops->read(filp, buf, sz, off); in v4l2_read()
314 if ((vdev->dev_debug & V4L2_DEV_DEBUG_FOP) && in v4l2_read()
315 (vdev->dev_debug & V4L2_DEV_DEBUG_STREAMING)) in v4l2_read()
317 video_device_node_name(vdev), sz, ret); in v4l2_read()
324 struct video_device *vdev = video_devdata(filp); in v4l2_write() local
327 if (!vdev->fops->write) in v4l2_write()
329 if (video_is_registered(vdev)) in v4l2_write()
330 ret = vdev->fops->write(filp, buf, sz, off); in v4l2_write()
331 if ((vdev->dev_debug & V4L2_DEV_DEBUG_FOP) && in v4l2_write()
332 (vdev->dev_debug & V4L2_DEV_DEBUG_STREAMING)) in v4l2_write()
334 video_device_node_name(vdev), sz, ret); in v4l2_write()
340 struct video_device *vdev = video_devdata(filp); in v4l2_poll() local
343 if (!vdev->fops->poll) in v4l2_poll()
345 if (video_is_registered(vdev)) in v4l2_poll()
346 res = vdev->fops->poll(filp, poll); in v4l2_poll()
347 if (vdev->dev_debug & V4L2_DEV_DEBUG_POLL) in v4l2_poll()
349 video_device_node_name(vdev), res); in v4l2_poll()
355 struct video_device *vdev = video_devdata(filp); in v4l2_ioctl() local
358 if (vdev->fops->unlocked_ioctl) { in v4l2_ioctl()
359 if (video_is_registered(vdev)) in v4l2_ioctl()
360 ret = vdev->fops->unlocked_ioctl(filp, cmd, arg); in v4l2_ioctl()
374 struct video_device *vdev = video_devdata(filp); in v4l2_get_unmapped_area() local
377 if (!vdev->fops->get_unmapped_area) in v4l2_get_unmapped_area()
379 if (!video_is_registered(vdev)) in v4l2_get_unmapped_area()
381 ret = vdev->fops->get_unmapped_area(filp, addr, len, pgoff, flags); in v4l2_get_unmapped_area()
382 if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP) in v4l2_get_unmapped_area()
384 video_device_node_name(vdev), ret); in v4l2_get_unmapped_area()
391 struct video_device *vdev = video_devdata(filp); in v4l2_mmap() local
394 if (!vdev->fops->mmap) in v4l2_mmap()
396 if (video_is_registered(vdev)) in v4l2_mmap()
397 ret = vdev->fops->mmap(filp, vm); in v4l2_mmap()
398 if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP) in v4l2_mmap()
400 video_device_node_name(vdev), ret); in v4l2_mmap()
407 struct video_device *vdev; in v4l2_open() local
412 vdev = video_devdata(filp); in v4l2_open()
414 if (vdev == NULL || !video_is_registered(vdev)) { in v4l2_open()
419 video_get(vdev); in v4l2_open()
421 if (vdev->fops->open) { in v4l2_open()
422 if (video_is_registered(vdev)) in v4l2_open()
423 ret = vdev->fops->open(filp); in v4l2_open()
428 if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP) in v4l2_open()
430 video_device_node_name(vdev), ret); in v4l2_open()
433 video_put(vdev); in v4l2_open()
440 struct video_device *vdev = video_devdata(filp); in v4l2_release() local
449 if (vdev->fops->release) { in v4l2_release()
450 if (v4l2_device_supports_requests(vdev->v4l2_dev)) { in v4l2_release()
451 mutex_lock(&vdev->v4l2_dev->mdev->req_queue_mutex); in v4l2_release()
452 ret = vdev->fops->release(filp); in v4l2_release()
453 mutex_unlock(&vdev->v4l2_dev->mdev->req_queue_mutex); in v4l2_release()
455 ret = vdev->fops->release(filp); in v4l2_release()
459 if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP) in v4l2_release()
461 video_device_node_name(vdev)); in v4l2_release()
465 video_put(vdev); in v4l2_release()
498 static int get_index(struct video_device *vdev) in get_index() argument
509 video_devices[i]->v4l2_dev == vdev->v4l2_dev) { in get_index()
534 static void determine_valid_ioctls(struct video_device *vdev) in determine_valid_ioctls() argument
544 const struct v4l2_ioctl_ops *ops = vdev->ioctl_ops; in determine_valid_ioctls()
545 bool is_vid = vdev->vfl_type == VFL_TYPE_VIDEO && in determine_valid_ioctls()
546 (vdev->device_caps & vid_caps); in determine_valid_ioctls()
547 bool is_vbi = vdev->vfl_type == VFL_TYPE_VBI; in determine_valid_ioctls()
548 bool is_radio = vdev->vfl_type == VFL_TYPE_RADIO; in determine_valid_ioctls()
549 bool is_sdr = vdev->vfl_type == VFL_TYPE_SDR; in determine_valid_ioctls()
550 bool is_tch = vdev->vfl_type == VFL_TYPE_TOUCH; in determine_valid_ioctls()
551 bool is_meta = vdev->vfl_type == VFL_TYPE_VIDEO && in determine_valid_ioctls()
552 (vdev->device_caps & meta_caps); in determine_valid_ioctls()
553 bool is_rx = vdev->vfl_dir != VFL_DIR_TX; in determine_valid_ioctls()
554 bool is_tx = vdev->vfl_dir != VFL_DIR_RX; in determine_valid_ioctls()
555 bool is_io_mc = vdev->device_caps & V4L2_CAP_IO_MC; in determine_valid_ioctls()
569 if (vdev->ctrl_handler || ops->vidioc_queryctrl) in determine_valid_ioctls()
571 if (vdev->ctrl_handler || ops->vidioc_query_ext_ctrl) in determine_valid_ioctls()
573 if (vdev->ctrl_handler || ops->vidioc_g_ctrl || ops->vidioc_g_ext_ctrls) in determine_valid_ioctls()
575 if (vdev->ctrl_handler || ops->vidioc_s_ctrl || ops->vidioc_s_ext_ctrls) in determine_valid_ioctls()
577 if (vdev->ctrl_handler || ops->vidioc_g_ext_ctrls) in determine_valid_ioctls()
579 if (vdev->ctrl_handler || ops->vidioc_s_ext_ctrls) in determine_valid_ioctls()
581 if (vdev->ctrl_handler || ops->vidioc_try_ext_ctrls) in determine_valid_ioctls()
583 if (vdev->ctrl_handler || ops->vidioc_querymenu) in determine_valid_ioctls()
779 bitmap_andnot(vdev->valid_ioctls, valid_ioctls, vdev->valid_ioctls, in determine_valid_ioctls()
783 static int video_register_media_controller(struct video_device *vdev) in video_register_media_controller() argument
792 if (!vdev->v4l2_dev->mdev || vdev->vfl_dir == VFL_DIR_M2M) in video_register_media_controller()
795 vdev->entity.obj_type = MEDIA_ENTITY_TYPE_VIDEO_DEVICE; in video_register_media_controller()
796 vdev->entity.function = MEDIA_ENT_F_UNKNOWN; in video_register_media_controller()
798 switch (vdev->vfl_type) { in video_register_media_controller()
801 vdev->entity.function = MEDIA_ENT_F_IO_V4L; in video_register_media_controller()
805 vdev->entity.function = MEDIA_ENT_F_IO_VBI; in video_register_media_controller()
809 vdev->entity.function = MEDIA_ENT_F_IO_SWRADIO; in video_register_media_controller()
813 vdev->entity.function = MEDIA_ENT_F_IO_V4L; in video_register_media_controller()
831 if (vdev->entity.function != MEDIA_ENT_F_UNKNOWN) { in video_register_media_controller()
832 vdev->entity.name = vdev->name; in video_register_media_controller()
835 vdev->entity.info.dev.major = VIDEO_MAJOR; in video_register_media_controller()
836 vdev->entity.info.dev.minor = vdev->minor; in video_register_media_controller()
838 ret = media_device_register_entity(vdev->v4l2_dev->mdev, in video_register_media_controller()
839 &vdev->entity); in video_register_media_controller()
847 vdev->intf_devnode = media_devnode_create(vdev->v4l2_dev->mdev, in video_register_media_controller()
850 vdev->minor); in video_register_media_controller()
851 if (!vdev->intf_devnode) { in video_register_media_controller()
852 media_device_unregister_entity(&vdev->entity); in video_register_media_controller()
856 if (vdev->entity.function != MEDIA_ENT_F_UNKNOWN) { in video_register_media_controller()
859 link = media_create_intf_link(&vdev->entity, in video_register_media_controller()
860 &vdev->intf_devnode->intf, in video_register_media_controller()
864 media_devnode_remove(vdev->intf_devnode); in video_register_media_controller()
865 media_device_unregister_entity(&vdev->entity); in video_register_media_controller()
876 int __video_register_device(struct video_device *vdev, in __video_register_device() argument
889 vdev->minor = -1; in __video_register_device()
892 if (WARN_ON(!vdev->release)) in __video_register_device()
895 if (WARN_ON(!vdev->v4l2_dev)) in __video_register_device()
898 if (WARN_ON(type != VFL_TYPE_SUBDEV && !vdev->device_caps)) in __video_register_device()
902 spin_lock_init(&vdev->fh_lock); in __video_register_device()
903 INIT_LIST_HEAD(&vdev->fh_list); in __video_register_device()
932 vdev->vfl_type = type; in __video_register_device()
933 vdev->cdev = NULL; in __video_register_device()
934 if (vdev->dev_parent == NULL) in __video_register_device()
935 vdev->dev_parent = vdev->v4l2_dev->dev; in __video_register_device()
936 if (vdev->ctrl_handler == NULL) in __video_register_device()
937 vdev->ctrl_handler = vdev->v4l2_dev->ctrl_handler; in __video_register_device()
940 if (vdev->prio == NULL) in __video_register_device()
941 vdev->prio = &vdev->v4l2_dev->prio; in __video_register_device()
972 nr = devnode_find(vdev, nr == -1 ? 0 : nr, minor_cnt); in __video_register_device()
974 nr = devnode_find(vdev, 0, minor_cnt); in __video_register_device()
995 vdev->minor = i + minor_offset; in __video_register_device()
996 vdev->num = nr; in __video_register_device()
999 if (WARN_ON(video_devices[vdev->minor])) { in __video_register_device()
1004 devnode_set(vdev); in __video_register_device()
1005 vdev->index = get_index(vdev); in __video_register_device()
1006 video_devices[vdev->minor] = vdev; in __video_register_device()
1009 if (vdev->ioctl_ops) in __video_register_device()
1010 determine_valid_ioctls(vdev); in __video_register_device()
1013 vdev->cdev = cdev_alloc(); in __video_register_device()
1014 if (vdev->cdev == NULL) { in __video_register_device()
1018 vdev->cdev->ops = &v4l2_fops; in __video_register_device()
1019 vdev->cdev->owner = owner; in __video_register_device()
1020 ret = cdev_add(vdev->cdev, MKDEV(VIDEO_MAJOR, vdev->minor), 1); in __video_register_device()
1023 kfree(vdev->cdev); in __video_register_device()
1024 vdev->cdev = NULL; in __video_register_device()
1029 vdev->dev.class = &video_class; in __video_register_device()
1030 vdev->dev.devt = MKDEV(VIDEO_MAJOR, vdev->minor); in __video_register_device()
1031 vdev->dev.parent = vdev->dev_parent; in __video_register_device()
1032 dev_set_name(&vdev->dev, "%s%d", name_base, vdev->num); in __video_register_device()
1033 ret = device_register(&vdev->dev); in __video_register_device()
1040 vdev->dev.release = v4l2_device_release; in __video_register_device()
1042 if (nr != -1 && nr != vdev->num && warn_if_nr_in_use) in __video_register_device()
1044 name_base, nr, video_device_node_name(vdev)); in __video_register_device()
1047 v4l2_device_get(vdev->v4l2_dev); in __video_register_device()
1050 ret = video_register_media_controller(vdev); in __video_register_device()
1053 set_bit(V4L2_FL_REGISTERED, &vdev->flags); in __video_register_device()
1059 if (vdev->cdev) in __video_register_device()
1060 cdev_del(vdev->cdev); in __video_register_device()
1061 video_devices[vdev->minor] = NULL; in __video_register_device()
1062 devnode_clear(vdev); in __video_register_device()
1065 vdev->minor = -1; in __video_register_device()
1077 void video_unregister_device(struct video_device *vdev) in video_unregister_device() argument
1080 if (!vdev || !video_is_registered(vdev)) in video_unregister_device()
1087 clear_bit(V4L2_FL_REGISTERED, &vdev->flags); in video_unregister_device()
1089 device_unregister(&vdev->dev); in video_unregister_device()