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

Capturing from MT9J003 Camera on DM3730 using Previewer and Resizer



Linux-media list,

We've recently had some success capturing from the MT9J003 Aptina
camera on a DM3730 board (custom board).  We have been able to prove
this functionality by adapting the MT9P031 driver from
Linux-3.0.tar.gz (we downloaded the tarball and patched from there).
The exact URL for that version of the kernel is:

http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.bz2

We have been working off of this kernel and using the media-ctl and
yavta applications to manipulate pipelines and test out the capture
interface.  Everything seems to work okay up through capturing from
the CCDC output (/dev/video2), but once we try to send the data
through the previewer or resizer, the app hangs at "start streaming"
or the call to the DQBUF ioctl.

The resolution we're capturing is a little odd: 912x688 (that happens
to be the recommended resolution according to one of Aptina's
manuals).  The pipeline that works looks like this:

================Start CCDC Pipeline==========================
#! /bin/sh

#
# Configure media-controller pipeline for MT9J003
#
media-ctl -r
media-ctl -l '"mt9j003 2-0010":0->"OMAP3 ISP CCDC":0[1]'
media-ctl -l '"OMAP3 ISP CCDC":1->"OMAP3 ISP CCDC output":0[1]'
media-ctl -f '"mt9j003 2-0010":0[SGRBG12 916x688]'
media-ctl -f '"OMAP3 ISP CCDC":0[SGRBG10 916x688]'
media-ctl -f '"OMAP3 ISP CCDC":1[SGRBG10 916x688]'

./yavta -p -f SGRBG10 -s 912x688 -n 4 --capture=5 -F `media-ctl -e
"OMAP3 ISP CCDC output"` --file=./images/img#.raw
================End CCDC Pipeline======================
=====

That spits out nice images which I can demosaic using post-processing
tools, and I get an actual image.

The following pipeline does not work properly:
================Start Preview Pipeline=========================
#! /bin/sh

#
# Configure media-controller pipeline for MT9J003
#
media-ctl -r
media-ctl -l '"mt9j003 2-0010":0->"OMAP3 ISP CCDC":0[1]'
media-ctl -l '"OMAP3 ISP CCDC":2->"OMAP3 ISP preview":0[1]'
media-ctl -l '"OMAP3 ISP preview":1->"OMAP3 ISP preview output":0[1]'
media-ctl -f '"mt9j003 2-0010":0[SGRBG12 916x688]'
media-ctl -f  '"OMAP3 ISP CCDC":0 [SGRBG10 916x688]'
media-ctl -f  '"OMAP3 ISP CCDC":1 [SGRBG10 916x688]'
media-ctl -f  '"OMAP3 ISP preview":0 [SGRBG10 916x687]'
media-ctl -f  '"OMAP3 ISP preview":1 [UYVY 898x679]'

# Now capture:
./yavta -p -f UYVY -s 898x679 -n 4 --capture=5 -F `media-ctl -e "OMAP3
ISP preview output"` --file=./images/img#.uyvy
=================End Preview Pipeline==========================

When I run this preview capture script (from /dev/video4), the
application hangs after going into streaming mode on the sensor.
Here's the output when running the preview pipeline script (with some
annotations, and some printk's inserted):

=================Start output=================================
root@cobra3530p7303:~# ./grab_preview_yavta
***** preview_link_setup: drivers/media/video/omap3isp/isppreview.c, 1923
***** preview_link_setup: drivers/media/video/omap3isp/isppreview.c, 1923


cobra_mt9j003_cam_reset: Resetting MT9J003 camera, active = 0
Setting MT9J003 Coarse Int Time to 24000
  Confirmed: set coarse int time to 24000
mt9j003_set_format:754 Called mt9j003_get_format
***** preview_init_formats: drivers/media/video/omap3isp/isppreview.c, 1861
***** preview_set_format: drivers/media/video/omap3isp/isppreview.c, 1826
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 0 (0=sink(input), 1=src(output))
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 1 (0=sink(input), 1=src(output))
***** preview_set_format: drivers/media/video/omap3isp/isppreview.c, 1826
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 0 (0=sink(input), 1=src(output))
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 1 (0=sink(input), 1=src(output))
***** preview_init_formats: drivers/media/video/omap3isp/isppreview.c, 1861
***** preview_set_format: drivers/media/video/omap3isp/isppreview.c, 1826
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 0 (0=sink(input), 1=src(output))
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 1 (0=sink(input), 1=src(output))
***** preview_set_format: drivers/media/video/omap3isp/isppreview.c, 1826
***** preview_try_format: drivers/media/video/omap3isp/isppreview.c, 1633
    * pad = 1 (0=sink(input), 1=src(output))
cobra_mt9j003_cam_reset: Resetting MT9J003 camera, active = 0
Number of arguments = 12
Last argument = /dev/video4
Setting MT9J003 Coarse Int Time to 24000
  Confirmed: set coarse int time to 24000
Device /dev/vide  mbus size: w=898, h=679
o4 opened.
Devi  Selected 16 from formats list
ce `OMAP3 ISP pr  min_bpl = 1796eview output' on
isp_video_mbus_to_pix returning 28
 `media' is a video capture device.
Video format set: UYVY (59565955) 898x679 (stride 1824) buffer size 1238496
Video format: UYVY (59565955) 898x679 (stride 1824) buffer size 1238496
4 buffers requested.
length: 1238496 offset: 0
Buffer 0 mapped at address 0x402e5000.
length: 1238496 offset: 1241088
Buffer 1 mapped at address 0x404e1000.
length: 1238496 offset: 2482176
Buffer 2 mapped at address 0x4070c000.
length: 1238496 offset: 3723264
Buffer 3 mapped at address 0x40913000.
Press enter to start capture

***** preview_get_format: drivers/media/video/omap3isp/isppreview.c, 1803
  mbus size: w=898, h=679
  Selected 16 from formats list
  min_bpl = 1796  isp_video_mbus_to_pix returning 28
  isp_video_mbus_to_pix returned 28
  isp_video_check_format returned 28
  SinkPad = OMAP3 ISP preview, 0
***** preview_get_format: drivers/media/video/omap3isp/isppreview.c, 1803
  SourcePad = OMAP3 ISP CCDC, 2
  SinkPad = OMAP3 ISP CCDC, 0
  SourcePad = mt9j003 2-0010, 0
mt9j003_get_format:711 Called mt9j003_get_format
***** preview_set_stream: drivers/media/video/omap3isp/isppreview.c, 1541
    * enable = 1 (1=continuous,2=single-shot)
mt9j003_get_format:711 Called mt9j003_get_format
  mbus size: w=912, h=688
  Selected 10 from formats list
  min_bpl = 1824  isp_video_mbus_to_pix returning 0
mt9j003_s_stream:609 Called mt9j003_s_stream
mt9j003_set_params:598 Called mt9j003_set_params
mt9j003_set_software_standby: Going from standby into streaming (reset
reg now = 0x14)

(At this point the app hangs, so eventually I hit Ctrl-C and it exits
out without getting any buffers)

***** preview_set_stream: drivers/media/video/omap3isp/isppreview.c, 1541
    * enable = 0 (1=continuous,2=single-shot)
omap3isp omap3isp: CCDC stop timeout!
ISR - total: 0, matches: 0, restarts: 0
0 total buffers, 0 failures
mt9j003_s_stream:609 Called mt9j003_s_stream
mt9j003_set_software_standby: Going from streaming into standby (reset
reg now = 0x10)
=================End output=========================================

I have a couple of questions to help me figure out next steps to resolving this:

1) It appears that the pipeline is getting set up correctly.  Is there
a way to print out debugging info on the previewer to determine if
data is getting to that section of the pipeline?
2) Interrupts do not appear to be triggering when I do the Preview
capture, but they definitely trigger when I do the CCDC capture
pipeline.  Why would they not trigger in the preview case?
3) It is a bit tricky to know the right resolution input/output sizes
for different stages of the pipeline (CCDC output, preview input,
etc).  Is there a way of solving for these without manually testing
out pipelines and seeing what fails?
4) Are there known issues with the 3.0 version of kernel?  Will some
or all of these problems be resolved if I rebase my code off of the
latest stable release?  Is there an alternative tree that I should be
using to test out omap3isp?

Thanks,

Neil Johnson
--
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


[Linux Input]     [Video for Linux]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Photos]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Devices]     [Yosemite Backpacking]

Add to Google Powered by Linux