MX8 Display

From Variscite Wiki
VAR-SOM-MX8 Display

1 Selecting display type

VAR-SOM-MX8 and SPEAR-MX8 support DP, HDMI and LVDS displays. To use DP and HDMI on VAR-SOM-MX8 carrier board one should attach Variscite extension boards VAR-EXT-DP and VAR-EXT-HDMI respectively.
Selecting display configuration is a matter of selecting an appropriate dtb file.

On VAR-SOM-MX8 /boot/fsl-imx8qm-var-som.dtb is a symbolic link to the active dtb file. By default it points to LVDS dtb.
To select HDMI display, run the following commands:

# cd /boot
# ln -fs fsl-imx8qm-var-som-hdmi.dtb fsl-imx8qm-var-som.dtb

To select DP display, run the following commands:

# cd /boot
# ln -fs fsl-imx8qm-var-som-dp.dtb fsl-imx8qm-var-som.dtb

On SPEAR-MX8 /boot/fsl-imx8qm-var-spear.dtb is a symbolic link to the active dtb file. By default it points to LVDS dtb.
To select HDMI display, run the following commands:

# cd /boot
# ln -fs fsl-imx8qm-var-spear-hdmi.dtb fsl-imx8qm-var-spear.dtb

To select DP display, run the following commands:

# cd /boot
# ln -fs fsl-imx8qm-var-spear-dp.dtb fsl-imx8qm-var-spear.dtb

The change will be effective after reboot.

2 Loading HDMI and DP firmware

HDMI and DP displays require appropriate firmware to be loaded by U-Boot. The firmware files are installed under /boot.
The HDMI display firmware blob is hdmitxfw.bin, the DP firmware blob is dpfw.bin. U-Boot environment variable hdp_file selects the blob.
By default HDMI firmware is being loaded. To switch to DP firmware, run the following command:

# fw_setenv hdp_file dpfw.bin

The change will be effective after reboot.


Both firmware blob and dtb file should be set before rebooting the system, otherwise the boot process will get stuck.

3 Setting HDMI and DP resolution

By default the maximum resolution supported by HDMI/DP display is being used.
To check the current resolution, run fbset command.

# fbset

mode "3840x2160"
    geometry 3840 2160 3840 2160 16
    timings 0 0 0 0 0 0 0
    accel true
    rgba 5/11,6/5,5/0,0/0
endmode


To configure specific resolution use fw_setenv command to set video= kernel command line argument.
For example, to set 1080P@60fps resolution on HDMI display, run the following command:

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

To set 1080P@60fps resolution on DP display, run the following command:

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

The settings will be effective after reboot.

4 LVDS

VAR-SOM-MX8 supports one dual-channel LVDS interface.
VAR-SOM-MX8 evaluation kit comes with two LVDS connectors, one connector per LVDS channel.
By default Variscite panel is attached to LVDS#A connector.

4.1 Adding custom LVDS panel

VAR-SOM-MX8 evaluation kit comes with 800x480 LVDS panel.
VAR-SOM-MX8 DTS file was created with this panel in mind.
To support different LVDS panel, several modifications may be required.

On VAR-SOM-MX8 LVDS panel is configured in arch/arm64/boot/dts/freescale/fsl-imx8qm-var-som-lvds.dtsi
On SPEAR-MX8 LVDS panel is configured in arch/arm64/boot/dts/freescale/fsl-imx8qm-var-spear-lvds.dtsi

&ldb1_phy {
	status = "okay";
};

&ldb1 {
	status = "okay";

	lvds-channel@0 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <18>;
		status = "okay";

		display-timings {
			lvds {
				clock-frequency = <35714000>;
				hactive = <800>;
				vactive = <480>;
				hback-porch = <39>;
				hfront-porch = <39>;
				vback-porch = <29>;
				vfront-porch = <13>;
				hsync-len = <47>;
				vsync-len = <2>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
	};
};

You may need to modify "fsl,data-mapping", "fsl,data-width" and "display-timings" properties to match your panel specification.
For more information see Documentation/devicetree/bindings/display/imx/ldb.txt in the kernel source tree.

5 Setting Weston Desktop Resolution

The default Weston uses maximum resolution supported by display.
To modify Weston resolution, edit /etc/xdg/weston/weston.ini and set size parameter in shell section.
For example:

[shell]
size=3840x2160

For new settings to take effect restart weston by running

# systemctl restart weston