DART-MX8M-PLUS Display: Difference between revisions

From Variscite Wiki
No edit summary
No edit summary
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<!-- Set release according to "release" parameter in URL and use RELEASE_ZEUS_V1.0_DART-MX8M-PLUS as default
<!-- Set release according to "release" parameter in URL and use RELEASE_ZEUS_V1.0_DART-MX8M-PLUS as default
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!--
--> {{INIT_RELEASE_PARAM|RELEASE_ZEUS_V1.0_DART-MX8M-PLUS}}<!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM|RELEASE_ZEUS_V1.0_DART-MX8M-PLUS}}}} <!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} Display}} {{DocImage|category1=Yocto|category2=Debian}}[[Category:{{#var:HARDWARE_NAME}}]]__toc__
--> {{PageHeader|{{#var:HARDWARE_NAME}} Display}} {{DocImage|category1=Yocto|category2=Debian}}[[Category:{{#var:HARDWARE_NAME}}]]__toc__


Line 13: Line 14:
To support a custom LVDS panel you should make several modifications.<br>
To support a custom LVDS panel you should make several modifications.<br>


The following code references Variscite panel in arch/arm64/boot/dts/freescale/{{#var:DEFAULT_DTB}} under kernel source tree
The following code references Variscite panel in arch/arm64/boot/dts/freescale/{{#replace:{{#var:DEFAULT_DTB}}|.dtb|.dts}} under kernel source tree


<pre>
<pre>
Line 72: Line 73:
};
};
</pre>
</pre>
</pre>
 
{{#ifexpr: {{#var:YOCTO_VERSION}} > 3.0 |
= Known issues and limitations =
Due to limited video PLL frequency points on NXP i.MX8MP, the current LVDS driver implementations only supports 74.25 MHz for single channel LVDS and 148.5 MHz for dual channel LVDS.
 
To workaround this limitation, some manual adjustments may be implemented.
 
The file arch/arm64/boot/dts/freescale/imx8mp.dtsi sets video_pll1_out to 1039500000000 (1039.5 MHz).
 
The media_ldb_root_clk (parent of the LVDS clock) is provided by dividing video_pll1_out for a reasonable integer value.
 
The LVDS clock is always given by media_ldb_root_clk / 7.
 
Let's assume we want to achieve 70 MHz, the target value for media_ldb_root_clk is 70 MHz * 7 = 490 MHz
 
Multiplying media_ldb_root_clk for a reasonable integer number (let's say 2), we get video_pll1_out: 490 MHz * 2 = 980 MHz.
 
Now we have to force video_pll1_out to provide this specific value (980000000).
 
* we need to update video_pll1_out with this new value in the ''clock-controller'' node of the file arch/arm64/boot/dts/freescale/imx8mp.dtsi
* we need to introduce a clock setting providing this value in the file drivers/clk/imx/clk-pll14xx.c
 
The table ''imx_pll1443x_tbl'' provides the lines with the following set of values
 
rate, mdiv, pdiv, sdiv, kdiv
 
These values are part of the formula
 
rate = 24 MHz * (mdiv + kdiv / 65536) / (pdiv * 2 ^ sdiv)
 
Let's make things easy and assume kdiv = 0 and sdiv = 1.
 
In order to get a rate of 980 MHz we can just add the following line in the table ''imx_pll1443x_tbl'' (keeping the rate in descending order)
 
(980000000U, 245, 3, 1, 0)
 
As last step, at the end of the function ''imx8mp_ldb_encoder_atomic_check'' in the driver drivers/gpu/drm/imx/imx8mp-ldb.c, the following lines must be commented out
 
<syntaxhighlight lang="c">
/*
* Due to limited video PLL frequency points on i.MX8mp,
* we do mode fixup here in case any mode is unsupported.
*/
if (ldb->dual)
mode->clock = mode->clock > 100000 ? 148500 : 74250;
else
mode->clock = 74250;
</syntaxhighlight>
|}}
 
= Rotating the Weston display =
{{WESTON_DISPLAY_ROTATE}}

Latest revision as of 14:58, 22 March 2024

Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release RELEASE_ZEUS_V1.0_DART-MX8M-PLUS.
To view this page for a specific Variscite SoM and software release, please follow these steps:

  1. Visit variwiki.com
  2. Select your SoM
  3. Select the software release
DART-MX8M-PLUS Display

HDMI, MIPI-DSI and LVDS

DART-MX8M-PLUS SoC supports LVDS, HDMI and MIPI-DSI interfaces. DART-MX8M-PLUS carrier board comes with LVDS and HDMI connectors, so you can easily connect LVDS and HDMI displays.
Connecting MIPI-DSI display to DART-MX8M-PLUS carrier board requires designing a custom connector.

Adding custom LVDS panel

DART-MX8M-PLUS evaluation kit comes with 800x480 LCD panel. DART-MX8M-PLUS DTS file was created with this panel in mind.
To support a custom LVDS panel you should make several modifications.

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

panel {
	compatible = "sgd,gktw70sdae4se", "panel-lvds";
	backlight = <&backlight>;
	width-mm = <153>;
	height-mm = <87>;
	label = "gktw70sdae4se";
	data-mapping = "jeida-24";
	status = "okay";

	panel-timing {
		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>;
	};
...
};

&ldb {
        status = "okay";

        lvds-channel@0 {
                fsl,data-mapping = "jeida";
                fsl,data-width = <24>;
                status = "okay";
...
};

You should modify panel "data-mapping" and "display-timings" properties to match your panel specification.
You should also modify ldb (internal LVDS bridge) "fsl,data-mapping" and "fsl,data-width" properties to match your panel specification.
Supported "data-mapping" values are "jeida-18", "jeida-24" and "vesa-24".
Supported "fsl,data-mapping" values are "jeida", and "spwg".
Supported "fsl,data-width" values are <18>, and <24>.

For dual channel LVDS panels add fsl,dual-channel property to ldb node, as in the example below:

&ldb {
        status = "okay";
        fsl,dual-channel;

        lvds-channel@0 {
                fsl,data-mapping = "jeida";
                fsl,data-width = <24>;
                status = "okay";
...
};


Rotating the Weston display

To rotate the Weston display, edit /etc/xdg/weston/weston.ini.

For example, rotate the display 90 degrees:

[output]
name=LVDS-1
transform=90

For more information, see the weston man pages: