Are there documents for the Video Driver available?

Are there documents for the Video Driver available?

Are there Video Driver documents available? We try to send video stream to an external monitor.It's been difficult
due to the lack of documentation. We assumed that the saa7115 driver as well as the video driver work correctly. But the video does not get to the screen. Blank screen/no data is displayed.

14 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

No response to my question. I assume there is no document available for the video driver. Do we have a at least a demonstration that the video driver has been tested and is working at all? Anyone in the contest has used the driver? We have been trying various ways of making the driver working, but without success. I we know the the driver is not working, then, we can change our project not to use the driver.

Can ZLG please offer some demo codes to verify if the video driver works or not?

You can use gstreamer v4l2src to test it."gst-launch-0.10 v4l2src ! queue ! xvimagesink"Any way the video driver's API is V4L2.The video driver just supports PAL camera

That's what we are using with no result. Can anyone confirm that this driver does indeed work? Debug info can be provided if needed.Thanks,Chris

I confirm this driver does indeed work!

Do you have any documentation about the correct usage of driver? When we used the gstreamer command that you posted, we recieve an error "could not negotiate format". However, if we replace 'queue' with 'ffmpegcolorspace" there is no error and everything seems to work fine (there are no error messages) except that nothing is displayed on the screen. Replacing v4l2src with testvideosrc works as expected (becuase it's a test source).The driver intialization seems to work correctly as well (from looking at dmesg with printk statements in the code). I'll post more debug information this evening.Any ideas?Thank you for any help you can provide,Chris

