Why and how cboot select different resolution with different display monitor?

1.For jetson nano reference board, when i connect it with two different display monitors, the cboot select different resolution, below
are bootloader uart logs(cboot stage):
1)
[0002.394] Proceeding to Cold Boot
[0002.397] starting app android_boot_app
[0002.401] Device state: unlocked
[0002.404] display console init
[0002.413] could not find regulator
[0002.416] hdmi cable connected
[0002.431] edid read success
[0002.449] DT entry for leds-pwm not found
[0002.453] edid read success
[0002.456] width = 640, height = 480, frequency = 25174825
[0002.461] width = 3840, height = 2160, frequency = 594000000
[0002.467] width = 3840, height = 2160, frequency = 297000000
[0002.472] width = 1920, height = 1080, frequency = 148500000
[0002.478] width = 1920, height = 1080, frequency = 148351648
[0002.484] width = 1920, height = 1080, frequency = 74175824
[0002.489] width = 1920, height = 1080, frequency = 74175824
[0002.495] width = 1920, height = 1080, frequency = 148351648
[0002.500] width = 720, height = 576, frequency = 26973026
[0002.506] width = 720, height = 480, frequency = 26973026
[0002.511] width = 1280, height = 720, frequency = 74175824
[0002.517] width = 640, height = 480, frequency = 25174825
[0002.522] width = 3840, height = 2160, frequency = 593406593
[0002.528] width = 3840, height = 2160, frequency = 296703296
[0002.533] width = 3840, height = 2160, frequency = 296703296
[0002.539] width = 3840, height = 2160, frequency = 296703296
[0002.545] width = 3840, height = 2160, frequency = 296703296
[0002.550] Best mode Width = 1920, Height = 1080, freq = 148351648

[0002.420] Proceeding to Cold Boot
[0002.423] starting app android_boot_app
[0002.427] Device state: unlocked
[0002.430] display console init
[0002.438] could not find regulator
[0002.442] hdmi cable connected
[0002.457] edid read success
[0002.470] DT entry for leds-pwm not found
[0002.476] edid read success
[0002.479] width = 1920, height = 1080, frequency = 148500000
[0002.484] width = 1920, height = 1080, frequency = 148500000
[0002.490] width = 0, height = 0, frequency = 0
[0002.495] width = 1280, height = 720, frequency = 74175824
[0002.500] Best mode Width = 1280, Height = 720, freq = 74175824

Why one best mode resolution is 19201080 and the other is 1280720 ?
and for cboot how to make decision to select which resolution?

2.For my own custome jetson nano board, when i connect it with the above same two display monitors,
why the best mode resolution are both 640480 but not be 19201080 which i expect? log is as below:
[0002.182] Proceeding to Cold Boot
[0002.185] starting app android_boot_app
[0002.189] Device state: unlocked
[0002.192] display console init
[0002.201] could not find regulator
[0002.204] hdmi cable connected
[0002.220] edid read success
[0002.234] DT entry for leds-pwm not found
[0002.239] edid read success
[0002.242] width = 3840, height = 1080, frequency = 297000000
[0002.247] Best mode Width = 640, Height = 480, freq = 25174825

many thanks & best regards!

I won’t be able to answer this, especially since you are asking within CBoot, but the following will probably help…

The HDMI monitors provide information about themselves via the EDID data, including possible modes. On a desktop PC there are both the basic modes and the “extension” modes. The driver in the embedded version does not accept “extension” modes. Additionally, there is a predefined set of allowed modes, and the non-extension modes will only be allowed if they are within that set of predefined modes.

Once the system is actually booted you can ask the driver to tell you exactly what it thinks of every EDID mode. The log can be told to have the driver describe why it allows or denies every mode. To do so, edit file “/etc/X11/xorg.conf”. Within Section "Device", add this line:
Option "ModeDebug"
…then reboot with the monitor of interest.

Note that when you are in a GUI and run the command “echo $DISPLAY” it will either show “:0” or “:1”, and that the log associated with this will then be named after that. Assuming “:0”, the log with the extended information on modes would be:
/var/log/Xorg.0.log

You could rename this as Xorg_monitorName.txt and attach to the forum, and the mode pool which is available will probably offer clues as to why one monitor uses one mode and the other does not use the same mode.

Hi,

I just check the code that makes this mode selection.

There is a preferred mode list in cboot which is from 480p ~ 1080p.
The modes in list are VIC # 1,2,4,16,17,19,31,32,33,34.

You could check the detail for each mode from the wiki.
https://en.wikipedia.org/wiki/Extended_Display_Identification_Data -> EIA/CEA-861 standard resolutions and timings

It will compare the modes coming from your EDID one by one. If that mode is equal to the one on the list, it will pick it and keep the one with highest frequency. If none of them is matched, then it will use default 640x480 mode (vic # 1)

  1. In your case 1, “Width = 1920, Height = 1080, freq = 148351648” matches the mode of vic #16, so cboot picks it.

  2. For case 2, 1920x1080 with pclk 148500000 frequency is not supported, so it is not chosen. But that 1280x720 one is on the list, so pick it.

  3. I don’t know what is going on on your custom carrier board. It looks like something wrong with EDID read. What modes do you see in kernel?

Dear linuxdev,
anyway, thanks for your detailed information.

Dear WayneWWW,
Thank you so much.
1.For my own custom carrier board, the reason is that the firmware of one extern soc used in the board only support 3840x1080(frequency = 297000000), we will modify it later.

2.I can’t visit https://en.wikipedia.org/wiki/Extended_Display_Identification_Data, Could you kindly show me the details directly in the topic and tell me the width/height/frequency of VIC # 1,2,4,16,17,19,31,32,33,34 ?

thanks!

Dear nvidia,
Do you have any update? thanks!

Hi,

You should be able to find similar info by the website supported in your country.

Anyway, here is the list from the spec.

Dear WayneWWW,
Thank you very much.
Could you kindly show me here the width/height/frequency of VIC # 1,2,4,16,17,19,31,32,33,34 in cboot code not from the spec? The code(information) is not public for us (nvidia’s customers) but important for me in my current project.

many thanks!

Hi,

Here is the result from the wiki.

Dear WayneWWW,
Thanks for the information.
Could you show me here the width/height/frequency of VIC # 1,2,4,16,17,19,31,32,33,34 in cboot code?

best regards!

Dear WayneWWW,
waiting for your reply…

many many thanks!

Hi,
We would suggest check with your network vendor why you are not able to access the wiki page.