TX2 Custom Carrier Board Force Full HDMI Display

Hi, Everyone,

On a custom TX2 carrier board, the display EDID cannot be read properly yet. Though this is a problem by itself, we are looking for ways to get full-HD display without knowing the EDID.

How we can configure the kernel, the DTB, or xorg to get the display output to 1920x1080 resolution?

The kernel dmesg shows a few errors with HDMI power and reading EDID:

[ 0.458721] hdmi: couldn’t get regulator vdd_hdmi_5v0: -517
[ 0.460742] tegra-fuse-burn 3820000.efuse:efuse-burn: Fuse burn driver initialized
[ 0.460835] tegradc 15210000.nvdisplay: hdmi: no prod_list_hdmi_board, use default range

[ 2.635960] Parent Clock set for DC plld2
[ 2.639190] edid invalid
[ 2.640096] edid invalid
[ 2.640099] edid invalid
[ 2.640135] tegradc 15210000.nvdisplay: hdmi: pclk:25200K, set prod-setting:prod_c_54M
[ 2.652466] tmp451: Enabled overheat logging at 104.00C

[ 2.925253] tegra-i2c 3190000.i2c: no acknowledge from address 0x50
[ 2.926250] tegradc 15210000.nvdisplay: hdmi: edid read failed
[ 2.926303] tegradc 15210000.nvdisplay: hdmi: using fallback edid
[ 2.944298] gpio tegra-gpio wake71 for gpio=125(P:5)

I’ve created a ‘/etc/X11/xorg.conf’ by extending and modifying ‘/etc/X11/xorg.conf.t186_ref’:

root@tegra-ubuntu:/etc/X11# cat xorg.conf

Copyright © 2015, NVIDIA CORPORATION. All Rights Reserved.

This is the minimal configuration necessary to use the Tegra driver.

Please refer to the xorg.conf man page for more configuration

options provided by the X server, including display-related options

provided by RandR 1.2 and higher.

Disable extensions not useful on Tegra.

Section “Module”
Disable “dri”
SubSection “extmod”
Option “omit xfree86-dga”
EndSubSection
EndSection

Section “Device”
Identifier “Tegra0”
Driver “nvidia”

Option “AllowEmptyInitialConfiguration” “true”

Option "UseEdid" "False"

EndSection

Section “Monitor”
Identifier “DSI-0”
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
Option “DPMS”
Option “ModeValidation” “NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck”

# 1280x720 59.86 Hz (CVT) hsync: 44.77 kHz; pclk: 74.50 MHz
#Modeline "1280x720"   74.50  1280 1344 1472 1664  720 723 728 748 -hsync +vsync

#ubuntu@tegra-ubuntu:~/tmp2$ cvt 1920 1080 60
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

EndSection

Section “Screen”
Identifier “Screen0”
Device “Tegra0”
Monitor “DSI-0”
DefaultDepth 24
Option “NoLogo” “True”
SubSection “Display”
Depth 24
#Modes “1280x720”
Modes “1920x1080”
EndSubSection
EndSection

Though the xorg recognizes the sections, it could not set the display into 1920x1080 mode:

[ 743.455] (==) Using config file: “/etc/X11/xorg.conf”
[ 743.455] (==) Using system config directory “/usr/share/X11/xorg.conf.d”
[ 743.455] (==) No Layout section. Using the first Screen section.
[ 743.455] () |–>Screen “Screen0” (0)
[ 743.455] (
) | |–>Monitor “DSI-0”
[ 743.456] () | |–>Device “Tegra0”

