0

I want to run the Sony IMX219 camera on the Avnet Maaxboard.

I'm using Yocto, with linux-imx kernel 5.10.35.

The manufacturer said: "Out of box the yocto and debian images only support the OV5640 camera based solutions. Any additional image sensor support will need to be added."

Then i started to develop my own device tree structure (DTS) to handle this camera. I used the ov5640 dts as starting point.

Here is my DTS file:

/dts-v1/;
/plugin/;

#include <dt-bindings/clock/imx8mq-clock.h>
#include <dt-bindings/gpio/gpio.h>

/{
    compatible = "avnet,maaxboard", "fsl,imx8mq";

    fragment@0 {
        target = <&i2c1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            imx219_mipi@10 {
                compatible = "sony,imx219";
                reg = <0x10>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_csi1>;
                clocks = <&clk IMX8MQ_CLK_CLKO2>;
                clock-names = "csi_mclk";
                csi_id = <0>;
                pwn-gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
                rst-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
                status = "okay";

                mclk = <24000000>;
                mclk_source = <0>;

                port {
                    imx219_mipi1_ep: endpoint {
                        clock-lanes = <0>;
                        data-lanes = <1 2 3 4>;
                        remote-endpoint = <&mipi1_sensor_ep>;
                    };
                };
            };
        };
    };

    fragment@1 {
        target = <&csi1_bridge>;
        __overlay__ {
            status = "okay";
        };
    };

    fragment@2 {
        target = <&mipi_csi_1>;
        __overlay__ {
            status = "okay";
            rxhs-settle = <0x07>;
            port {
                mipi1_sensor_ep: endpoint@0 {
                    remote-endpoint = <&imx219_mipi1_ep>;
                    clock-lanes = <0>;
                    data-lanes = <1 2 3 4>;
                    bus-type = <4>;
                };
            };
        };
    };
};

I succed to boot and load my dts file, the lsmod command tells me that the driver is loaded, and appears /dev/video0.

But it is not working; when i use ffmpeg to take picture, i got this error:

ffmpeg error

Does anyone know how to make this work?

Best regards Thomas

  • I don't work with iMX8 but, did you try with Gstreamer? iMX8 processor use [specific plugins](https://github.com/Freescale/gstreamer-imx), check if there is the plugins installed and try to start a pipeline – PierreOlivier Dec 01 '21 at 16:11
  • Yes i use packagegroup-fsl-gstreamer1.0 https://github.com/Freescale/meta-freescale-distro/blob/master/recipes-fsl/packagegroups/packagegroup-fsl-gstreamer1.0.bb and there is no problem with the cam-ov5645 – Thomas Saison Jan 06 '22 at 13:17

0 Answers0