Re: [PATCH v1 0/6] Add support of OV9655 camera

From: H. Nikolaus Schaller
Date: Sat Jul 01 2017 - 17:00:40 EST


Hi,

Firstly, it turned out that we also must have V4L2_CID_PIXEL_RATE for omap3isp compatibility
(see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?&id=0bc77f3f06fcf2ca7b7fad782d70926cd4d235f1 ).

And secondly, I have tried to add some SXGA config and it looks good by oscilloscope:
- XCLK ca. 24 MHz
- PCLK ca. 12 MHz
- HREF ca. 15.6 kHz negative going impulses
- VSYNC ca. 15 Hz (fps) positive going impulses
- D8 data line shows changing 0/1 patterns which depend on light falling in camera lens

But mplayer still shows a green screen and reports v4l2: select timeout.

I assume we should see a at least scrambled image but not a green screen,
even if sync position and polarity or data format would not be correctly
set up.

This time the omap3isp is fully initialized and does a register dump:

> root@letux:~# ./camera-demo sxga
> Camera: /dev/v4l-subdev8
> Setting mode sxga
> media-ctl -r
> media-ctl -l '"ov965x":0 -> "OMAP3 ISP CCDC":0[1]'
> media-ctl -l '"OMAP3 ISP CCDC":1 -> "OMAP3 ISP CCDC output":0[1]'
> media-ctl -V '"ov965x":0 [UYVY2X8 1280x1024]'
> media-ctl -V '"OMAP3 ISP CCDC":0 [UYVY2X8 1280x1024]'
> media-ctl -V '"OMAP3 ISP CCDC":1 [UYVY 1280x1024]'
> ### starting mplayer in sxga mode ###
> mplayer tv:// -vf rotate=2 -tv driver=v4l2:device=/dev/video2:outfmt=uyvy:width=1280:height=1024:fps=15 -vo x11

NOTE: /dev/video2 is $(media-ctl -e "OMAP3 ISP CCDC output")

> MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team
>
> Playing tv://.
> Detected file format: TV
> Selected driver: v4l2
> name: Video 4 Linux 2 input
> author: Martin Olschewski <olschewski@xxxxxxxxxxxxxxxx>
> comment: first try, more to come ;-)
> v4l2: ioctl get standard failed: Invalid argument

^^^ does not look harmful

> Selected device: OMAP3 ISP CCDC output
> Capabilities: video capture video output streaming
> supported norms:
> inputs: 0 = camera;
> Current input: 0
> Current format: unknown (0x0)
> tv.c: norm_from_string(pal): Bogus norm parameter, setting default.
> v4l2: ioctl enum norm failed: Inappropriate ioctl for device

^^^ does not look harmful

> Error: Cannot set norm!
> Selected input hasn't got a tuner!

^^^ does not look harmful

> v4l2: ioctl set mute failed: Inappropriate ioctl for device
> v4l2: ioctl query control failed: Inappropriate ioctl for device
> v4l2: ioctl query control failed: Inappropriate ioctl for device
> v4l2: ioctl query control failed: Inappropriate ioctl for device
> v4l2: ioctl query control failed: Inappropriate ioctl for device

^^^ does not look harmful

> [ 558.848815] configuring for 1280(2560)x1024
> [ 558.854003] omap3isp 480bc000.isp: -------------CCDC Register dump-------------
> [ 558.863983] omap3isp 480bc000.isp: ###CCDC PCR=0x00000000
> [ 558.870880] omap3isp 480bc000.isp: ###CCDC SYN_MODE=0x00071704
> [ 558.877227] omap3isp 480bc000.isp: ###CCDC HD_VD_WID=0x00000000
> [ 558.884613] omap3isp 480bc000.isp: ###CCDC PIX_LINES=0x00000000
> [ 558.891876] omap3isp 480bc000.isp: ###CCDC HORZ_INFO=0x000004ff
> [ 558.898132] omap3isp 480bc000.isp: ###CCDC VERT_START=0x00000000
> [ 558.905700] omap3isp 480bc000.isp: ###CCDC VERT_LINES=0x000003ff
> [ 558.913421] omap3isp 480bc000.isp: ###CCDC CULLING=0xffff00ff
> [ 558.920471] omap3isp 480bc000.isp: ###CCDC HSIZE_OFF=0x00000a00
> [ 558.926727] omap3isp 480bc000.isp: ###CCDC SDOFST=0x00000000
> [ 558.933929] omap3isp 480bc000.isp: ###CCDC SDR_ADDR=0x40000000
> [ 558.940948] omap3isp 480bc000.isp: ###CCDC CLAMP=0x00000010
> [ 558.946990] omap3isp 480bc000.isp: ###CCDC DCSUB=0x00000000
> [ 558.953948] omap3isp 480bc000.isp: ###CCDC COLPTN=0xbb11bb11
> [ 558.960845] omap3isp 480bc000.isp: ###CCDC BLKCMP=0x00000000
> [ 558.966888] omap3isp 480bc000.isp: ###CCDC FPC=0x00000000
> [ 558.973724] omap3isp 480bc000.isp: ###CCDC FPC_ADDR=0x00000000
> [ 558.982757] omap3isp 480bc000.isp: ###CCDC VDINT=0x03fe02aa
> [ 558.988769] omap3isp 480bc000.isp: ###CCDC ALAW=0x00000004
> [ 558.995483] omap3isp 480bc000.isp: ###CCDC REC656IF=0x00000000
> [ 559.002380] omap3isp 480bc000.isp: ###CCDC CFG=0x00008800
> [ 559.008056] omap3isp 480bc000.isp: ###CCDC FMTCFG=0x00000000
> [ 559.014892] omap3isp 480bc000.isp: ###CCDC FMT_HORZ=0x00000000
> [ 559.021697] omap3isp 480bc000.isp: ###CCDC FMT_VERT=0x00000000
> [ 559.027954] omap3isp 480bc000.isp: ###CCDC PRGEVEN0=0x00000000
> [ 559.034912] omap3isp 480bc000.isp: ###CCDC PRGEVEN1=0x00000000
> [ 559.041748] omap3isp 480bc000.isp: ###CCDC PRGODD0=0x00000000
> [ 559.047790] omap3isp 480bc000.isp: ###CCDC PRGODD1=0x00000000
> [ 559.054687] omap3isp 480bc000.isp: ###CCDC VP_OUT=0x00000000
> [ 559.061645] omap3isp 480bc000.isp: ###CCDC LSC_CONFIG=0x00006600
> [ 559.068084] omap3isp 480bc000.isp: ###CCDC LSC_INITIAL=0x00000000
> [ 559.075378] omap3isp 480bc000.isp: ###CCDC LSC_TABLE_BASE=0x00000000
> [ 559.082916] omap3isp 480bc000.isp: ###CCDC LSC_TABLE_OFFSET=0x00000000
> [ 559.090454] omap3isp 480bc000.isp: --------------------------------------------
> [ass] auto-open
> Opening video filter: [rotate=2]
> VIDEO: 1280x1024 15.000 fps 0.0 kbps ( 0.0 kB/s)
> Could not find matching colorspace - retrying with -vf scale...
> Opening video filter: [scale]
> [swscaler @ 0xb5d45980]using unscaled uyvy422 -> yuv420p special converter
> VO: [x11] 1024x1280 => 1024x1280 Planar YV12
> [swscaler @ 0xb5d45980]No accelerated colorspace conversion found from yuv420p to bgra.
> Colorspace details not fully supported by selected vo.
> Selected video codec: RAW UYVY [raw]
> Audio: no sound
> Starting playback...
> v4l2: select timeout
> V: 0.0 1/ 1 ??% ??% ??,?% 0 0
> v4l2: select timeout
> V: 0.0 3/ 3 ??% ??% ??,?% 0 0
> v4l2: select timeout
> V: 0.0 4/ 4 ??% ??% ??,?% 0 0
> v4l2: select timeout
> V: 0.0 5/ 5 ??% ??% ??,?% 0 0
> v4l2: select timeout
>
>
> MPlayer interrupted by signal 2 in module: filter_video
> V: 0.0 6/ 6 ??% ??% ??,?% 0 0
> v4l2: select timeout
> [ 565.122406] omap3isp 480bc000.isp: OMAP3 ISP AEWB: user wants to disable module.
> [ 565.130950] omap3isp 480bc000.isp: OMAP3 ISP AEWB: module is being disabled
> [ 565.138397] omap3isp 480bc000.isp: OMAP3 ISP AF: user wants to disable module.
> [ 565.149047] omap3isp 480bc000.isp: OMAP3 ISP AF: module is being disabled
> [ 565.158660] omap3isp 480bc000.isp: OMAP3 ISP histogram: user wants to disable module.
> [ 565.168945] omap3isp 480bc000.isp: OMAP3 ISP histogram: module is being disabled
> [ 567.221099] omap3isp 480bc000.isp: CCDC stop timeout!
> [ 567.226593] omap3isp 480bc000.isp: Unable to stop OMAP3 ISP CCDC

^^^ that looks like some lockup of the CCDC?

> v4l2: ioctl set mute failed: Inappropriate ioctl for device
> v4l2: 0 frames successfully processed, 1 frames dropped.
>
> Exiting... (Quit)
> root@letux:~#

Latest patches are here:

http://git.goldelico.com/?p=gta04-kernel.git;a=shortlog;h=refs/heads/extern/ov9655-v2

Device tree:

http://git.goldelico.com/?p=gta04-kernel.git;a=blob;f=arch/arm/boot/dts/omap3-gta04.dtsi;hb=80a33790b381c83fd6e99af15cb5bd6c97abb0a7#l941

Any ideas how to debug 'v4l2: select timeout'?

BR and thanks,
Nikolaus