Commit b60f9aa1 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] f_uvc: add v4l2_device and replace parent with v4l2_dev

This driver did not yet support struct v4l2_device, so add it. This
make it possible to replace the deprecated parent field with the
v4l2_dev field, allowing the eventual removal of the parent field.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent a28fbd04
...@@ -413,7 +413,7 @@ uvc_register_video(struct uvc_device *uvc) ...@@ -413,7 +413,7 @@ uvc_register_video(struct uvc_device *uvc)
if (video == NULL) if (video == NULL)
return -ENOMEM; return -ENOMEM;
video->parent = &cdev->gadget->dev; video->v4l2_dev = &uvc->v4l2_dev;
video->fops = &uvc_v4l2_fops; video->fops = &uvc_v4l2_fops;
video->release = video_device_release; video->release = video_device_release;
strlcpy(video->name, cdev->gadget->name, sizeof(video->name)); strlcpy(video->name, cdev->gadget->name, sizeof(video->name));
...@@ -570,6 +570,7 @@ uvc_function_unbind(struct usb_configuration *c, struct usb_function *f) ...@@ -570,6 +570,7 @@ uvc_function_unbind(struct usb_configuration *c, struct usb_function *f)
INFO(cdev, "uvc_function_unbind\n"); INFO(cdev, "uvc_function_unbind\n");
video_unregister_device(uvc->vdev); video_unregister_device(uvc->vdev);
v4l2_device_unregister(&uvc->v4l2_dev);
uvc->control_ep->driver_data = NULL; uvc->control_ep->driver_data = NULL;
uvc->video.ep->driver_data = NULL; uvc->video.ep->driver_data = NULL;
...@@ -697,6 +698,11 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) ...@@ -697,6 +698,11 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f)
if ((ret = usb_function_deactivate(f)) < 0) if ((ret = usb_function_deactivate(f)) < 0)
goto error; goto error;
if (v4l2_device_register(&cdev->gadget->dev, &uvc->v4l2_dev)) {
printk(KERN_INFO "v4l2_device_register failed\n");
goto error;
}
/* Initialise video. */ /* Initialise video. */
ret = uvc_video_init(&uvc->video); ret = uvc_video_init(&uvc->video);
if (ret < 0) if (ret < 0)
...@@ -712,6 +718,7 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f) ...@@ -712,6 +718,7 @@ uvc_function_bind(struct usb_configuration *c, struct usb_function *f)
return 0; return 0;
error: error:
v4l2_device_unregister(&uvc->v4l2_dev);
if (uvc->vdev) if (uvc->vdev)
video_device_release(uvc->vdev); video_device_release(uvc->vdev);
......
...@@ -57,6 +57,7 @@ struct uvc_event ...@@ -57,6 +57,7 @@ struct uvc_event
#include <linux/videodev2.h> #include <linux/videodev2.h>
#include <linux/version.h> #include <linux/version.h>
#include <media/v4l2-fh.h> #include <media/v4l2-fh.h>
#include <media/v4l2-device.h>
#include "uvc_queue.h" #include "uvc_queue.h"
...@@ -145,6 +146,7 @@ enum uvc_state ...@@ -145,6 +146,7 @@ enum uvc_state
struct uvc_device struct uvc_device
{ {
struct video_device *vdev; struct video_device *vdev;
struct v4l2_device v4l2_dev;
enum uvc_state state; enum uvc_state state;
struct usb_function func; struct usb_function func;
struct uvc_video video; struct uvc_video video;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment