AnsweredAssumed Answered

ADV7611 to IMX6 CSI Interface (8-bit BT656)

Question asked by Anuradha Ranasinghe on Jan 29, 2017
Latest reply on Mar 22, 2017 by sadatan vashistha

Hi All,

I am trying to interface ADV7611 hdmi chip with IMX6 processor. This is the driver I am using, although it's for 7610, I guess the register map look same, hence it should work !

linux-fslc/adv7610.c at 3.14-1.0.x-mx6-tinyrex · voipac/linux-fslc · GitHub 

Here I commented 'USE_16BIT' as we intend to use 8-bit mode with the imx6 development board we have. 

 

When the interface is made through 8-bit BT656 mode, I am receiving following error from the kernel ->

- mxc_v4l_open: Mxc Camera no sensor ipu0/csi1
- mxc_v4l_open: Mxc Camera no sensor ipu0/csi0
- mxc_v4l_open: Mxc Camera no sensor ipu1/csi1
- ipu_csi_window_size_crop: Error left=0 top=59565955
- imx-ipuv3 2400000.ipu: Unsupported CCIR656 interlaced video mode

 

When I try to run gstreamer on video0, it returns the same error in terminal while displaying a green (or purple color windows). 

I suspect this must be caused by the driver data pattern ! the platform I'm using is Nitrogen6x_max and running kernel version 4.1.15, with Ubuntu Xenial. Here is my dts arrangement :

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";

adv7610: adv7610@4C {
compatible = "adv,adv7610";
reg = <0x4C>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ipu1_csi0>;
csi_id = <0>;
ipu_id = <0>;
reset-gpio = GP_OV5642_RESET;  //same reset pin used for ipu1 csi0 interface
};

 

// defined for 12-bit although 8-bit being used !!
pinctrl_ipu1_csi0: ipu1csi0grp {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08 0x1b0b0
MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09 0x1b0b0
MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10 0x1b0b0
MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11 0x1b0b0
MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12 0x1b0b0
MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13 0x1b0b0
MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14 0x1b0b0
MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15 0x1b0b0
MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16 0x1b0b0
MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17 0x1b0b0
MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18 0x1b0b0
MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19 0x1b0b0
MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN 0x1b0b0
MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK 0x1b0b0
MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC 0x1b0b0
MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC 0x1b0b0
MX6QDL_PAD_GPIO_3__CCM_CLKO2 0x000b0
#define GP_OV5642_POWER_DOWN <&gpio3 29 GPIO_ACTIVE_HIGH>
MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x0b0b0
#define GP_OV5642_RESET <&gpio1 4 GPIO_ACTIVE_LOW>
MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x030b0
>;
};

 

// P8 to P15 pins of ADV7611 connected to CSI0_DATA12 - DATA19 !!


v4l2_cap_0 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
mclk_source = <0>;
status = "okay";
};

v4l2_cap_1: v4l2_cap_1 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <1>;
mipi_camera = <1>;
mclk_source = <0>;
status = "okay";
};

v4l2_cap_2: v4l2_cap_2 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <1>;
mclk_source = <0>;
status = "okay";
};

v4l2_cap_3: v4l2_cap_3 {
compatible = "fsl,imx6q-v4l2-capture";
ipu_id = <0>;
csi_id = <0>;
mipi_camera = <1>;
mclk_source = <0>;
status = "okay";
};

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Driver was loaded successfully and :

lsmod | grep adv7610
adv7610_video 16384 0
v4l2_int_device 16384 4 ov5640_camera_mipi_int,tc358743_h2c_bridge,adv7610 _video,mxc_v4l2_capture

 

The driver seems to be enumerating the video0 device, and it only accepts YV12 format (configured with v4l2-ctl) ! What's causing this issue ?? 

 

Thanks in Advance

 Anuradha

Outcomes