DART-MX8M Display

From Variscite Wiki
DART-MX8M Display

Introduction

MIPI-DSI, LVDS and HDMI

i.MX8M supports MIPI-DSI, HDMI and DP displays. DART-MX8M can be optionally equipped with SN65DSI84 MIPI-DSI to LVDS bridge.
DART-MX8M carrier board comes with LVDS, HDMI and DP connectors, so you can connect LVDS, HDMI or DP display.
Dual LVDS+HDMI or LVDS+DP display configurations are also supported.
Connecting MIPI-DSI display to DART-MX8M carrier board requires designing a custom connector.

DCSS vs LCDIF

i.MX8M comes with 2 display controllers: DCSS and LCDIF.
DCCS can be connected to HDMI, DP or MIPI-DSI and supports resolutions up to 4K.
LCDIF can be connected only to MIPI-DSI and supports resolutions up to 1080p.


Selecting display configuration

Selecting display configuration is a matter of selecting an appropriate DTB file.
All available DTB files are listed in the table below.

DTB File Name
Description
imx8mq-var-dart-dt8mcustomboard-sd-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with SD card and HDMI display.
imx8mq-var-dart-dt8mcustomboard-sd-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with SD card and LVDS display.
imx8mq-var-dart-dt8mcustomboard-sd-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with SD card and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-wifi-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with WIFI and HDMI display.
imx8mq-var-dart-dt8mcustomboard-wifi-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with WIFI and LVDS display.
imx8mq-var-dart-dt8mcustomboard-wifi-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with WIFI and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-m4-sd-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with M4, SD card and HDMI display.
imx8mq-var-dart-dt8mcustomboard-m4-sd-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with M4, SD card and LVDS display.
imx8mq-var-dart-dt8mcustomboard-m4-sd-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with M4, SD card and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-m4-wifi-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with M4, WIFI and HDMI display.
imx8mq-var-dart-dt8mcustomboard-m4-wifi-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with M4, WIFI and LVDS display.
imx8mq-var-dart-dt8mcustomboard-m4-wifi-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V2.x and above with M4, WIFI and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-sd-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with SD card and DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-sd-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with SD card and HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-sd-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with SD card and LVDS display.
imx8mq-var-dart-dt8mcustomboard-legacy-sd-lvds-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with SD card and dual LVDS+DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-sd-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with SD card and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-wifi-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with WIFI and DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-wifi-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with WIFI and HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-wifi-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with WIFI and LVDS display.
imx8mq-var-dart-dt8mcustomboard-legacy-wifi-lvds-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with WIFI and dual LVDS+DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-wifi-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with WIFI and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-sd-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, SD card and DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-sd-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, SD card and HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-sd-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, SD card and LVDS display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-sd-lvds-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, SD card and dual LVDS+DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-sd-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, SD card and dual LVDS+HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-wifi-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, WIFI and DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-wifi-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, WIFI and HDMI display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-wifi-lvds.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, WIFI and LVDS display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-wifi-lvds-dp.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, WIFI and dual LVDS+DP display.
imx8mq-var-dart-dt8mcustomboard-legacy-m4-wifi-lvds-hdmi.dtb DTB for DART-MX8M on DT8MCustomBoard V1.3/V1.4 with M4, WIFI and dual LVDS+HDMI display.


File /boot/imx8mq-var-dart-dt8mcustomboard.dtb is a symbolic link to the active DTB file. By default LVDS display is used.
For example, to select HDMI display in WIFI configuration, run the following commands:

# cd /boot
# ln -fs imx8mq-var-dart-dt8mcustomboard-wifi-hdmi.dtb imx8mq-var-dart-dt8mcustomboard.dtb

Reboot is required for new configuration to take effect.

Setting HDMI display resolution

By default the maximum resolution supported by HDMI display is used.

To check the current resolution, use fbset command:

root@imx8m-var-dart:~# fbset

mode "1920x1080"
    geometry 1920 1080 1920 1080 32
    timings 0 0 0 0 0 0 0
    accel true
    rgba 8/16,8/8,8/0,0/0
endmode

To modify HDMI display resolution use fw_setenv command to set "video" kernel parameter.
For example, to set 1080P@60fps resolution, run

# fw_setenv kernelargs video=HDMI-A-1:1920x1080-32@60

The setting will take effect after reboot.


Setting Weston desktop resolution

The default Weston desktop resolution is 1080P. This setting is independent of actual display resolution.
To modify Weston resolution, edit /etc/xdg/weston/weston.ini and set size parameter in shell section.
For example, to set 4K resolution

[shell]
size=3840x2160

For new setting to take effect restart weston by running

# systemctl restart weston

Dual display configuration

In dual display configuration Weston desktop is running on LVDS display and HDMI display is blank.
To play video on HDMI display the following command can be used:

# gplay-1.0 --video-sink="kmssink driver-name=imx-dcss" video.mp4

To play video on LVDS display the following command can be used:

# gplay-1.0 --video-sink=waylandsink video.mp4

Adding custom LVDS panel

DART-MX8M evaluation kit comes with 800x480 LCD panel. DART-MX8M DTS files were created with this panel in mind. To support your custom LVDS panel, you should make several modifications

The following code references Variscite panel in arch/arm64/boot/dts/freescale/imx8mq-var-dart-dt8mcustomboard-common.dtsi under kernel source tree

	dsi_lvds_bridge: sn65dsi84@2c {
		compatible = "ti,sn65dsi83";
		reg = <0x2c>;
		ti,dsi-lanes = <1>;
		ti,lvds-format = <1>;
		ti,lvds-bpp = <24>;
		ti,width-mm = <154>;
		ti,height-mm = <87>;
		enable-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_lvds>;
		status = "okay";

		display-timings {
			lvds {
				clock-frequency = <33000000>;
				hactive = <800>;
				vactive = <480>;
				hback-porch = <40>;
				hfront-porch = <40>;
				vback-porch = <29>;
				vfront-porch = <13>;
				hsync-len = <48>;
				vsync-len = <3>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
        ...
        };

You should modify "ti,dsi-lanes", "ti,lvds-format", "ti,lvds-bpp", "ti,width-mm", "ti,height-mm" and "display-timings" properties to match your panel specification and rebuild the DTB file.
To support dual channel LVDS panel, please add "ti,lvds-channels = <2>"property. Also, for dual channel LVDS panels clock frequency and horizontal parameters mentioned in panel datasheet should be doubled.