DESK-MX8M-L/Peripherals/MIPI

From DAVE Developer's Wiki
Jump to: navigation, search
History
ID# Issue Date Notes

15738

13/01/2022 First DESK-MX8M-L release

17555

24/02/2023 DESK-MX8M-L-2.0.0 release


Peripheral MIPI[edit | edit source]

Device tree configuration[edit | edit source]

ORCA SOM[edit | edit source]

Here below an example of device tree configuration used on standard DAVE's kit for the ORCA SOM:

From imx8mp-mito8mplus-cb1001.dts:

&mipi_csi_0 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	port@0 {
		reg = <0>;
		mipi_csi0_ep: endpoint {
			remote-endpoint = <&ov5640_mipi_0_ep>;
			data-lanes = <2>;
			csis-hs-settle = <13>;
			csis-clk-settle = <2>;
			csis-wclk;
		};
	};
};

&mipi_csi_1 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	port@1 {
		reg = <1>;
		mipi_csi1_ep: endpoint {
			remote-endpoint = <&ov5640_mipi_1_ep>;
			data-lanes = <2>;
			csis-hs-settle = <13>;
			csis-clk-settle = <2>;
			csis-wclk;
		};
	};
};

From imx8mp-mito8mplus.dtsi:


&iomuxc {
...
...
	pinctrl_mipi_dsi_en: mipi_dsi_en {
		fsl,pins = <
			MX8MP_IOMUXC_GPIO1_IO08__GPIO1_IO08	0x16
		>;
	};
...
...
};

MITO 8M Mini[edit | edit source]

Here below an example of device tree configuration used on standard DAVE's kit for the MINI SOM:

From imx8mm-mito8mmini.dts:

...
...
	regulators {
...
...
		reg_csi_en: regulator-csi-en {
			compatible = "regulator-fixed";
			regulator-name = "csi_enable";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_csi_pwn>;
			gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			regulator-always-on;
		};
...
...
&csi1_bridge {
	fsl,mipi-mode;
	status = "okay";
	port {
		csi1_ep: endpoint {
			remote-endpoint = <&csi1_mipi_ep>;
		};
	};
};
...
...
&i2c3 {
...
...
	/* Digilent Pcam 5C */
	ov5640_mipi: ov5640_mipi@3c {
		compatible = "ovti,ov5640_mipi";
		reg = <0x3c>;
		status = "okay";
		pinctrl-names = "default";
		clocks = <&clk IMX8MM_CLK_CLKO1>;
		clock-names = "csi_mclk";
		assigned-clocks = <&clk IMX8MM_CLK_CLKO1>;
		assigned-clock-parents = <&clk IMX8MM_CLK_24M>;
		assigned-clock-rates = <24000000>;
		csi_id = <0>;
		mclk = <24000000>;
		mclk_source = <0>;
		port {
			ov5640_mipi1_ep: endpoint {
				remote-endpoint = <&mipi1_sensor_ep>;
			};
		};
	};
};
...
...
&mipi_csi_1 {
...
...
	port {
		mipi1_sensor_ep: endpoint@1 {
			remote-endpoint = <&ov5640_mipi1_ep>;
			data-lanes = <2>;
			csis-hs-settle = <13>;
			csis-clk-settle = <2>;
			csis-wclk;
		};

		csi1_mipi_ep: endpoint@2 {
			remote-endpoint = <&csi1_ep>;
		};
	};
};
...
...
&mipi_dsi {
	status = "disabled";
};
...
...
&iomuxc {
...
...
	pinctrl_csi_pwn: csi_pwn_grp {
		fsl,pins = <
			MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9		0x19
		>;
	};
...
...

Accessing the peripheral in ORCA SOM[edit | edit source]

Linux messages at boot time[edit | edit source]

MIPI CSI-2 driver initialized:

...
...
[    1.486047] mxc-mipi-csi2-sam 32e40000.csi: 32e40000.csi supply mipi-phy not found, using dummy regulator
[    1.496009] mxc-mipi-csi2-sam 32e40000.csi: lanes: 2, hs_settle: 13, clk_settle: 2, wclk: 1, freq: 500000000
[    1.506087] mxc-mipi-csi2-sam 32e50000.csi: 32e50000.csi supply mipi-phy not found, using dummy regulator
[    1.515958] mxc-mipi-csi2-sam 32e50000.csi: lanes: 2, hs_settle: 13, clk_settle: 2, wclk: 1, freq: 266000000
...
...

and if a MIPI camera is inserted, it has been recognized and its video driver loaded:

...
...
[    2.066388] ov5640 1-003c: 1-003c supply DOVDD not found, using dummy regulator
[    2.073762] ov5640 1-003c: 1-003c supply AVDD not found, using dummy regulator
[    2.081030] ov5640 1-003c: 1-003c supply DVDD not found, using dummy regulator
[    2.099859] ov5640 2-003c: 2-003c supply DOVDD not found, using dummy regulator
[    2.107251] ov5640 2-003c: 2-003c supply AVDD not found, using dummy regulator
[    2.114516] ov5640 2-003c: 2-003c supply DVDD not found, using dummy regulator
[    6.110515] mx8-img-md: Registered sensor subdevice: ov5640 2-003c (1)
[    6.122894] mx8-img-md: Registered sensor subdevice: ov5640 1-003c (2)
[    6.173873] mx8-img-md: created link [ov5640 1-003c] => [mxc-mipi-csi2.0]
[    6.187089] mx8-img-md: created link [ov5640 2-003c] => [mxc-mipi-csi2.1]
...
...

Then check that the camera are correctly recognized.

root@desk-mx8mp:~# ls -la /dev/video[1-2]
crw-rw---- 1 root video 81, 1 Jun 22 15:17 /dev/video1
crw-rw---- 1 root video 81, 2 Jun 22 15:17 /dev/video2
root@desk-mx8mp:~#

Usage with gstreamer[edit | edit source]

Video capture and display using Pcam 5C OV5640 MIPI camera:

root@desk-mx8mp:~# gst-launch-1.0 v4l2src device=/dev/video1 ! "video/x-raw,width=1280,height=720" ! queue ! videorate ! vpuenc_h264 ! avimux ! filesink location=camera_test.avi
Setting pipeline to PAUSED ...
====== VPUENC: 4.5.7 build on Dec  2 2021 19:53:04. ======
        wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Dec  2 2021 19:43:12)
        vpulib: 1.1.1
        firmware: 1.1.1.43690
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[   56.090918] bypass csc
[   56.093288] input fmt YUV4
[   56.096074] output fmt YUYV
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:06.547119013
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
root@desk-mx8mp:~#

Accessing the peripheral in MITO 8M Mini[edit | edit source]

Linux messages at boot time[edit | edit source]

MIPI CSI-2 driver initialized:

...
...  
[    2.551615] mxc_mipi-csi 32e30000.mipi_csi: 32e30000.mipi_csi supply mipi-phy not found, using dummy regulator
[    2.561820] mxc_mipi-csi 32e30000.mipi_csi: mipi csi v4l2 device registered
[    2.568795] CSI: Registered sensor subdevice: mxc_mipi-csi.0
[    2.574482] mxc_mipi-csi 32e30000.mipi_csi: lanes: 2, hs_settle: 13, clk_settle: 2, wclk: 1, freq: 333000000
...
...

and if a MIPI camera is inserted, it has been recognized and its video driver loaded:

...
...
[    3.249776] ov5640_mipi 2-003c: No pin available
[    3.254421] ov5640_mipi 2-003c: No sensor pwdn pin available
[    3.260093] ov5640_mipi 2-003c: No sensor reset pin available
[    3.265879] ov5640_mipi 2-003c: 2-003c supply DOVDD not found, using dummy regulator
[    3.273677] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator
[    3.281380] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator
[    4.975637] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c
[    4.993052] ov5640_mipi 2-003c: Camera is found
...
...

Subsequently check that the driver has made the bind.

root@desk-mx8mm:~# ls -la /sys/bus/i2c/drivers/ov5640_mipi/2-003c
lrwxrwxrwx 1 root root 0 Feb 15 10:43 /sys/bus/i2c/drivers/ov5640_mipi/2-003c -> ../../../../devices/platform/soc@0/soc@0:bus@30800000/30a40000.i2c/i2c-2/2-003c

Additional information[edit | edit source]

More information about gstreamer on its web site.

More information about i.MX gstreamer plugin on the gstreamer-imx web site