EDID clock settings may not be applied

Hi all,

I am using a display port and a custom EDID to drive an LCD.
I want to set the clock to around 30MHz to match the LCD I am using, but when I measured the lvds signal it was 40MHz.

The EDID was changed so that the clocks were different and the LVDS clock was measured.
The clock settings from 20MHz to 27MHz were output as set.
However, when the clock setting was from 27MHz to 40MHz, 40MHz was output.
Is there some limitation in the device driver?

Attached is the EDID when the clock is set to 27.5MHz.

Configuration
[jetson]–dp–[IC]–lvds–[LCD]

EDID

00 FF FF FF FF FF FF 00 3E 54 28 07 00 00 00 00
17 1C 01 03 80 30 1B 78 AE 40 A5 A4 55 4E A0 26
11 50 54 B1 0C 00 71 4F 81 80 81 00 95 00 D1 C0
01 01 01 01 01 01 BE 0A 20 C0 30 E0 13 10 18 48
3A 00 6D 41 00 00 00 18 00 00 00 FD 00 37 4B 1E
50 11 00 0A 20 20 20 20 20 20 00 00 00 FC 00 4F
52 54 55 53 54 45 43 48 0A 44 58 37 30 32 38 FF
00 4C 54 4B 30 52 30 31 31 32 34 30 30 0A 00 46

I can’t answer that, but the EDID does show as valid. However, it doesn’t mean the GPU can use all modes. If you add “ModeDebug” to the right part of “/etc/X11/xorg.conf”, then the GPU log will tell you why it rejects any unaccepted mode:

Section "Device"
   Option "ModeDebug"
...

Then reboot and post the log listed in:
ls -ltr /var/log/Xorg.*.log | tail -n 1

The log is attached.
Do you see the cause of the problem in the log?
(EE) is only the following what does this mean?
debug.log (193.3 KB)

[     9.058] (EE) NVIDIA(0): Failed to allocate NVIDIA Error Handler

You can ignore that error. Not sure of the cause, but it seems to have been there for a very long time, and is probably related to a difference in features of the integrated GPU (iGPU) versus discrete GPU (dGPU) of a desktop PC.

For reference, with that monitor’s EDID, these are the accepted modes available:

[     9.042] (II) NVIDIA(GPU-0): --- Modes in ModePool for ORTUSTECH (DFP-1) ---
[     9.042] (II) NVIDIA(GPU-0): "nvidia-auto-select" :  800 x  480 @  55.6 Hz  (from: EDID, Detailed)
[     9.042] (II) NVIDIA(GPU-0): "1280x800"           : 1280 x  800 @  59.8 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "1280x800_60"        : 1280 x  800 @  59.8 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "1024x768"           : 1024 x  768 @  70.1 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "1024x768_70"        : 1024 x  768 @  70.1 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "1024x768_60"        : 1024 x  768 @  60.0 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "800x600"            :  800 x  600 @  60.3 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "800x600_60"         :  800 x  600 @  60.3 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "800x480"            :  800 x  480 @  55.6 Hz  (from: EDID, Detailed)
[     9.042] (II) NVIDIA(GPU-0): "800x480_56"         :  800 x  480 @  55.6 Hz  (from: EDID, Detailed)
[     9.042] (II) NVIDIA(GPU-0): "720x400"            :  720 x  400 @  70.0 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "720x400_70"         :  720 x  400 @  70.0 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "640x480"            :  640 x  480 @  67.1 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "640x480_67"         :  640 x  480 @  67.1 Hz  (from: EDID)
[     9.042] (II) NVIDIA(GPU-0): "640x480_60"         :  640 x  480 @  59.9 Hz  (from: EDID, CEA)
[     9.043] (II) NVIDIA(GPU-0): --- End of ModePool for ORTUSTECH (DFP-1): ---

I don’t know the exact mode in question regarding the specific clock measurement, but if you look in the log, you will see many lines similar to:

Validating Mode "1280x800d60"

For a list you can see “grep "Validating Mode " debug.log” (the log file name you attached is debug.log, so this is what I grep). Do you see the mode you are interested in? If so, then the driver will say if the mode is accepted, or if not, why it is rejected.

This is the item I want to set. It does not appear to be rejected.

Validating Mode "800x480_56":
  Mode Sources: EDID, Detailed
  800 x 480 @ 56 Hz
    Pixel Clock      : 27.50 MHz
  ~~
  Mode "800x480_56" is valid.

I see that nvidia-auto-select is used as the default mode.
Is “nvidia-auto-select” different from “800x480_56”?

(II) NVIDIA(0): Adding implicit MetaMode: "DP-0: nvidia-auto-select { ViewPortIn = 800 x 450, ViewPortOut = 800 x 450 + 0 + 15 }"

If I want to explicitly select “800x480_56” instead of using nvidia-auto-select, how do I add this to xorg.conf?
This is the current xorg.conf.

# 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"
EndSection

Someone from NVIDIA may have to answer, but try adding or editing this section Screen:

Section "Screen"
    Identifier    "Default Screen"
    Monitor        "Configured Monitor"
    Device        "Configured Video Device"
    DefaultDepth    24
    SubSection "Display"
        Depth    24
        Modes     "800x480"
    EndSubSection
EndSection 

If that does not work, perhaps edit the “800x480” to be “800x480_56” (I’m not positive about syntax of scan rate). Mostly I’m thinking this also needs a Monitor section before the Screen section will associate the setting to the monitor. I’m not sure on a Jetson what should be in that section. There is a default, but I’m not sure if the above will apply to default when no Monitor section is present.

I think that @linuxdev is correct.
Just in case it isn’t straight forward, you may also experiment using xrandr.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.