AnsweredAssumed Answered

V4L, iMX6 and TVP5150

Question asked by mc maddie on Sep 28, 2015
Latest reply on Mar 14, 2017 by mc maddie

We have custom hw based iMX6 SabreSD with addition that it has TVP5150 connected to CSI0. Now, we've used TVP5150 before on our iMX53 based hw so we are not completely stranger with it.


The problem here is, that I'm using Yocto to build the image and the kernel is way newer than what is being used in our iMX53 based hw and instead of the old style board-init it uses device tree and I think that's where the problems lie. Kernel I'm using is imx_3.10.17_1.0.0_ga (Yocto Dizzy - branch). For some reason localversion is set to -1.0.2_ga.


I've compiled V4L and TVP5150 as a module and when starting the unit this is what I get regarding to V4L and TVP5150.


[    3.523498] tvp5150 0-005d: chip found @ 0xba (21a0000.i2c)

[    3.529086] tvp5150 0-005d: tvp5150am1 detected.

[    3.563568] In MVC:camera_init

[    3.568703] In MVC: init_camera_struct

[    3.578705]    Video device registered: Mxc Camera #0

[    3.947765] In MVC: mxc_v4l_open

[    3.952495]    device name is Mxc Camera

[    3.956442] ERROR: v4l2 capture: slave not found!


And this is where I'm stuck. I'm assuming that this is device tree problem, but not totally sure.


Here are the device tree parts I think are related to this issue and what I've changed.


in customer.dtsi


v4l2_cap_0 {

     compatible = "fsl,imx6q-v4l2-capture";

     ipu_id = <0>;

     csi_id = <0>;

     mclk_source = <0>;

     status = "okay";



&i2c1 {

     pinctrl-names = "default";

     pinctrl-0 = <&pinctrl_i2c1_2>;

     status = "okay";


     tvp5151_decoder: tvp5150@5d {

          compatible = "ti,tvp5150";

          reg = <0x5d>;

          pinctrl-names = "default";

          pinctrl-0 = <&pinctrl_ipu1_1>;

          clocks = <&clks 201>;

          clock-names = "csi_mclk";

          ipu_id = <0>;

          csi_id = <0>;

          mclk = <24000000>;

          mclk_source = <0>;

          //pwn-gpios = <&gpio1 8 1>;   /* active low: GPIO_8 */

          //rst-gpios = <&gpio1 7 1>;   /* active low: GPIO_7 */




I'm guessing that the link between v4l-capture and tvp5150 is missing, but I'm not sure how it should be done.


Anyone else worked with this on new kernel with device tree?