Re: davinci vpif_capture

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/31/2013 06:15 AM, Prabhakar Lad wrote:
On Fri, Aug 30, 2013 at 10:09 PM, Darryl <ddegraff@xxxxxxxxx> wrote:
I am working on an application involving the davinci using the vpif.  My
board file has the inputs configured to use VPIF_IF_RAW_BAYER if_type.
When my application starts up, I have it enumerate the formats
(VIDIOC_ENUM_FMT) and it indicates that the only available format is
"YCbCr4:2:2 YC Planar" (from vpif_enum_fmt_vid_cap).  It looks to me that
the culprit is vpif_open().

struct channel_obj.vpifparams.iface is initialized at vpif_probe() time in
the function vpif_set_input.  Open the device file (/dev/video0) overwrites
this.  I suspect that it is __not__ supposed to do this, since I don't see
any method for restoring the iface.

NAK, Ideally the application should go in the following manner,
you open the device say example /dev/video0 , then you issue
a VIDIOC_ENUMINPUT IOCTL,  this will enumerate the inputs
then you do  VIDIOC_S_INPUT this will select the input device
so when this IOCTL is called vpif_s_input() is called in vpif_capture
driver this function will internally call the vpif_set_input() which
will set the iface for you on line 1327.

Is there a document or documents where I can find this "following manner"? I've read through a lot of v4l docs, but none seem to suggest an ordered sequence of ioctl calls.


In the probe it calls vpif_set_input() to select input 0 as a default device.

Hope this clears your doubt.

Regards,
--Prabhakar Lad

I'm using linux-3.10.4, but the problem appears in 3.10.9, 3.11.rc7 and a
version I checked out at
https://git.kernel.org/cgit/linux/kernel/git/nsekhar/linux-davinci.git. I
have supplied a patch for 3.10.9.


diff -pubwr
linux-3.10.9-pristine/drivers/media/platform/davinci/vpif_capture.c
linux-3.10.9/drivers/media/platform/davinci/vpif_capture.c
--- linux-3.10.9-pristine/drivers/media/platform/davinci/vpif_capture.c
2013-08-20 17:40:47.000000000 -0500
+++ linux-3.10.9/drivers/media/platform/davinci/vpif_capture.c  2013-08-30
11:18:29.000000000 -0500
@@ -914,9 +914,11 @@ static int vpif_open(struct file *filep)
      fh->initialized = 0;
      /* If decoder is not initialized. initialize it */
      if (!ch->initialized) {
+        struct vpif_interface iface = ch->vpifparams.iface;
          fh->initialized = 1;
          ch->initialized = 1;
          memset(&(ch->vpifparams), 0, sizeof(struct vpif_params));
+        ch->vpifparams.iface = iface;
      }
      /* Increment channel usrs counter */
      ch->usrs++;




_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@xxxxxxxxxxxxxxxxxxxx
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux