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

From DAVE Developer's Wiki
Jump to: navigation, search
(Updates for DESK-MX8-L 4.0.0 release)
Line 10: Line 10:
 
|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"|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-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:#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:#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" |{{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" |26/07/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:#ededed; padding:5px; color:#000000" |DESK-MX8M-L-4.0.0 release
 
|-
 
|-
 
 
|}
 
|}
 
<section end=History/>
 
<section end=History/>
Line 139: Line 142:
 
};
 
};
 
};
 
};
};
 
};
 
 
...
 
...
 
...
 
...
Line 159: Line 160:
 
};
 
};
 
};
 
};
};
 
 
...
 
...
 
...
 
...
Line 189: Line 189:
 
...
 
...
 
...
 
...
[    1.486047] mxc-mipi-csi2-sam 32e40000.csi: 32e40000.csi supply mipi-phy not found, using dummy regulator
+
[    2.296546] mxc-mipi-csi2-sam 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
+
[    2.324079] 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
+
[    2.334821] mxc-mipi-csi2-sam 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
+
[    2.355562] mxc-mipi-csi2-sam 32e50000.csi: lanes: 2, hs_settle: 13, clk_settle: 2, wclk: 1, freq: 266000000
 
...
 
...
 
...
 
...
Line 202: Line 202:
 
...
 
...
 
...
 
...
[    2.066388] ov5640 1-003c: 1-003c supply DOVDD not found, using dummy regulator
+
[    1.750387] ov5640 1-003c: supply DOVDD not found, using dummy regulator
[    2.073762] ov5640 1-003c: 1-003c supply AVDD not found, using dummy regulator
+
[    1.757190] ov5640 1-003c: supply AVDD not found, using dummy regulator
[    2.081030] ov5640 1-003c: 1-003c supply DVDD not found, using dummy regulator
+
[    1.763868] ov5640 1-003c: supply DVDD not found, using dummy regulator
[    2.099859] ov5640 2-003c: 2-003c supply DOVDD not found, using dummy regulator
+
[    1.788593] ov5640 2-003c: supply DOVDD not found, using dummy regulator
[    2.107251] ov5640 2-003c: 2-003c supply AVDD not found, using dummy regulator
+
[    1.795388] ov5640 2-003c: supply AVDD not found, using dummy regulator
[    2.114516] ov5640 2-003c: 2-003c supply DVDD not found, using dummy regulator
+
[    1.802044] ov5640 2-003c: supply DVDD not found, using dummy regulator
[    6.110515] mx8-img-md: Registered sensor subdevice: ov5640 2-003c (1)
+
[    7.018212] mx8-img-md: Registered sensor subdevice: ov5640 2-003c (1)
[    6.122894] mx8-img-md: Registered sensor subdevice: ov5640 1-003c (2)
+
[    7.025152] mx8-img-md: Registered sensor subdevice: ov5640 1-003c (2)
[    6.173873] mx8-img-md: created link [ov5640 1-003c] => [mxc-mipi-csi2.0]
+
[    7.059219] 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]
+
[    7.068913] mx8-img-md: created link [ov5640 2-003c] => [mxc-mipi-csi2.1]
 
...
 
...
 
...
 
...
Line 218: Line 218:
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
 
root@desk-mx8mp:~# ls -la /dev/video[1-2]
 
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, 1 Jul 26 05:52 /dev/video1
crw-rw---- 1 root video 81, 2 Jun 22 15:17 /dev/video2
+
crw-rw---- 1 root video 81, 2 Jul 26 05:52 /dev/video2
 
root@desk-mx8mp:~#
 
root@desk-mx8mp:~#
 
</pre>
 
</pre>
Line 230: Line 230:
 
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
 
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 ...
 
Setting pipeline to PAUSED ...
====== VPUENC: 4.5.7 build on Dec 2 2021 19:53:04. ======
+
====== VPUENC: 4.7.2 build on Sep 1 2022 09:49:28. ======
         wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Dec  2 2021 19:43:12)
+
         wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Aug 31 2022 01:28:14)
 
         vpulib: 1.1.1
 
         vpulib: 1.1.1
 
         firmware: 1.1.1.43690
 
         firmware: 1.1.1.43690
 
Pipeline is live and does not need PREROLL ...
 
Pipeline is live and does not need PREROLL ...
 +
Pipeline is PREROLLED ...
 
Setting pipeline to PLAYING ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
New clock: GstSystemClock
[   56.090918] bypass csc
+
[ 1130.711257] bypass csc
[   56.093288] input fmt YUV4
+
[ 1130.713690] input fmt YUV4
[   56.096074] output fmt YUYV
+
[ 1130.716433] output fmt YUYV
 +
Redistribute latency...
 
^Chandling interrupt.
 
^Chandling interrupt.
 
Interrupt: Stopping pipeline ...
 
Interrupt: Stopping pipeline ...
Execution ended after 0:00:06.547119013
+
Execution ended after 0:01:17.622451702
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
 
Setting pipeline to NULL ...
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
Freeing pipeline ...
Line 259: Line 259:
 
...
 
...
 
...   
 
