From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org,
Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
Mike Isely <isely@isely.net>,
Hans Verkuil <hans.verkuil@cisco.com>
Subject: Re: [REVIEW PATCH 8/9] f_uvc: use v4l2_dev instead of the deprecated parent field.
Date: Tue, 11 Jun 2013 14:25:12 +0200 [thread overview]
Message-ID: <6690009.papTS4CFX7@avalon> (raw)
In-Reply-To: <201306111413.34031.hverkuil@xs4all.nl>
Hi Hans,
On Tuesday 11 June 2013 14:13:33 Hans Verkuil wrote:
> On Mon 10 June 2013 20:50:42 Laurent Pinchart wrote:
> > On Monday 10 June 2013 14:48:37 Hans Verkuil wrote:
> > > From: Hans Verkuil <hans.verkuil@cisco.com>
> > >
> > > Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> > > ---
> > >
> > > drivers/usb/gadget/f_uvc.c | 8 +++++++-
> > > drivers/usb/gadget/uvc.h | 2 ++
> > > 2 files changed, 9 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/usb/gadget/f_uvc.c b/drivers/usb/gadget/f_uvc.c
> > > index 38dcedd..762e82f 100644
> > > --- a/drivers/usb/gadget/f_uvc.c
> > > +++ b/drivers/usb/gadget/f_uvc.c
> > > @@ -413,7 +413,7 @@ uvc_register_video(struct uvc_device *uvc)
> > >
> > > if (video == NULL)
> > >
> > > return -ENOMEM;
> > >
> > > - video->parent = &cdev->gadget->dev;
> > > + video->v4l2_dev = &uvc->v4l2_dev;
> > >
> > > video->fops = &uvc_v4l2_fops;
> > > video->release = video_device_release;
> > > strlcpy(video->name, cdev->gadget->name, sizeof(video->name));
> > >
> > > @@ -570,6 +570,7 @@ uvc_function_unbind(struct usb_configuration *c,
> > > struct
> > > usb_function *f) INFO(cdev, "uvc_function_unbind\n");
> > >
> > > video_unregister_device(uvc->vdev);
> > >
> > > + v4l2_device_unregister(&uvc->v4l2_dev);
> > >
> > > uvc->control_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) if ((ret = usb_function_deactivate(f)) < 0)
> > >
> > > goto error;
> > >
> > > + if (v4l2_device_register(&cdev->gadget->dev, &uvc->v4l2_dev)) {
> > > + printk(KERN_INFO "v4l2_device_register failed\n");
> > > + goto error;
> > > + }
> > > +
> > >
> > > /* Initialise video. */
> > > ret = uvc_video_init(&uvc->video);
> > > if (ret < 0)
> >
> > Shouldn't you add the corresponding cleanup code in the error path at the
> > end of the function ?
>
> Not really necessary as long as there are no subdevices registered. Still,
> it is probably safer to do it anyway.
v4l2_device_unregister() calls v4l2_device_disconnect(), which in turn calls
put_device() on the underlying device. Even if no subdev is registered I think
that's required.
> > > diff --git a/drivers/usb/gadget/uvc.h b/drivers/usb/gadget/uvc.h
> > > index 817e9e1..7a9111d 100644
> > > --- a/drivers/usb/gadget/uvc.h
> > > +++ b/drivers/usb/gadget/uvc.h
> > > @@ -57,6 +57,7 @@ struct uvc_event
> > >
> > > #include <linux/videodev2.h>
> > > #include <linux/version.h>
> > > #include <media/v4l2-fh.h>
> > >
> > > +#include <media/v4l2-device.h>
> > >
> > > #include "uvc_queue.h"
> > >
> > > @@ -145,6 +146,7 @@ enum uvc_state
> > >
> > > struct uvc_device
> > > {
> > >
> > > struct video_device *vdev;
> > >
> > > + struct v4l2_device v4l2_dev;
> > >
> > > enum uvc_state state;
> > > struct usb_function func;
> > > struct uvc_video video;
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-06-11 12:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-10 12:48 [REVIEW PATCH 0/9] Use v4l2_dev instead of parent Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 1/9] soc_camera: replace vdev->parent by vdev->v4l2_dev Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 2/9] cx23885-417: use v4l2_dev instead of the deprecated parent field Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 3/9] zoran: " Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 4/9] sn9c102: " Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 5/9] saa7164: " Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 6/9] omap24xxcam: " Hans Verkuil
2013-06-11 11:42 ` Sakari Ailus
2013-06-10 12:48 ` [REVIEW PATCH 7/9] pvrusb2: " Hans Verkuil
2013-06-10 12:48 ` [REVIEW PATCH 8/9] f_uvc: " Hans Verkuil
2013-06-10 18:50 ` Laurent Pinchart
2013-06-11 12:13 ` Hans Verkuil
2013-06-11 12:25 ` Laurent Pinchart [this message]
2013-06-10 12:48 ` [REVIEW PATCH 9/9] v4l2: remove parent from v4l2 core Hans Verkuil
2013-06-10 18:51 ` Laurent Pinchart
2013-06-11 11:44 ` Sakari Ailus
2013-06-11 16:53 ` Ezequiel Garcia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6690009.papTS4CFX7@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=g.liakhovetski@gmx.de \
--cc=hans.verkuil@cisco.com \
--cc=hverkuil@xs4all.nl \
--cc=isely@isely.net \
--cc=linux-media@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox