Hello Laurent, > Laurent Pinchart <laurent.pinchart <at> ideasonboard.com> writes: > > > > > Hi Tom, > > > > On Tuesday 16 July 2013 14:24:59 Tom wrote: > > > Laurent Pinchart <laurent.pinchart <at> ideasonboard.com> writes: > > > > On Monday 15 July 2013 09:23:19 Tom wrote: > > > > > Hello, > > > > > > > > > > I am working with a gumstix overo board connected with a e-con-systems > > > > > camera module using a ov3640 camera sensor. > > > > > > > > > > Along with the board I got a camera driver > > > > > (https://github.com/scottellis/econ-cam-driver) > > > > > which can be used with linux kernel 2.6.34, but I want to use the camera > > > > > along with the linux kernel 3.5. > > > > > > > > > > So I tried to implement the driver into the kernel sources by referring > > > > > to a existing drivers like /driver/media/video/ov9640.c and > > > > > /driver/media/video/mt9v032.c. > > > > > > > > > > The old driver has an isp implementation integrated and it registers > > > > > itself once as a video device. So the application which is going to use > > > > > the camera sensor just needs to open the right video device and by > > > > > calling ioctl the corresponding functions will be called. > > > > > > > > > > By going through the linux 3.5 kernel sources I found out that the > > > > > omap3-isp registers itself as an video-device and should support > > > > > sensors using the v4l2-subdev interface. > > > > > > > > > > So am I right when I think that I just need to add the ov3640 subdev to > > > > > the isp_v4l2_subdevs_group in the board-overo.c file and then just open > > > > > thevideo device of the isp to use it via application (ioctl)? > > > > > > > > > > I read an article which told me that I need to use the > > > > > v4l2_subdev_pad_ops to interact from isp with the ov3640 subdev, but it > > > > > does not work. I don't know what I am doing wrong. > > > > > > > > > > Is there already an implemenation of the ov3640 using subdev-api which I > > > > > couldn't find or can someone give me a hint what I need to do to get the > > > > > sensor with the isp working? > > > > > > > > As a matter of fact there's one. You can't be blamed for not finding it, > > > > as it was stored on my computer. > > > > > > > > I've rebased the patches on top of the latest linuxtv master branch and > > > > pushed the patches to > > > > > > > > git://linuxtv.org/pinchartl/media.git sensors/ov3640 > > > > > > > > Two caveats: > > > > > > > > - The rebased patches have been compile-tested only, I haven't had time to > > > > test them on the hardware. One particular point that might break is the > > > > use of the clock API as a replacement for the OMAP3 ISP .set_xclk() > > > > callback. Any problem that may arise from this shouldn't be too difficult > > > > to fix. > > > > > > > > - The driver doesn't work in all resolutions and formats. This is really > > > > work in progress that I haven't had time to finish. The code should be > > > > relatively clean, but the lack of support from Omnivision killed the > > > > schedule (which I've planned too optimistically I have to confess). > > > > > > > > Fixes would be very welcome. I'd like to push this driver to mainline at > > > > some point, I'd hate to waste the time I've spent on this. > > > > > > Hello Laurent, > > > > > > many thanks for the quick reply. > > > > > > I'm still a beginner, so please excuse that I have to ask you once again > > > just to understand the subdev-api and the isp exactly. > > > > No worries. As long as people do a bit of research and read documentation by > > themselves beforehand, I'm happy to answer questions and share knowledge. > > > > > Is the implementation within the board-overo.c file correct to use the isp > > > along with your camera driver? > > > > > > And would it be enough to just open the isp video device within my > > > application or do I need to open the subdev-device, too when calling ioctl? > > > > You will need to access the subdevs directly to configure the OMAP3 ISP > > pipeline before starting the video stream. This task can be performed > directly > > in a custom application using the media controller and V4L2 subdevs userspace > > APIs, or using the media-ctl command line tool > > (http://git.ideasonboard.org/media-ctl.git). The topic has been discussed > > extensively before and information is available online, both in web pages or > > in the linux-media mailing list archives. I don't have exact URLs, so it > would > > be nice if you could post a couple of pointers in reply to this thread after > > searching for information, to help future newcomers. > > > > Once the pipeline is configured you can then capture video frames from the > > OMAP3 ISP output using the V4L2 API on the appropriate video node. > > > > > Best Regards, Tom > > > > > > > > > My Code Snippet board-overo.c: > > > > > > #define LM3553_SLAVE_ADDRESS 0x53 > > > #define OV3640_I2C_ADDR (0x78 >> 1) > > > int omap3evm_ov3640_platform_data; > > > int lm3553_platform_data; > > > > > > static struct i2c_board_info omap3_i2c_boardinfo_ov3640 = { > > > I2C_BOARD_INFO("ov3640", OV3640_I2C_ADDR), > > > .platform_data = &omap3evm_ov3640_platform_data, > > > }; > > > > > > static struct i2c_board_info omap3_i2c_boardinfo_lm3553 = { > > > I2C_BOARD_INFO("lm3553",LM3553_SLAVE_ADDRESS), > > > .platform_data = &lm3553_platform_data, > > > }; > > > > > > static struct i2c_board_info mt9v032_i2c_device = { > > > I2C_BOARD_INFO("mt9v032", MT9V032_I2C_ADDR), > > > .platform_data = &mt9v032_platform_data, > > > }; > > > > > > /*static struct isp_subdev_i2c_board_info mt9v032_subdevs[] = { > > > { > > > .board_info = &mt9v032_i2c_device, > > > .i2c_adapter_id = MT9V032_I2C_BUS_NUM, > > > }, > > > { NULL, 0, }, > > > };*/ > > > > > > static struct isp_subdev_i2c_board_info overo_subdevs[] = { > > > /*{ > > > .board_info = &mt9v032_i2c_device, > > > .i2c_adapter_id = MT9V032_I2C_BUS_NUM, > > > },*/ > > > { > > > .board_info = &omap3_i2c_boardinfo_ov3640, > > > .i2c_adapter_id = MT9V032_I2C_BUS_NUM, > > > }, > > > { NULL, 0, }, > > > }; > > > > > > static struct isp_v4l2_subdevs_group overo_camera_subdevs[] = { > > > { > > > //.subdevs = mt9v032_subdevs, > > > .subdevs = overo_subdevs, > > > .interface = ISP_INTERFACE_PARALLEL, > > > .bus = { > > > .parallel = { > > > .data_lane_shift = 0, > > > .clk_pol = 0, > > > .bridge = ISPCTRL_PAR_BRIDGE_DISABLE, > > > } > > > }, > > > }, > > > { NULL, 0, }, > > > }; > > > > > > static struct isp_platform_data overo_isp_platform_data = { > > > > I had forgotten to update the ISP platform data in the patches available > in my > > sensors/ov3640 branch. I've pushed the (still untested) updated code to my > git > > tree. Only the "board-omap3beagle: Add support for the OV3640 sensor module" > > patch has been modified. You need to add > > > > .xclks = { > > [0] = { > > .dev_id = "3-003c", > > }, > > }, > > > > here. 3 should be the I2C bus number your sensor is connected to, and 003c > > should be the sensor I2C address. Please fix that if I got the bus number > > wrong. > > > > > .subdevs = overo_camera_subdevs, > > > }; > > > > > static int __init overo_camera_init(void) > > > { > > > return omap3_init_camera(&overo_isp_platform_data); > > > } > > Would you please help me out again? I tried to test the ov3640 driver along with your test tools media-ctl and yavta, but I got no luck. what I did with media-ctl: root@overo2:~/media_test/bin# sudo ./media-ctl -p -v -r -l '"ov3640 3-003c":0->"OMAP3 ISP CCDC":0[1], "OMAP3 ISP CCDC":1->"OMAP3 ISP CCDC output":0[1]' Opening media device /dev/media0 Enumerating entities Found 16 entities Enumerating pads and links Media controller API version 0.0.0 Media device information ------------------------ driver omap3isp model TI OMAP3 ISP serial bus info hw revision 0xf0 driver version 0.0.0 Device topology - entity 1: OMAP3 ISP CCP2 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SGRBG10/4096x4096] <- "OMAP3 ISP CCP2 input":0 [] pad1: Source [fmt:SGRBG10/4096x4096] -> "OMAP3 ISP CCDC":0 [] - entity 2: OMAP3 ISP CCP2 input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: Source -> "OMAP3 ISP CCP2":0 [] - entity 3: OMAP3 ISP CSI2a (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SGRBG10/4096x4096] pad1: Source [fmt:SGRBG10/4096x4096] -> "OMAP3 ISP CSI2a output":0 [] -> "OMAP3 ISP CCDC":0 [] - entity 4: OMAP3 ISP CSI2a output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video1 pad0: Sink <- "OMAP3 ISP CSI2a":1 [] - entity 5: OMAP3 ISP CCDC (3 pads, 9 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SBGGR10/640x480] <- "OMAP3 ISP CCP2":1 [] <- "OMAP3 ISP CSI2a":1 [] <- "ov3640 3-003c":0 [ENABLED] pad1: Source [fmt:SBGGR10/640x480 crop.bounds:(0,0)/640x480 crop:(0,0)/640x480] -> "OMAP3 ISP CCDC output":0 [ENABLED] -> "OMAP3 ISP resizer":0 [] pad2: Source [fmt:SBGGR10/640x479] -> "OMAP3 ISP preview":0 [] -> "OMAP3 ISP AEWB":0 [ENABLED,IMMUTABLE] -> "OMAP3 ISP AF":0 [ENABLED,IMMUTABLE] -> "OMAP3 ISP histogram":0 [ENABLED,IMMUTABLE] - entity 6: OMAP3 ISP CCDC output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video2 pad0: Sink <- "OMAP3 ISP CCDC":1 [ENABLED] - entity 7: OMAP3 ISP preview (2 pads, 4 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev3 pad0: Sink [fmt:SGRBG10/4096x4096 crop.bounds:(8,4)/4082x4088 crop:(8,4)/4082x4088] <- "OMAP3 ISP CCDC":2 [] <- "OMAP3 ISP preview input":0 [] pad1: Source [fmt:YUYV/4082x4088] -> "OMAP3 ISP preview output":0 [] -> "OMAP3 ISP resizer":0 [] - entity 8: OMAP3 ISP preview input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video3 pad0: Source -> "OMAP3 ISP preview":0 [] - entity 9: OMAP3 ISP preview output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video4 pad0: Sink <- "OMAP3 ISP preview":1 [] - entity 10: OMAP3 ISP resizer (2 pads, 4 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev4 pad0: Sink [fmt:YUYV/4095x4095 crop.bounds:(4,6)/4086x4082 crop:(4,6)/4086x4082] <- "OMAP3 ISP CCDC":1 [] <- "OMAP3 ISP preview":1 [] <- "OMAP3 ISP resizer input":0 [] pad1: Source [fmt:YUYV/4096x4095] -> "OMAP3 ISP resizer output":0 [] - entity 11: OMAP3 ISP resizer input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video5 pad0: Source -> "OMAP3 ISP resizer":0 [] - entity 12: OMAP3 ISP resizer output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video6 pad0: Sink <- "OMAP3 ISP resizer":1 [] - entity 13: OMAP3 ISP AEWB (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev5 pad0: Sink <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] - entity 14: OMAP3 ISP AF (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev6 pad0: Sink <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] - entity 15: OMAP3 ISP histogram (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev7 pad0: Sink <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] - entity 16: ov3640 3-003c (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev8 pad0: Source [fmt:SBGGR10/640x480 crop:(32,20)/640x480] -> "OMAP3 ISP CCDC":0 [ENABLED] Resetting all links to inactive Setting up link 16:0 -> 5:0 [1] Setting up link 5:1 -> 6:0 [1] Then I did: root@overo2:~/media_test/bin# sudo ./media-ctl -p -v -V '"ov3640 3-003c":0 [SBGGR10 640x480 (32,20)/640x480], "OMAP3 ISP CCDC":1 [SBGGR10 640x480]' Opening media device /dev/media0 Enumerating entities Found 16 entities Enumerating pads and links Media controller API version 0.0.0 Media device information ------------------------ driver omap3isp model TI OMAP3 ISP serial bus info hw revision 0xf0 driver version 0.0.0 Device topology - entity 1: OMAP3 ISP CCP2 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Sink [fmt:SGRBG10/4096x4096] <- "OMAP3 ISP CCP2 input":0 [] pad1: Source [fmt:SGRBG10/4096x4096] -> "OMAP3 ISP CCDC":0 [] - entity 2: OMAP3 ISP CCP2 input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video0 pad0: Source -> "OMAP3 ISP CCP2":0 [] - entity 3: OMAP3 ISP CSI2a (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev1 pad0: Sink [fmt:SGRBG10/4096x4096] pad1: Source [fmt:SGRBG10/4096x4096] -> "OMAP3 ISP CSI2a output":0 [] -> "OMAP3 ISP CCDC":0 [] - entity 4: OMAP3 ISP CSI2a output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video1 pad0: Sink <- "OMAP3 ISP CSI2a":1 [] - entity 5: OMAP3 ISP CCDC (3 pads, 9 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev2 pad0: Sink [fmt:SBGGR10/640x480] <- "OMAP3 ISP CCP2":1 [] <- "OMAP3 ISP CSI2a":1 [] <- "ov3640 3-003c":0 [ENABLED] pad1: Source [fmt:SBGGR10/640x480 crop.bounds:(0,0)/640x480 crop:(0,0)/640x480] -> "OMAP3 ISP CCDC output":0 [ENABLED] -> "OMAP3 ISP resizer":0 [] pad2: Source [fmt:SBGGR10/640x479] -> "OMAP3 ISP preview":0 [] -> "OMAP3 ISP AEWB":0 [ENABLED,IMMUTABLE] -> "OMAP3 ISP AF":0 [ENABLED,IMMUTABLE] -> "OMAP3 ISP histogram":0 [ENABLED,IMMUTABLE] - entity 6: OMAP3 ISP CCDC output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video2 pad0: Sink <- "OMAP3 ISP CCDC":1 [ENABLED] - entity 7: OMAP3 ISP preview (2 pads, 4 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev3 pad0: Sink [fmt:SGRBG10/4096x4096 crop.bounds:(8,4)/4082x4088 crop:(8,4)/4082x4088] <- "OMAP3 ISP CCDC":2 [] <- "OMAP3 ISP preview input":0 [] pad1: Source [fmt:YUYV/4082x4088] -> "OMAP3 ISP preview output":0 [] -> "OMAP3 ISP resizer":0 [] - entity 8: OMAP3 ISP preview input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video3 pad0: Source -> "OMAP3 ISP preview":0 [] - entity 9: OMAP3 ISP preview output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video4 pad0: Sink <- "OMAP3 ISP preview":1 [] - entity 10: OMAP3 ISP resizer (2 pads, 4 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev4 pad0: Sink [fmt:YUYV/4095x4095 crop.bounds:(4,6)/4086x4082 crop:(4,6)/4086x4082] <- "OMAP3 ISP CCDC":1 [] <- "OMAP3 ISP preview":1 [] <- "OMAP3 ISP resizer input":0 [] pad1: Source [fmt:YUYV/4096x4095] -> "OMAP3 ISP resizer output":0 [] - entity 11: OMAP3 ISP resizer input (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video5 pad0: Source -> "OMAP3 ISP resizer":0 [] - entity 12: OMAP3 ISP resizer output (1 pad, 1 link) type Node subtype V4L flags 0 device node name /dev/video6 pad0: Sink <- "OMAP3 ISP resizer":1 [] - entity 13: OMAP3 ISP AEWB (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev5 pad0: Sink <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] - entity 14: OMAP3 ISP AF (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev6 pad0: Sink <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] - entity 15: OMAP3 ISP histogram (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev7 pad0: Sink <- "OMAP3 ISP CCDC":2 [ENABLED,IMMUTABLE] - entity 16: ov3640 3-003c (1 pad, 1 link) type V4L2 subdev subtype Sensor flags 0 device node name /dev/v4l-subdev8 pad0: Source [fmt:SBGGR10/640x480 crop:(32,20)/640x480] -> "OMAP3 ISP CCDC":0 [ENABLED] Setting up selection target 0 rectangle (32,20)/640x480 on pad ov3640 3-003c/0 Selection rectangle set: (32,20)/640x480 Setting up format SBGGR10 640x480 on pad ov3640 3-003c/0 Format set: SBGGR10 640x480 Setting up format SBGGR10 640x480 on pad OMAP3 ISP CCDC/0 Format set: SBGGR10 640x480 Setting up format SBGGR10 640x480 on pad OMAP3 ISP CCDC/1 Format set: SBGGR10 640x480 with yavta I did: root@overo2:~/yavta-HEAD-d9b7cfc# sudo ./yavta -f SBGGR10 -s 640x480 --capture=1 --file=image /dev/video2 Device /dev/video2 opened. Device `OMAP3 ISP CCDC output' on `media' is a video capture device. Video format set: SBGGR10 (30314742) 640x480 (stride 1280) buffer size 614400 Video format: SBGGR10 (30314742) 640x480 (stride 1280) buffer size 614400 8 buffers requested. length: 614400 offset: 0 timestamp type: unknown Buffer 0 mapped at address 0xb6d05000. length: 614400 offset: 614400 timestamp type: unknown Buffer 1 mapped at address 0xb6c6f000. length: 614400 offset: 1228800 timestamp type: unknown Buffer 2 mapped at address 0xb6bd9000. length: 614400 offset: 1843200 timestamp type: unknown Buffer 3 mapped at address 0xb6b43000. length: 614400 offset: 2457600 timestamp type: unknown Buffer 4 mapped at address 0xb6aad000. length: 614400 offset: 3072000 timestamp type: unknown Buffer 5 mapped at address 0xb6a17000. length: 614400 offset: 3686400 timestamp type: unknown Buffer 6 mapped at address 0xb6981000. length: 614400 offset: 4300800 timestamp type: unknown Buffer 7 mapped at address 0xb68eb000. with "strace": root@overo2:~/yavta-HEAD-d9b7cfc# sudo strace ./yavta -f SBGGR10 -s 640x480 --capture=1 --file=image /dev/video2 execve("./yavta", ["./yavta", "-f", "SBGGR10", "-s", "640x480", "--capture=1", "--file=image", "/dev/video2"], [/* 13 vars */]) = 0 brk(0) = 0x131000 uname({sys="Linux", node="overo2", ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6efe000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/var/run/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=63134, ...}) = 0 mmap2(NULL, 63134, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ecb000 close(3) = 0 open("/lib/librt.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\26\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=26572, ...}) = 0 mmap2(NULL, 57876, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ebc000 mprotect(0xb6ec2000, 28672, PROT_NONE) = 0 mmap2(0xb6ec9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb6ec9000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\fR\1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1168720, ...}) = 0 mmap2(NULL, 1204784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d95000 mprotect(0xb6eae000, 32768, PROT_NONE) = 0 mmap2(0xb6eb6000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x119) = 0xb6eb6000 mmap2(0xb6eb9000, 8752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6eb9000 close(3) = 0 open("/lib/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\300B\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=84340, ...}) = 0 mmap2(NULL, 123396, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d76000 mprotect(0xb6d8a000, 28672, PROT_NONE) = 0 mmap2(0xb6d91000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13) = 0xb6d91000 mmap2(0xb6d93000, 4612, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6d93000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6efd000 set_tls(0xb6efd820, 0xb6efd820, 0x684, 0xb6efdef8, 0xb6f00050) = 0 mprotect(0xb6d91000, 4096, PROT_READ) = 0 mprotect(0xb6eb6000, 8192, PROT_READ) = 0 mprotect(0xb6ec9000, 4096, PROT_READ) = 0 mprotect(0xb6eff000, 4096, PROT_READ) = 0 munmap(0xb6ecb000, 63134) = 0 set_tid_address(0xb6efd3c8) = 1824 set_robust_list(0xb6efd3d0, 0xc) = 0 futex(0xbe8c8d04, FUTEX_WAKE_PRIVATE, 1) = 0 rt_sigaction(SIGRTMIN, {0xb6d7a1c8, [], SA_SIGINFO|0x4000000}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0xb6d79d44, [], SA_RESTART|SA_SIGINFO|0x4000000}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 open("/dev/video2", O_RDWR) = 3 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6efc000 write(1, "Device /dev/video2 opened.\n", 27Device /dev/video2 opened. ) = 27 ioctl(3, VIDIOC_QUERYCAP or VT_OPENQRY, 0xbe8c89f0) = 0 write(1, "Device `OMAP3 ISP CCDC output' o"..., 69Device `OMAP3 ISP CCDC output' on `media' is a video capture device. ) = 69 ioctl(3, VIDIOC_S_FMT or VT_RELDISP, 0xbe8c8898) = 0 write(1, "Video format set: SBGGR10 (30314"..., 78Video format set: SBGGR10 (30314742) 640x480 (stride 1280) buffer size 614400 ) = 78 ioctl(3, VIDIOC_G_FMT or VT_SENDSIG, 0xbe8c87cc) = 0 write(1, "Video format: SBGGR10 (30314742)"..., 74Video format: SBGGR10 (30314742) 640x480 (stride 1280) buffer size 614400 ) = 74 ioctl(3, VIDIOC_REQBUFS or VT_DISALLOCATE, 0xbe8c8bb8) = 0 write(1, "8 buffers requested.\n", 218 buffers requested. ) = 21 brk(0) = 0x131000 brk(0x152000) = 0x152000 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 0 timesta"..., 49length: 614400 offset: 0 timestamp type: unknown ) = 49 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0xb6ce0000 write(1, "Buffer 0 mapped at address 0xb6c"..., 39Buffer 0 mapped at address 0xb6ce0000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 614400 ti"..., 54length: 614400 offset: 614400 timestamp type: unknown ) = 54 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x96) = 0xb6c4a000 write(1, "Buffer 1 mapped at address 0xb6c"..., 39Buffer 1 mapped at address 0xb6c4a000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 1228800 t"..., 55length: 614400 offset: 1228800 timestamp type: unknown ) = 55 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x12c) = 0xb6bb4000 write(1, "Buffer 2 mapped at address 0xb6b"..., 39Buffer 2 mapped at address 0xb6bb4000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 1843200 t"..., 55length: 614400 offset: 1843200 timestamp type: unknown ) = 55 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x1c2) = 0xb6b1e000 write(1, "Buffer 3 mapped at address 0xb6b"..., 39Buffer 3 mapped at address 0xb6b1e000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 2457600 t"..., 55length: 614400 offset: 2457600 timestamp type: unknown ) = 55 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x258) = 0xb6a88000 write(1, "Buffer 4 mapped at address 0xb6a"..., 39Buffer 4 mapped at address 0xb6a88000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 3072000 t"..., 55length: 614400 offset: 3072000 timestamp type: unknown ) = 55 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x2ee) = 0xb69f2000 write(1, "Buffer 5 mapped at address 0xb69"..., 39Buffer 5 mapped at address 0xb69f2000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 3686400 t"..., 55length: 614400 offset: 3686400 timestamp type: unknown ) = 55 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x384) = 0xb695c000 write(1, "Buffer 6 mapped at address 0xb69"..., 39Buffer 6 mapped at address 0xb695c000. ) = 39 ioctl(3, VIDIOC_QUERYBUF or VT_RESIZE, 0xbe8c8aa8) = 0 write(1, "length: 614400 offset: 4300800 t"..., 55length: 614400 offset: 4300800 timestamp type: unknown ) = 55 mmap2(NULL, 614400, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0x41a) = 0xb68c6000 write(1, "Buffer 7 mapped at address 0xb68"..., 39Buffer 7 mapped at address 0xb68c6000. ) = 39 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_QBUF or VT_SETACTIVATE, 0xbe8c860c) = 0 ioctl(3, VIDIOC_STREAMON, 0xbe8c857c) = 0 clock_gettime(CLOCK_MONOTONIC, {19689, 264307351}) = 0 ioctl(3, VIDIOC_DQBUF and here it hangs... starting from the fact that other sensors seems to work with the pipeline configuration of sensor->ccdc->memory the problem should belong to the ov3640 driver. Am I right? My personal problem is that I have no idea what causes this problem. Could you give me a hint where and how I could find the source of the problem? Best Regards, Tom -- 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