Re: [RFC V1 4/8] smi2021: Add smi2021_v4l2.c

From: Hans Verkuil
Date: Wed Mar 20 2013 - 06:22:51 EST


On Wed 20 March 2013 11:16:26 Jon Arne JÃrgensen wrote:
> On Wed, Mar 20, 2013 at 11:10:57AM +0100, Hans Verkuil wrote:
> > On Wed 20 March 2013 10:48:42 Jon Arne JÃrgensen wrote:
> > > On Mon, Mar 18, 2013 at 09:29:07AM +0100, Hans Verkuil wrote:
> > > > On Thu March 14 2013 15:07:00 Jon Arne JÃrgensen wrote:
> > > > > This file is responsible for registering the device with the v4l2 subsystem,
> > > > > and the communication with v4l2.
> > > > > Most of the v4l2 ioctls are just passed on to vidbuf2.
> > > > >
> > > > > Signed-off-by: Jon Arne JÃrgensen <jonarne@xxxxxxxxxx>
> > > > > ---
> > > > > drivers/media/usb/smi2021/smi2021_v4l2.c | 566 +++++++++++++++++++++++++++++++
> > > > > 1 file changed, 566 insertions(+)
> > > > > create mode 100644 drivers/media/usb/smi2021/smi2021_v4l2.c
> > > > >
> > > > > diff --git a/drivers/media/usb/smi2021/smi2021_v4l2.c b/drivers/media/usb/smi2021/smi2021_v4l2.c
> > > > > new file mode 100644
> > > > > index 0000000..d402093
> > > > > --- /dev/null
> > > > > +++ b/drivers/media/usb/smi2021/smi2021_v4l2.c
> > > > > @@ -0,0 +1,566 @@
> > > >
> > > > ...
> > > >
> > > > > +int smi2021_vb2_setup(struct smi2021_dev *dev)
> > > > > +{
> > > > > + int rc;
> > > > > + struct vb2_queue *q;
> > > > > +
> > > > > + q = &dev->vb_vidq;
> > > > > + q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
> > > > > + q->io_modes = VB2_READ | VB2_MMAP | VB2_USERPTR;
> > > > > + q->drv_priv = dev;
> > > > > + q->buf_struct_size = sizeof(struct smi2021_buffer);
> > > > > + q->ops = &smi2021_video_qops;
> > > > > + q->mem_ops = &vb2_vmalloc_memops;
> > > >
> > > > q->timestamp_type isn't filled in.
> > > >
> > > I'll add that
> > >
> > > > For that matter, neither the sequence number nor the timestamp are filled in
> > > > in v4l2_buffer during capturing.
> > > >
> > > > You need to add a buf_finish op to fill those in (use v4l2_timestamp() for the
> > > > timestamp).
> > > >
> > >
> > > I'm filling these variables in the smi2021_buffer_done function in
> > > smi2021_video.c?
> >
> > Ah, I missed that. Sorry about that.
> >
> > Just replace gettimeofday with v4l2_timestamp(), though. We no longer use
> > gettimeofday() in new drivers, but instead we use the monotonic clock.
> >
>
> No problem,
> I'll fix this.

BTW, I've tried your driver with my somagic USB device, but it doesn't work
for me. I get -71 errors on the USB bus. I do seem to have all the right chips
including the gm7113 (saa7113 replacement).

I need to double-check under Windows whether it is really working...

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/