VAR-SOM-AM62 Display

From Variscite Wiki
Revision as of 16:13, 26 April 2023 by Nate (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release am62-yocto-dunfell-5.10.168_08.06.00.42-v1.0.
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
VAR-SOM-AM62 Display

Introduction

Display Interfaces

The VAR-SOM-AM62 exports the AM62x Sitara’s two single-link Open LVDS Display Interface transmitters (OLDITX) provided by the Display Subsystem (DSS) with the following main features:

  • Up to 170MHz input pixel data for each interface support: RGB[23:0], VS, HS, DE. Limited by the maximum data rate provided by the DISPC video port output connected to OLDITX.
  • One single-link OLDI output link mode.
  • Two single-link (duplicate) OLDI output link mode.
  • One dual-link OLDI output link mode.
  • 18-bit or 24-bit output with OLDI mapping modes (three or four LVDS data channels, one clock channel) per instance.
  • LVDS signaling: Compliant with ANSI/TIA/EIA644-A standard (Electrical Characteristics of Low Voltage Differential Signaling (LVDS) Interface Circuits).
  • LVDS transmit throughput performance: 1920x1080@60fps.
  • Up to 165 MHz pixel clock support with Independent PLL.
  • Test support features: Built-in pattern generator; loopback mode.

Adding custom LVDS panel

VAR-SOM-AM62 evaluation kit comes with 800x480 LCD panel. VAR-SOM-AM62 DTS file was created with this panel in mind. To support your custom LVDS panel, you should make several modifications

Referencing custom panel in the DTS file

The following code references the Variscite panel in arch/arm64/boot/dts/ti/k3-am625-var-som-symphony.dts under kernel source tree:

	display {
		compatible = "sgd,gktw70sdae4se";
		backlight = <&backlight>;
		status = "okay";

		port@0 {
			lcd_in0: endpoint {
				remote-endpoint = <&oldi_out0>;
			};
		};
	};

The compatible string is used to match the panel_desc structure in drivers/gpu/drm/panel/panel-simple.c:

...
static const struct of_device_id platform_of_match[] = {
	}, {
		.compatible = "sgd,gktw70sdae4se",
		.data = &sgd_gktw70sdae4se,
	}, {
};
...
static const struct drm_display_mode sgd_gktw70sdae4se_mode = {
	.clock = 30000,
	.hdisplay = 800,
	.hsync_start = 800 + 40,
	.hsync_end = 800 + 40 + 48,
	.htotal = 800 + 40 + 48 + 40,
	.vdisplay = 480,
	.vsync_start = 480 + 13,
	.vsync_end = 480 + 13 + 3,
	.vtotal = 480 + 13 + 3 + 29,
};

static const struct panel_desc sgd_gktw70sdae4se = {
	.modes = &sgd_gktw70sdae4se_mode,
	.bpc = 8,
	.num_modes = 1,
	.size = {
		.width = 154,
		.height = 87,
	},
	.delay = {
		.prepare = 50,
		.disable = 50,
	},
	.bus_flags = DRM_BUS_FLAG_DE_HIGH,
	.bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA,
	.connector_type = DRM_MODE_CONNECTOR_LVDS,
};

You should modify the "panel_desc" and "drm_display_modes" structures to match your panel specification and rebuild the kernel.

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