The LVDS Display Bridge (LDB) connects the Image Processing Unit (IPU) to an external LVDS display interface.

The ConnectCore 6 SBC contains two LVDS display connectors.

Kernel configuration

You can manage the LDB driver support through the kernel configuration option:

  • MXC LDB (CONFIG_FB_MXC_LDB)

This option is enabled as built-in on the ConnectCore 6 kernel configuration file.

Platform driver mapping

The LDB driver for the i.MX6 is located at:

File Description

drivers/video/fbdev/mxc/ldb.c

LDB display driver

Device tree bindings and customization

The i.MX6 LDB interface device tree binding is documented at Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt.

The LDB interface is defined in the i.MX6 CPU and ConnectCore 6 SBC device tree files.

IOMUX configuration

The LVDS interfaces use dedicated pins. No IOMUX configuration is necessary.

LVDS channels

ConnectCore 6 SBC device tree
&ldb {
	lvds-channel@0 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <18>;
		crtc = "ipu2-di0";
		primary;

		display-timings {
			native-mode = <&g101evn010_1>;

			/* Fusion 10" F10A-0102 */
			hsd101pfw2_1: timing@0 {
				clock-frequency = <45000000>;
				hactive = <1024>;
				vactive = <600>;
				hfront-porch = <0>;
				hback-porch = <0>;
				hsync-len = <176>;
				vback-porch = <0>;
				vfront-porch = <0>;
				vsync-len = <25>;
			};

			/* AUO G101EVN01.0 */
			g101evn010_1: timing@1 {
				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>;
			};
		};
	};
	lvds-channel@1 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <18>;
		crtc = "ipu2-di1";

		display-timings {
			native-mode = <&g101evn010_2>;

			/* Fusion 10" F10A-0102 */
			hsd101pfw2_2: timing@0 {
				clock-frequency = <45000000>;
				hactive = <1024>;
				vactive = <600>;
				hfront-porch = <0>;
				hback-porch = <0>;
				hsync-len = <176>;
				vback-porch = <0>;
				vfront-porch = <2>;
				vsync-len = <23>;
			};

			/* AUO G101EVN01.0 */
			g101evn010_2: timing@1 {
				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 6 SBC device tree, two LVDS displays are declared inside each lvds-channel node:

  • Fusion 10" LVDS (hsd101pfw2)

  • AUO 10" LVDS (g101evn010)

The property native-mode inside display-timings selects which of the defined displays on the device tree is enabled. On the ConnectCore 6 SBC, the default selected display is the AUO 10". To switch to the Fusion display, see Enable Fusion 10" display.

LVDS as primary display

The default ConnectCore 6 SBC device tree establishes the HDMI video interface as primary display (on frame buffer 0). This configuration can be overridden through the video kernel command line argument passed by the bootloader.

For example, to enable the LVDS on frame buffer 0, append the following to U-Boot environment variable extra_bootargs:

=> setenv extra_bootargs $extra_bootargs video=mxcfb0:dev=ldb,if=RGB666 video=mxcfb1:dev=hdmi,1920x1080M@60
=> saveenv

Enable Fusion 10" display

The ConnectCore 6 SBC selects the AUO 10" LCD display by default. To enable the Fusion 10" display, make the following changes to your final platform DTS file (file imx6q-ccimx6sbc.dts is used as example):

  • Make the Fusion 10" the default display.

  • Enable the Fusion touch controller and disable the Goodix.

diff --git a/arch/arm/boot/dts/imx6q-ccimx6sbc.dts b/arch/arm/boot/dts/imx6q-ccimx6sbc.dts
index 471c0594af33..04b2ead2015b 100644
--- a/arch/arm/boot/dts/imx6q-ccimx6sbc.dts
+++ b/arch/arm/boot/dts/imx6q-ccimx6sbc.dts
@@ -64,6 +64,11 @@

        lvds-channel@0 {
                status = "okay";
+
+               /* Set display to Fusion 10" */
+               display-timings {
+                       native-mode = <&hsd101pfw2_1>;
+               };
        };
 };

@@ -109,12 +114,12 @@
        status = "okay";

        /* Uncomment to enable the fusion touch, used with hsd101pfw2 */
-       //fusion@14 {
-       //      status = "okay";
-       //};
+       fusion@14 {
+               status = "okay";
+       };

        goodix_touch: gt911@14 {
-               status = "okay";
+               // status = "okay";
        };

        edid@50 {