Hello team,
We are working in PDS device prototype based on i.Mx6DL SODIMM module.
We are using kernel 3.10.53.We are now trying to bring camera up
Camera used is Color CMOS QSXGA (5MP) based on OV5640 sensor(parallel CSI). Resolution is 2592x1944
Following changes have been done in dts file
ov5640: ov5640@3c {
compatible = "ov5640";
reg = <0x3c>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_1>;
clocks = <&clks 201>;
clock-names = "csi_mclk";
csi_id = <0>;
mclk = <24000000>;
mclk_source = <0>;
};
v4l2_cap_0 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
mclk_source = <0>;
status = "okay";
};
v4l2_out {
compatible = "fsl,mxc_v4l2_output";
status = "okay";
};
IPU pinctrl pins are added in
----------------------------------------
ipu1 {
pinctrl_ipu1_1: ipu1grp-sm-csi {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10 0x80000000
MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08 0x80000000
MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09 0x80000000
MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15 0x80000000
MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14 0x80000000
MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17 0x80000000
MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16 0x80000000
MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13 0x80000000
MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11 0x80000000
MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK 0x80000000
MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12 0x80000000
MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC 0x80000000
MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC 0x80000000
/* MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x80000000 */
>;
};
}
These changes and all done and ov5640 driver has been enabled in make menuconfig
With these changes. We have run the mxc_v4l2_capture application and this is the ouput
root@imx6dlsabresd: ./mxc_v4l2_capture.out -iw 2592 -ih 1944 -ow 640 -oh 480 -d /dev/video0 -c 5 1.yuv
in_width = 2592, in_height = 1944
out_width = 640, out_height = 480
top = 0, left = 0
Setting mclk to 24 MHz
sensor chip is ov5640_camera
sensor supported frame size:
640x480
320x240
720x480
720x576
1280x720
1920x1080
2592x1944
176x144
1024x768
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
sensor frame format: YUYV
Width = 640 Height = 480 Image size = 460800
pixelformat: YU12
YUV420
ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
VIDIOC_DQBUF failed.
ERROR: v4l2 capture: VIDIOC_QBUF: buffer already queued
VIDIOC_QBUF failed
Can you get what is the reason for this error. I am completely struck up with this.
Harware wise probed all possible lines. voltage supply, HSYNC,VSYNC, Data lines, pixelclock and all seems fine. So till CPU it seems fine.
But not sure why V4L2 app fails to capture. Even mxc v4l2 Overlay application also fails
Please help with this.
Thanks in advance.
Sarjoon
Hi Sarjoon
one can try using imx-test docs in ../mxc_v4l2_test/doc/FSL-UT-V4L2-009.txt:
www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-test-5.4.tar.gz
Test 7. mxc_v4l2_capture.out -iw 2592 -ih 1944 -ow 2592 -oh 1944 -m 6 -i 1 -r 0 -c 50 -fr 15 -d /dev/video1 test.yuv
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Dear Igor,
Thank you so much for the response.
I founf the reason for the issue. There is CSI MUX configuraion issue in board file.
I set the GPR13 register bits 0-2 as 0x4 since IPU1_CSI0 channel is connected to parallel interface.
And then the error went off and I can able to run the overlay/capture and even output application. But now the problem is the frames are having green lines fully.
I referrred the file which you told to refer and ran your commands
capture: ./mxc_v4l2_capture.out -iw 2592 -ih 1944 -ow 2592 -oh 1944 -m 6 -i 1 -r 0 -fr 15 -d /dev/video0 -c 1 test.yuv -> ( video device is /dev/video0 for me)
overlay: ./mxc_v4l2_overlay.out -iw 2592 -ih 1944 -ow 480 -oh 272 -m 6 -fr 15 -di /dev/video0 -bg (lcd resolution is 480x272 for me)
output: ./mxc_v4l2_output.out -iw 2592 -ih 1944 -ow 480 -oh 272 -m 6 -r 0 -f UYVY -fr 15 test.yuv
All the above commands is giving same result... its coming with green lines. I have attached the captured raw file for sample
What is causing this issue. Any configuration settings is missing.
I have tried formats like YUYV, YVYU, YUV420 using -f command but all giving same results
Hi Sarjoon
you are right green may be caused by wrong data format (or data absence)
so one can recheck if sensor was configured properly through i2c.
Best regards
igor
Dea Igor,
Thanks for the response.
Do you have any application note for those i2c configurations.
We are using QSXGA camera as I said. Its 5MP camera with Auto focus feature.
Any configuration notes/details will be a lot of help.
Thanks & Regards
Sarjoon