When calling gstreamer, I see a message from the application "1910 map pfn RAM range req uncached-minus for 25800000-25866000, got write-back"I see the following log messages from the driver that seem like errors:ADDR1 mask not set!drop a frameADDR1 mask not set!drop a frameADDR1 mask not set!drop a frame.....Continues on while the video should be being displayed (but isn't).Any help is appreciated.Thanks,Chris

Here is a log file. It looks like the interrupt bit is never getting set. Any help is greatly appreciated.[ 1146.416249] zlge6x5c-mfd 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16[ 1146.416447] zlge6x5c-mfd 0000:01:00.0: irq 43 for MSI/MSI-X[ 1146.416486] zlge6x5c-mfd 0000:01:00.0: setting latency timer to 64[ 1146.418098] SYSID: 0x12030801[ 1146.586338] i2c i2c-2: Not I2C compliant: can't read SCL[ 1146.586356] i2c i2c-2: Bus may be unreliable[ 1146.586374] i2c-gpio i2c-gpio.2: using pins 66 (SDA) and 67 (SCL, no clock stretching)[ 1153.580749] Linux video capture interface: v2.00[ 1153.623000] Video probe[ 1153.623017] zlge6x5c-video: video probe[ 1153.623027] zlge6x5c-video: got platform data[ 1153.623037] zlge6x5c-video: got ctrl resource[ 1153.623046] zlge6x5c-video: got dma resource[ 1153.623064] zlge6x5c-video: able to request ctrl region[ 1153.623076] zlge6x5c-video: able to request dma region[ 1153.623140] zlge6x5c-video: able to ioremap ctrl registers[ 1153.623173] zlge6x5c-video: able to ioremap dma registers[ 1153.623186] Calling read_ctrlreg[ 1153.623198] Calling write_dmareg[ 1153.623207] Calling read_dmareg[ 1153.623218] zlge6x5c-video: ctrl and dma register verify passed[ 1153.623229] zlge6x5c-video: init video dma queues[ 1153.623241] get i2c adapter[ 1153.685318] saa7115 2-0025: saa7113 found (1f7113d0e100000) @ 0x4a (i2c-gpio2)[ 1153.726748] attach saa7113 chip[ 1153.726768] saa7113 chip attached[ 1153.726778] Allocate memory for video device[ 1153.726794] Allocate memory for video device worked[ 1153.726805] initializ locks[ 1153.727801] video_register_device worked[ 1153.727819] enable video and dma irq in pcie core[ 1153.727836] enable video and dma irq in pcie core worked[ 1153.727845] softreset dma ctrl register twice[ 1153.727855] Calling write_dmareg[ 1153.727863] Calling write_dmareg[ 1153.727873] zlge6x5c video capture driver version : 1.0[ 1153.745331] vidoe open starting[ 1153.745347] zlge6x5c-video: video open (minor=0)[ 1153.745358] zlge6x5c-video: open minor=0 type=vid-cap users=1[ 1153.745365] Allocate and initialize per filehandle data[ 1153.745376] zlge6x5c-video: pixelformat known:'UYVY'[ 1153.745385] zlge6x5c-video: Open: fh=0xf54cd800, dev=0xeeef9500, dev->vidq=0xeeef9590[ 1153.745394] zlge6x5c-video: Open: list_empty queued=1[ 1153.745401] zlge6x5c-video: Open: list_empty active=1[ 1153.745424] vidioc_querycap[ 1153.745522] zlge6x5c_video_release[ 1153.745535] zlge6x5c-video: close (minor=0, users=0)[ 1198.759802] vidoe open starting[ 1198.759822] zlge6x5c-video: video open (minor=0)[ 1198.759838] zlge6x5c-video: open minor=0 type=vid-cap users=1[ 1198.759849] Allocate and initialize per filehandle data[ 1198.759865] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.759879] zlge6x5c-video: Open: fh=0xeeef9700, dev=0xeeef9500, dev->vidq=0xeeef9590[ 1198.759892] zlge6x5c-video: Open: list_empty queued=1[ 1198.759903] zlge6x5c-video: Open: list_empty active=1[ 1198.759945] vidioc_querycap[ 1198.759967] vidioc_g_fmt_cap[ 1198.759987] vidioc_g_std[ 1198.772136] vidioc_enum_fmt[ 1198.772155] zlge6x5c-video: enum_fmt index = 0[ 1198.772182] vidioc_enum_fmt[ 1198.772194] zlge6x5c-video: enum_fmt index = 1[ 1198.772211] vidioc_enum_fmt[ 1198.772225] vidioc_querycap[ 1198.772272] only one input in this driver[ 1198.772975] vidioc_querycap[ 1198.773005] only one input in this driver[ 1198.773194] only one input in this driver[ 1198.773207] returning pre-maturely?[ 1198.773799] vidioc_g_std[ 1198.774487] vidioc_enum_fmt[ 1198.774505] zlge6x5c-video: enum_fmt index = 0[ 1198.774534] vidioc_enum_fmt[ 1198.774546] zlge6x5c-video: enum_fmt index = 1[ 1198.774639] vidioc_try_fmt_cap[ 1198.774652] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.774665] zlge6x5c-video: pixelformat (0x59565955).[ 1198.774675] zlge6x5c-video: Field type invalid.[ 1198.774696] vidioc_try_fmt_cap[ 1198.774708] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.774720] zlge6x5c-video: pixelformat (0x59565955).[ 1198.774730] vidioc_try_fmt_cap end[ 1198.774752] vidioc_try_fmt_cap[ 1198.774763] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.774775] zlge6x5c-video: pixelformat (0x59565955).[ 1198.774785] zlge6x5c-video: Field type invalid.[ 1198.774806] vidioc_try_fmt_cap[ 1198.774817] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.774829] zlge6x5c-video: pixelformat (0x59565955).[ 1198.774839] vidioc_try_fmt_cap end[ 1198.774941] vidioc_try_fmt_cap[ 1198.774954] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.774966] zlge6x5c-video: pixelformat (0x59565955).[ 1198.774976] zlge6x5c-video: Field type invalid.[ 1198.774995] vidioc_try_fmt_cap[ 1198.775006] zlge6x5c-video: unknown pixelformat:'YU12'[ 1198.775018] zlge6x5c-video: Fourcc format (0x32315559) invalid.[ 1198.775041] vidioc_try_fmt_cap[ 1198.775052] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775064] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775074] vidioc_try_fmt_cap end[ 1198.775095] vidioc_try_fmt_cap[ 1198.775106] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775118] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775128] vidioc_try_fmt_cap end[ 1198.775154] vidioc_try_fmt_cap[ 1198.775165] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775177] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775187] zlge6x5c-video: Field type invalid.[ 1198.775206] vidioc_try_fmt_cap[ 1198.775216] zlge6x5c-video: unknown pixelformat:'YU12'[ 1198.775229] zlge6x5c-video: Fourcc format (0x32315559) invalid.[ 1198.775251] vidioc_try_fmt_cap[ 1198.775263] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775275] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775285] vidioc_try_fmt_cap end[ 1198.775305] vidioc_try_fmt_cap[ 1198.775316] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775328] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775338] vidioc_try_fmt_cap end[ 1198.775427] vidioc_try_fmt_cap[ 1198.775440] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775452] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775462] zlge6x5c-video: Field type invalid.[ 1198.775480] vidioc_try_fmt_cap[ 1198.775491] zlge6x5c-video: unknown pixelformat:'YV12'[ 1198.775504] zlge6x5c-video: Fourcc format (0x32315659) invalid.[ 1198.775526] vidioc_try_fmt_cap[ 1198.775538] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775549] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775559] vidioc_try_fmt_cap end[ 1198.775580] vidioc_try_fmt_cap[ 1198.775591] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775603] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775613] vidioc_try_fmt_cap end[ 1198.775638] vidioc_try_fmt_cap[ 1198.775650] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775662] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775672] zlge6x5c-video: Field type invalid.[ 1198.775690] vidioc_try_fmt_cap[ 1198.775701] zlge6x5c-video: unknown pixelformat:'YV12'[ 1198.775713] zlge6x5c-video: Fourcc format (0x32315659) invalid.[ 1198.775736] vidioc_try_fmt_cap[ 1198.775748] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775760] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775769] vidioc_try_fmt_cap end[ 1198.775790] vidioc_try_fmt_cap[ 1198.775801] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775813] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775823] vidioc_try_fmt_cap end[ 1198.775931] vidioc_try_fmt_cap[ 1198.775944] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.775956] zlge6x5c-video: pixelformat (0x59565955).[ 1198.775966] zlge6x5c-video: Field type invalid.[ 1198.775985] vidioc_try_fmt_cap[ 1198.775995] zlge6x5c-video: unknown pixelformat:'BGR3'[ 1198.776081] zlge6x5c-video: Fourcc format (0x33524742) invalid.[ 1198.776135] vidioc_try_fmt_cap[ 1198.776147] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.776159] zlge6x5c-video: pixelformat (0x59565955).[ 1198.776169] vidioc_try_fmt_cap end[ 1198.776190] vidioc_try_fmt_cap[ 1198.776201] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.776213] zlge6x5c-video: pixelformat (0x59565955).[ 1198.776222] vidioc_try_fmt_cap end[ 1198.776248] vidioc_try_fmt_cap[ 1198.776260] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.776272] zlge6x5c-video: pixelformat (0x59565955).[ 1198.776282] zlge6x5c-video: Field type invalid.[ 1198.786189] vidioc_try_fmt_cap[ 1198.786209] zlge6x5c-video: unknown pixelformat:'BGR3'[ 1198.786223] zlge6x5c-video: Fourcc format (0x33524742) invalid.[ 1198.786257] vidioc_try_fmt_cap[ 1198.786269] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786281] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786292] vidioc_try_fmt_cap end[ 1198.786312] vidioc_try_fmt_cap[ 1198.786324] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786335] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786345] vidioc_try_fmt_cap end[ 1198.786515] vidioc_try_fmt_cap[ 1198.786528] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786541] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786551] zlge6x5c-video: Field type invalid.[ 1198.786570] vidioc_try_fmt_cap[ 1198.786581] zlge6x5c-video: unknown pixelformat:'RGB3'[ 1198.786593] zlge6x5c-video: Fourcc format (0x33424752) invalid.[ 1198.786616] vidioc_try_fmt_cap[ 1198.786628] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786639] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786649] vidioc_try_fmt_cap end[ 1198.786671] vidioc_try_fmt_cap[ 1198.786682] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786694] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786704] vidioc_try_fmt_cap end[ 1198.786730] vidioc_try_fmt_cap[ 1198.786742] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786754] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786764] zlge6x5c-video: Field type invalid.[ 1198.786782] vidioc_try_fmt_cap[ 1198.786793] zlge6x5c-video: unknown pixelformat:'RGB3'[ 1198.786805] zlge6x5c-video: Fourcc format (0x33424752) invalid.[ 1198.786828] vidioc_try_fmt_cap[ 1198.786839] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786850] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786861] vidioc_try_fmt_cap end[ 1198.786882] vidioc_try_fmt_cap[ 1198.786893] zlge6x5c-video: pixelformat known:'UYVY'[ 1198.786905] zlge6x5c-video: pixelformat (0x59565955).[ 1198.786915] vidioc_try_fmt_cap end[ 1198.821399] vidioc_g_std[ 1198.821497] vidioc_reqbufs[ 1198.821511] Setting up the buffer[ 1198.821524] zlge6x5c-video: setup 2 buffers with size = 414720[ 1198.821612] vidioc_querybuf[ 1198.821648] video_mmap[ 1198.821660] zlge6x5c-video: mmap called, vma=0xf3653898[ 1198.822333] gst-launch-0.10:2146 map pfn RAM range req uncached-minus for 2a280000-2a2e6000, got write-back[ 1198.822372] zlge6x5c-video: vma start=0xb6d61000, size=417792, ret=0[ 1198.822472] vidioc_querybuf[ 1198.822520] video_mmap[ 1198.822532] zlge6x5c-video: mmap called, vma=0xf3653d10[ 1198.823302] gst-launch-0.10:2146 map pfn RAM range req uncached-minus for 2a300000-2a366000, got write-back[ 1198.823343] zlge6x5c-video: vma start=0xb6cfb000, size=417792, ret=0[ 1198.823464] vidioc_qbuf[ 1198.823482] prepare the buffer[ 1198.823493] Buffer is prepared[ 1198.823523] vidioc_qbuf[ 1198.823534] prepare the buffer[ 1198.823544] Buffer is prepared[ 1198.823568] vidioc_streamon[ 1198.823578] write to ctrlreg to enable video moduel[ 1198.823588] Calling write_ctrlreg[ 1198.823599] vidio start generating being called[ 1198.823610] zlge6x5c-video: video start generating[ 1198.836283] now return the videobuf_streamon result[ 1198.836297] zlge6x5c_video_kthread entry[ 1198.836305] zlge6x5c-video: kthread start running, next add_wait_queue[ 1198.836313] kthread after wait_queue[ 1198.836320] kthread_should_stop = true[ 1198.836330] buffer_queue[ 1198.836339] buffer_queue[ 1198.840205] zlge6x5c_video_poll[ 1198.864070] launch a dma read when video data is already[ 1198.864092] zlge6x5c-video: zlge6x5c_video_process called[ 1198.864104] Calling read_ctrlreg[ 1198.864115] zlge6x5c-video: ADDR1 mask not set![ 1198.864125] Calling write_ctrlreg[ 1198.864133] zlge6x5c-video: drop a frame[ 1198.864142] kthread_should_stop = true[ 1198.892087] launch a dma read when video data is already[ 1198.892109] zlge6x5c-video: zlge6x5c_video_process called[ 1198.892119] Calling read_ctrlreg[ 1198.892131] zlge6x5c-video: ADDR1 mask not set![ 1198.892140] Calling write_ctrlreg[ 1198.892149] zlge6x5c-video: drop a frame[ 1198.892159] kthread_should_stop = true[ 1198.920082] launch a dma read when video data is already[ 1198.920103] zlge6x5c-video: zlge6x5c_video_process called[ 1198.920115] Calling read_ctrlreg[ 1198.920127] zlge6x5c-video: ADDR1 mask not set![ 1198.920136] Calling write_ctrlreg[ 1198.920145] zlge6x5c-video: drop a frame[ 1198.920155] kthread_should_stop = true[ 1198.948088] launch a dma read when video data is already[ 1198.948110] zlge6x5c-video: zlge6x5c_video_process called[ 1198.948123] Calling read_ctrlreg[ 1198.948136] zlge6x5c-video: ADDR1 mask not set![ 1198.948146] Calling write_ctrlreg[ 1198.948155] zlge6x5c-video: drop a frame[ 1198.948165] kthread_should_stop = true[ 1198.976100] launch a dma read when video data is already[ 1198.976121] zlge6x5c-video: zlge6x5c_video_process called[ 1198.976134] Calling read_ctrlreg[ 1198.976146] zlge6x5c-video: ADDR1 mask not set![ 1198.976156] Calling write_ctrlreg[ 1198.976166] zlge6x5c-video: drop a frame[ 1198.976175] kthread_should_stop = true[ 1199.004145] launch a dma read when video data is already[ 1199.004166] zlge6x5c-video: zlge6x5c_video_process called[ 1199.004177] Calling read_ctrlreg[ 1199.004189] zlge6x5c-video: ADDR1 mask not set![ 1199.004199] Calling write_ctrlreg[ 1199.004208] zlge6x5c-video: drop a frame[ 1199.004218] kthread_should_stop = true[ 1199.032100] launch a dma read when video data is already[ 1199.032121] zlge6x5c-video: zlge6x5c_video_process called[ 1199.032133] Calling read_ctrlreg[ 1207.100129] zlge6x5c-video: ADDR1 mask not set![ 1207.100139] Calling write_ctrlreg[ 1207.100149] zlge6x5c-video: drop a frame[ 1207.100161] kthread_should_stop = true............... Continues indefinetly.......... unitl Ctrl-C to kill gstreamer..........[ 1207.107034] zlge6x5c_video_poll[ 1207.108085] vidioc_streamoff[ 1207.108103] zlge6x5c-video: video_stop_generating[ 1207.108114] zlge6x5c-video: video start generating[ 1207.108151] zlge6x5c-video: kthread stop running[ 1207.108205] release buffer[ 1207.108215] Free the buffer[ 1207.108224] release buffer[ 1207.108232] Free the buffer[ 1207.145328] zlge6x5c_video_release[ 1207.145349] release buffer[ 1207.145358] Free the buffer[ 1207.145368] release buffer[ 1207.145376] Free the buffer[ 1207.145387] zlge6x5c-video: close (minor=0, users=0)

which saa7115.c did you use?We fix the kernel's saa7115.c.Please update it.

I just downloaded the drivers from the website and they are identical to the ones we are using. The saa7115 driver is timestamped 03/11/2012. Any other suggestions? Other than the input being PAL, are there other requirements for the video input?Thanks,Chris

I tried using ffmpeg to capture from the v4l2 device but it gives me an error "ioctl set time per frame failed". For those who confirmed the driver works, could you provide steps to how you got it working?Thanks,Chris

Please send a email to, I want to send the saa7115.c to you.BTW, Can this forum postattachments?

Sorry, there are not any video driver documents. Would you please send your saa7115.c to me (

Leave a Comment

Please sign in to add a comment. Not a member? Join today