Hi,
I'm using an i.mx6q-sabresd with a kernel based on linux3.0.35.
There is a BT1120 1080P HD-SDI camera connected on CSI0 according to gv7601. the GV7601 does not need to be configured using SPI on our setup. There are pulse output from gv7601, and the frequence of pclk is 74.25MHz.
I've manually applied the BT1120 patch to enable 16bit and 1120 from Support BT1120 progressive mode in Mx6Q
On the software side, I have that pinmuxing:
MX6Q_PAD_EIM_D27__IPU1_CSI0_D_0,
MX6Q_PAD_EIM_D26__IPU1_CSI0_D_1,
MX6Q_PAD_EIM_D31__IPU1_CSI0_D_2,
MX6Q_PAD_EIM_D30__IPU1_CSI0_D_3,
MX6Q_PAD_CSI0_DAT4__IPU1_CSI0_D_4,
MX6Q_PAD_CSI0_DAT5__IPU1_CSI0_D_5,
MX6Q_PAD_CSI0_DAT6__IPU1_CSI0_D_6,
MX6Q_PAD_CSI0_DAT7__IPU1_CSI0_D_7,
MX6Q_PAD_CSI0_DAT8__IPU1_CSI0_D_8,
MX6Q_PAD_CSI0_DAT9__IPU1_CSI0_D_9,
MX6Q_PAD_CSI0_DAT10__IPU1_CSI0_D_10,
MX6Q_PAD_CSI0_DAT11__IPU1_CSI0_D_11,
MX6Q_PAD_CSI0_DAT12__IPU1_CSI0_D_12,
MX6Q_PAD_CSI0_DAT13__IPU1_CSI0_D_13,
MX6Q_PAD_CSI0_DAT14__IPU1_CSI0_D_14,
MX6Q_PAD_CSI0_DAT15__IPU1_CSI0_D_15,
MX6Q_PAD_CSI0_DAT16__IPU1_CSI0_D_16,
MX6Q_PAD_CSI0_DAT17__IPU1_CSI0_D_17,
MX6Q_PAD_CSI0_DAT18__IPU1_CSI0_D_18,
MX6Q_PAD_CSI0_DAT19__IPU1_CSI0_D_19,
That is what I have in my data_capture[] :
{
.ipu = 0,
.csi = 0,
.mclk_source = 0,
.is_mipi = 0,
},
I also set CSI0 to parallel with:
mxc_iomux_set_gpr_register(1, 19, 1, 1);
I tweaked drivers/media/video/mxc/capture/mxc_v4l2_capture.c to be able to set BT.1120 clock mode:
csi_param.clk_mode = IPU_CSI_CLK_MODE_CCIR1120_PROGRESSIVE_SDR;
csi_param.pixclk_pol = 0;
csi_param.data_width = IPU_CSI_DATA_WIDTH_8;
csi_param.mclk = 74250000;
csi_param.Hsync_pol = 0;
csi_param.Vsync_pol = 0;
csi_param.ext_vsync = 0;
I end up with those register set (by drivers/mxc/ipu3/ipu_capture.c):
CSI_SENS_CONF = 0x82000950
CSI_SENS_FRM_SIZE = 0x0437077F
CSI_ACT_FRM_SIZE = 0x0437077F
CSI_OUT_FRM_CTRL = 0x0
exec this commond on console, ./mxc_v4l2_capture.out -iw 1920 -ih 1080 -ow 1280 -oh 800 -f YUYV -fr 25
in_width = 1920, in_height = 1080
out_width = 1280, out_height = 800
top = 0, left = 0
ERROR: v4l2 capture: mxc_v4l_dqueue timeout enc_counter 0
VIDIOC_DQBUF failed.
ERROR: v4l2 capture: VIDIOC_QBUF: buffer already queued
VIDIOC_QBUF failed
What am I missing ? Any help will appreciated
for hardware, pls check if you connect correctly refer to the path.
for software, you should set CSI0_SENS_DATA_FORMAT is 010 YUV422 (UYVY...)
https://community.nxp.com/thread/329485
hope this link is helpful for you.
Hi, Xie
You are right. There are something wrong with my hardware.
Now it works: ./mxc_v4l2_overlay.out -iw 1920 -ih 1080 -it 0 -il 0 -ow 1280 -oh 800 -ot 0 -ol 0 -fr 30
But there are something with encoded:./mxc_v4l2_capture.out -iw 1920 -ih 1080 -ow 1920 -oh 1080 -fr 30 test.yuv
in_width = 1920, in_height = 1080
out_width = 1920, out_height = 1080
top = 0, left = 0
sensor frame format: YUYV
g_fmt_cap returns widthxheight of input as 1920 x 1080
Width = 1920 Height = 1080 Image size = 3110400
pixelformat = 842093913
YUV420
imx-ipuv3 imx-ipuv3.0: IPU Warning - IPU_INT_STAT_5 = 0x00100000
when I decode test.yuv, it's abnormal.