Hi All
I am trying to capture movie from TVP5146 analog video decoder from VIP1 VIN1A. I was able to add TVP514x driver to the kernel and the I2C detects it. But it is not recognized by V4L2 . I am using Compulab board with TI-SDK linux kernel 4.1.
Please explain how to get V4L2 to know there is some TVP5146 decoder and register it as /dev/videoN . There is just /dev/video0 and /dev/video10 and none of them are the desired analog video decoder.
The output of udev boot log is as follows:
[ 6.911168] vpe 489d0000.vpe: loading firmware vpdma-1b8.bin [ 7.112772] vpe 489d0000.vpe: Device registered as /dev/video0 [ 7.244212] vip 48970000.vip: loading firmware vpdma-1b8.bin [ 7.260650] vip 48970000.vip: VPDMA firmware loaded [ 7.260727] vip1-s0: Port A: Using subdev tvp514x 3-005c for capture [ 7.260731] vip1-s0: No suitable format reported by subdev tvp514x 3-005c
The contents of udev from i2c driver:
root@cl-som-am57x:~# cd /sys/bus/i2c/devices/i2c-3/3-005c/driver/3-005c root@cl-som-am57x:/sys/bus/i2c/devices/i2c-3/3-005c/driver/3-005c# cat uevent DRIVER=tvp514x OF_NAME=tvp514x OF_FULLNAME=/ocp/i2c@4807a000/tvp514x@5c OF_COMPATIBLE_0=ti,tvp5146 OF_COMPATIBLE_N=1 MODALIAS=i2c:tvp5146
The devices recognized by V4L2:
root@cl-som-am57x:/# v4l2-ctl --list-devices omapwb-m2m (platform:omapwb-m2m): /dev/video10 vpe (platform:vpe): /dev/video0
Video support config in kernel defconfig file:
CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y CONFIG_VIDEO_V4L2_SUBDEV_API=y CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_TI_CAL=m CONFIG_VIDEO_TI_VIP=m CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_TI_VPE=m CONFIG_VIDEO_TVP514X=y
The modified section of dts file for adding TVP514x and VIN1A :
&i2c4 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins_default>; clock-frequency = <400000>; . . . tvp514x@5c { compatible = "ti,tvp5146"; reg = <0x5c>; port { tvp514x_1: endpoint { remote-endpoint = <&vin1a>; hsync-active = <1>; /* Active high (Defaults to 0) */ vsync-active = <1>; /* Active high (Defaults to 0) */ pclk-sample = <0>; /* Active low (Defaults to 0) */ }; }; }; }; &vip1 { status = "okay"; }; &vin1a { pinctrl-names = "default"; pinctrl-0 = <&vin1a_pins_default>; status = "okay"; endpoint { slave-mode; remote-endpoint = <&tvp514x_1>; }; }; &dra7_pmx_core { . . . vin1a_pins_default: vin1a_pins_default { pinctrl-single,pins = < DRA7XX_CORE_IOPAD(0x34DC, PIN_INPUT | MUX_MODE0) /* vin1a_clk0 AG8 */ DRA7XX_CORE_IOPAD(0x34F4, PIN_INPUT | MUX_MODE0) /* vin1a_d0 AE8 */ DRA7XX_CORE_IOPAD(0x34F8, PIN_INPUT | MUX_MODE0) /* vin1a_d1 AD8 */ DRA7XX_CORE_IOPAD(0x34FC, PIN_INPUT | MUX_MODE0) /* vin1a_d2 AG7 */ DRA7XX_CORE_IOPAD(0x3500, PIN_INPUT | MUX_MODE0) /* vin1a_d3 AH6 */ DRA7XX_CORE_IOPAD(0x3504, PIN_INPUT | MUX_MODE0) /* vin1a_d4 AH3 */ DRA7XX_CORE_IOPAD(0x3508, PIN_INPUT | MUX_MODE0) /* vin1a_d5 AH5 */ DRA7XX_CORE_IOPAD(0x350C, PIN_INPUT | MUX_MODE0) /* vin1a_d6 AH6 */ DRA7XX_CORE_IOPAD(0x3510, PIN_INPUT | MUX_MODE0) /* vin1a_d7 AH4 */ >; }; };