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 */
>;
};
};