...   
[    2.551615] mxc_mipi-csi 32e30000.mipi_csi: 32e30000.mipi_csi supply mipi-phy not found, using dummy regulator
+
[    3.002816] mxc_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
+
[    3.016644] mxc_mipi-csi 32e30000.mipi_csi: mipi csi v4l2 device registered
[    2.568795] CSI: Registered sensor subdevice: mxc_mipi-csi.0
+
[    3.023627] 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
+
[    3.037706] mxc_mipi-csi 32e30000.mipi_csi: lanes: 2, hs_settle: 13, clk_settle: 2, wclk: 1, freq: 333000000
 
...
 
...
 
...
 
...
Line 272: Line 272:
 
...
 
...
 
...
 
...
[    3.249776] ov5640_mipi 2-003c: No pin available
+
[    1.789827] ov5640_mipi 2-003c: No pin available
[    3.254421] ov5640_mipi 2-003c: No sensor pwdn pin available
+
[    1.794462] ov5640_mipi 2-003c: No sensor pwdn pin available
[    3.260093] ov5640_mipi 2-003c: No sensor reset pin available
+
[    1.800135] ov5640_mipi 2-003c: No sensor reset pin available
[    3.265879] ov5640_mipi 2-003c: 2-003c supply DOVDD not found, using dummy regulator
+
[    1.805926] ov5640_mipi 2-003c: supply DOVDD not found, using dummy regulator
[    3.273677] ov5640_mipi 2-003c: 2-003c supply DVDD not found, using dummy regulator
+
[    1.813173] ov5640_mipi 2-003c: supply DVDD not found, using dummy regulator
[    3.281380] ov5640_mipi 2-003c: 2-003c supply AVDD not found, using dummy regulator
+
[    1.820266] ov5640_mipi 2-003c: supply AVDD not found, using dummy regulator
[    4.975637] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c
+
[    2.859688] ov5640_mipi 2-003c: Camera is found
[    4.993052] ov5640_mipi 2-003c: Camera is found
+
[    3.029304] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c
 
...
 
...
 
...
 
...
Line 286: Line 286:
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
 
root@desk-mx8mm:~# ls -la /sys/bus/i2c/drivers/ov5640_mipi/2-003c
 
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
+
lrwxrwxrwx 1 root root 0 Jul 26 06:14 /sys/bus/i2c/drivers/ov5640_mipi/2-003c -> ../../../../devices/platform/soc@0/30800000.bus/30a40000.i2c/i2c-2/2-003c
 
</pre>
 
</pre>
  

Revision as of 06:14, 26 July 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

17555

26/07/2023 DESK-MX8M-L-4.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:

...
...
[    2.296546] mxc-mipi-csi2-sam 32e40000.csi: supply mipi-phy not found, using dummy regulator
[    2.324079] mxc-mipi-csi2-sam 32e40000.csi: lanes: 2, hs_settle: 13, clk_settle: 2, wclk: 1, freq: 500000000
[    2.334821] mxc-mipi-csi2-sam 32e50000.csi: supply mipi-phy not found, using dummy regulator
[    2.355562] 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:

...
...
[    1.750387] ov5640 1-003c: supply DOVDD not found, using dummy regulator
[    1.757190] ov5640 1-003c: supply AVDD not found, using dummy regulator
[    1.763868] ov5640 1-003c: supply DVDD not found, using dummy regulator
[    1.788593] ov5640 2-003c: supply DOVDD not found, using dummy regulator
[    1.795388] ov5640 2-003c: supply AVDD not found, using dummy regulator
[    1.802044] ov5640 2-003c: supply DVDD not found, using dummy regulator
[    7.018212] mx8-img-md: Registered sensor subdevice: ov5640 2-003c (1)
[    7.025152] mx8-img-md: Registered sensor subdevice: ov5640 1-003c (2)
[    7.059219] mx8-img-md: created link [ov5640 1-003c] => [mxc-mipi-csi2.0]
[    7.068913] 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 Jul 26 05:52 /dev/video1
crw-rw---- 1 root video 81, 2 Jul 26 05:52 /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.7.2 build on Sep  1 2022 09:49:28. ======
        wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Aug 31 2022 01:28:14)
        vpulib: 1.1.1
        firmware: 1.1.1.43690
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[ 1130.711257] bypass csc
[ 1130.713690] input fmt YUV4
[ 1130.716433] output fmt YUYV
Redistribute latency...
^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:01:17.622451702
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:

...
...  
[    3.002816] mxc_mipi-csi 32e30000.mipi_csi: supply mipi-phy not found, using dummy regulator
[    3.016644] mxc_mipi-csi 32e30000.mipi_csi: mipi csi v4l2 device registered
[    3.023627] CSI: Registered sensor subdevice: mxc_mipi-csi.0
[    3.037706] 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:

...
...
[    1.789827] ov5640_mipi 2-003c: No pin available
[    1.794462] ov5640_mipi 2-003c: No sensor pwdn pin available
[    1.800135] ov5640_mipi 2-003c: No sensor reset pin available
[    1.805926] ov5640_mipi 2-003c: supply DOVDD not found, using dummy regulator
[    1.813173] ov5640_mipi 2-003c: supply DVDD not found, using dummy regulator
[    1.820266] ov5640_mipi 2-003c: supply AVDD not found, using dummy regulator
[    2.859688] ov5640_mipi 2-003c: Camera is found
[    3.029304] mxc_mipi-csi 32e30000.mipi_csi: Registered sensor subdevice: ov5640_mipi 2-003c
...
...

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 Jul 26 06:14 /sys/bus/i2c/drivers/ov5640_mipi/2-003c -> ../../../../devices/platform/soc@0/30800000.bus/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