The NXP i.MX6UL provides a 24-bit RGB LCD interface. The CPU also provides a Pixel Processing Pipeline (PXP) used to process video and graphics data before sending to the LCD.

Kernel configuration

You can manage the video support through the following kernel configuration options:

  • MXS LCD framebuffer support (CONFIG_FB_MXS)

  • Support for frame buffer devices (CONFIG_FB)

  • Low-level LCD controls (LCD_CLASS_DEVICE)

  • Platform LCD controls (LCD_PLATFORM)

  • Show the logo centered in the screen (FB_LOGO_CENTERED)

  • Custom logo 224-color (displays logo_custom_clut224.ppm) (LOGO_CUSTOM_CLUT224)

  • MXC PxP V4L2 driver (CONFIG_VIDEO_MXC_PXP_V4L2)

These options are enabled as built-in on the default ConnectCore 6UL kernel configuration file.

Kernel driver

The driver for the video interface is located at:

File Description

drivers/video/fbdev/mxsfb.c

Video driver

drivers/media/platform/mxc/output/mxc_pxp_v4l2.c

PXP driver

Device tree bindings and customization

The LCD interface is documented at Documentation/devicetree/bindings/display/mxsfb.txt.

The device tree contains entries for:

  • The LCD interface

    • The supported displays

  • The PXP system

LCD interface

ConnectCore 6UL SBC Pro device tree
/* Parallel LCD */
&lcdif {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lcdif_dat0_17
		    &pinctrl_lcdif_clken
		    &pinctrl_lcdif_hvsync>;
	lcd-supply = <&ldo4_ext>;       /* BU90T82 LVDS bridge power */
	display = <&g101evn010>;
	status = "disabled";

	f07a0102: display@0 {
		bits-per-pixel = <16>;
		bus-width = <18>;

		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
				clock-frequency = <33260000>;
				hactive = <800>;
				vactive = <480>;
				hfront-porch = <50>;
				hback-porch = <0>;
				hsync-len = <128>;
				vback-porch = <25>;
				vfront-porch = <10>;
				vsync-len = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
	};

	f10a0102: display@1 {
		bits-per-pixel = <16>;
		bus-width = <18>;

		display-timings {
			native-mode = <&timing1>;
			timing1: timing1 {
				clock-frequency = <45000000>;
				hactive = <1024>;
				vactive = <600>;
				hfront-porch = <10>;
				hback-porch = <0>;
				hsync-len = <136 176 216>;
				vback-porch = <0>;
				vfront-porch = <0>;
				vsync-len = <12 25 38>;
				de-active = <1>;
				pixelclk-active = <1>;
			};
		};
	};

	g101evn010: display@2 {
		bits-per-pixel = <16>;
		bus-width = <18>;

		display-timings {
			native-mode = <&timing3>;
			timing3: timing3 {
				clock-frequency = <68930000>;
				hactive = <1280>;
				vactive = <800>;
				hfront-porch = <120>;
				hback-porch = <0>;
				hsync-len = <8>;
				vback-porch = <10>;
				vfront-porch = <0>;
				vsync-len = <6>;
				hsync-active = <1>;
				vsync-active = <1>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
	};
};

On the ConnectCore 6UL SBC Pro device tree there are three LCD displays declared inside the lcdif node:

  • Fusion 7" parallel LCD (f07a0102)

  • Fusion 10" LVDS (f10a0102)

  • AUO 10" LVDS (g101evn010)

The property display selects which of the defined displays on the device tree is enabled. On the ConnectCore 6UL SBC Pro, the default selected display is the AUO 10".

Both the AUO and the Fusion 10" displays are interfaced via low-voltage differential signalling (LVDS). For this reason, the ConnectCore 6UL SBC Pro board has a parallel-to-LVDS bridge to convert the LCD lines into LVDS.

To select any of the Fusion displays instead, see Enable support for a Fusion display.

PXP system

ConnectCore 6UL SBC Pro device tree
&pxp_v4l2 {
	status = "okay";
};

&pxp {
	status = "okay";
};

Using the video interface

When the video interface is available a bootup logo displays on the screen. For X11 images, a SATO desktop launches after Linux starts.

Playing a video

Due to the small size of the root file system partition, the default image only includes VP8 codec which allows to play WebM videos.

To play a video using Gstreamer:

~# gplay-1.0 /tmp/big-buck-bunny_trailer_640x360.webm
No video is included in the default image due to lack of space. You can download WebM demo videos from http://www.webmfiles.org/demo-files/.
You will only be able to play small-sized videos flawlessly due to the lack of a Video Processing Unit (VPU).