[ 744.490] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[ 744.490] (
) NVIDIA(0): Depth 24, (–) framebuffer bpp 32
[ 744.490] (==) NVIDIA(0): RGB weight 888
[ 744.490] (==) NVIDIA(0): Default visual is TrueColor
[ 744.490] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[ 744.491] () NVIDIA(0): Option “ModeValidation” “NoDFPNativeResolutionCheck,NoVirtualSizeCheck,NoMaxPClkCheck,NoHorizSyncCheck,NoVertRefreshCheck,NoWidthAlignmentCheck”
[ 744.491] (
) NVIDIA(0): Option “UseEDID” “False”
[ 744.491] () NVIDIA(0): Enabling 2D acceleration
[ 744.491] (
) NVIDIA(0): Ignoring EDIDs
[ 744.493] (–) NVIDIA(0): Valid display device(s) on GPU-0 at SoC
[ 744.493] (–) NVIDIA(0): DFP-0
[ 744.494] (II) NVIDIA(0): NVIDIA GPU NVIDIA Tegra X2 (nvgpu) (GP10B) at SoC (GPU-0)
[ 744.494] (–) NVIDIA(0): Memory: 8039124 kBytes
[ 744.494] (–) NVIDIA(0): VideoBIOS:
[ 744.494] (–) NVIDIA(GPU-0): SAMSUNG (DFP-0): connected
[ 744.494] (–) NVIDIA(GPU-0): SAMSUNG (DFP-0): External TMDS
[ 744.494] (WW) NVIDIA(GPU-0): Unrecognized ModeValidation token
[ 744.494] (WW) NVIDIA(GPU-0): “NoDFPNativeResolutionCheck”; ignoring.
[ 744.495] (WW) NVIDIA(GPU-0): Unrecognized ModeValidation token “NoMaxPClkCheck”; ignoring.
[ 744.495] (WW) NVIDIA(GPU-0): Unrecognized ModeValidation token “NoHorizSyncCheck”;
[ 744.495] (WW) NVIDIA(GPU-0): ignoring.
[ 744.495] (WW) NVIDIA(GPU-0): Unrecognized ModeValidation token “NoVertRefreshCheck”;
[ 744.495] (WW) NVIDIA(GPU-0): ignoring.
[ 744.495] (WW) NVIDIA(GPU-0): Unrecognized ModeValidation token “NoWidthAlignmentCheck”;
[ 744.495] (WW) NVIDIA(GPU-0): ignoring.
[ 744.495] () NVIDIA(GPU-0): Mode Validation Overrides for SAMSUNG (DFP-0):
[ 744.495] (
) NVIDIA(GPU-0): NoVirtualSizeCheck
[ 744.496] (WW) NVIDIA(0): No valid modes for “DFP-0:1920x1080”; removing.
[ 744.496] (WW) NVIDIA(0):
[ 744.496] (WW) NVIDIA(0): Unable to validate any modes; falling back to the default mode
[ 744.496] (WW) NVIDIA(0): “nvidia-auto-select”.
[ 744.496] (WW) NVIDIA(0):
[ 744.496] (II) NVIDIA(0): Validated MetaModes:
[ 744.496] (II) NVIDIA(0): “DFP-0:nvidia-auto-select”
[ 744.496] (II) NVIDIA(0): Virtual screen size determined to be 1280 x 720

Is there a way to force the display to 1920x1080 resolution?

I’ve followed the thread about usb on custom board to get usb working https://devtalk.nvidia.com/default/topic/1001771/jetson-tx2/no-usb-support-on-custom-base-carrier-board/. It would be great if there are software-only solutions to get display to full-HD.

Please try to use “fallback mode” in edid.c, and you can pass your own edid to dc driver.

This works perfectly! Basically just dump the EDID from a known working monitor setup. Then replace the built-in default with the dumped data. When the monitor cannot be recognized, the new default EDID will be applied.

hello,minghua.chen

Where is the edid built-in data, I have the same hdmi problem. I do not kwon how to fix it

Hi suchb,

What’s your issue? Please file a new topic to clarify your request.

Hi WayneWWW,

Many thanks for your reply.

Blow is my new topic:
https://devtalk.nvidia.com/default/topic/1044298/jetson-tx2/how-to-disable-hdmi-hpd-and-using-a-built-in-edid-data-with-tx2-board-/

how to set fallback mode in edid.c ???

Please elaborate the steps.

Hi EmHardy,

If you read the edid.c src, you could see there is

bool use_fallback = false; in tegra_edid_get_monspecs()

If you set this to true, then it would use hardcoded edid value.

Forgot to mention we are using R32.2.1.

I am new to l4t, can you help me with steps and how to hardcode edid value. I have edid for 640x480 resolution.

Hi EmHardy,

Do you have trouble in rebuilding the kernel driver?
Please refer to our download center:

You could download the src here and tutorial is in L4T documentation.

If you look into the source code of edid.c, you should know where to hardcode the edid value.