Difference between revisions of "DESK-MX8M-L/Peripherals/MIPI"

From DAVE Developer's Wiki
Jump to: navigation, search
(Accessing the peripheral in MITO 8M Mini)
Line 3: Line 3:
 
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
 
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
 
|-  
 
|-  
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Version
+
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|ID#
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
|-
 
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|1.0.0
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|{{oldid|15738|15738}}
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Jan 2022
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|13/01/2022
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|First DESK-MX8M release
+
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|First DESK-MX8M-L release
 
|-
 
|-
 +
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17555|17555}}
 +
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |24/02/2023
 +
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L-2.0.0 release
 
|-
 
|-
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|2.0.0
+
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|Feb 2023
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|DESK-MX8M-L-2.0.0
 
|-
 
 
|}
 
|}
 
<section end=History/>
 
<section end=History/>
Line 296: Line 296:
 
----
 
----
  
[[Category:ORCA]]
+
[[Category:ORCA]] [[Category:MITO 8M Mini]]

Revision as of 17:04, 24 February 2023

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