Apparently the EID has no acknowledgement and Jetson TK1 just shuts it off. I am not going to use HDMI eventually but I am curious if I can just bypass EID checking and make a pretty cheap screen working for my debug purpose.
[ 2383.607465] utmi_phy_restore_end: timeout waiting for USB_USBCMD_RS
[ 2383.777604] usb 3-1: reset full-speed USB device number 2 using tegra-ehci
[ 2383.832056] tegradc tegradc.1: nominal-pclk:154012000 parent:462000000 div:3.0 pclk:154000000 152471880~167873080
[ 2436.655271] tegra_dc_hdmi_irq: start
[ 2436.655972] tegra_dc_hdmi_irq: end
[ 2436.656319] hdmi_state_machine_worker (tid ea5d5a80): state 4 (Enabled), hpd 0, pending_hpd_evt 1
[ 2436.656466] hdmi_state_machine_set_state_l: switching from state 4 (Enabled) to state 5 (Wait for HPD reassert)
[ 2438.159526] hdmi_state_machine_worker (tid ea5d5a80): state 5 (Wait for HPD reassert), hpd 0, pending_hpd_evt 0
[ 2438.160075] hdmi_state_machine_set_state_l: switching from state 5 (Wait for HPD reassert) to state 0 (Reset)
[ 2438.160292] hdmi_state_machine_worker (tid ea5d5a80): state 0 (Reset), hpd 0, pending_hpd_evt 0
[ 2438.175916] hdmi_disable_l: audio_switch 0
[ 2438.176521] hdmi_disable_l: hpd_switch 0
[ 2438.176961] HDMI from connected to disconnected
[ 2438.193891] hdmi_state_machine_set_state_l: switching from state 0 (Reset) to state 1 (Check Plug)
[ 2438.203975] hdmi_state_machine_worker (tid ea5d5a80): state 1 (Check Plug), hpd 0, pending_hpd_evt 0
[ 2438.204004] hdmi_disable_l: audio_switch 0
[ 2438.204010] hdmi_disable_l: hpd_switch 0
[ 2438.204018] hdmi_state_machine_set_state_l: switching from state 1 (Check Plug) to state 3 (Disabled)
[ 2466.208522] tegra_dc_hdmi_irq: start
[ 2466.208850] tegra_dc_hdmi_irq: end
[ 2466.209574] hdmi_state_machine_worker (tid ea5d5a80): state 3 (Disabled), hpd 1, pending_hpd_evt 1
[ 2466.209729] hdmi_state_machine_set_state_l: switching from state 3 (Disabled) to state 0 (Reset)
[ 2466.249652] hdmi_state_machine_worker (tid ea5d5a80): state 0 (Reset), hpd 1, pending_hpd_evt 0
[ 2466.249747] hdmi_disable_l: audio_switch 0
[ 2466.249799] hdmi_disable_l: hpd_switch 0
[ 2466.249867] hdmi_state_machine_set_state_l: switching from state 0 (Reset) to state 1 (Check Plug)
[ 2466.259538] hdmi_state_machine_worker (tid ea5d5a80): state 1 (Check Plug), hpd 1, pending_hpd_evt 0
[ 2466.259643] hdmi_state_machine_set_state_l: switching from state 1 (Check Plug) to state 2 (Check EDID)
[ 2466.320770] hdmi_state_machine_worker (tid ea5d5a80): state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[ 2466.326766] tegra-i2c tegra12-i2c.3: no acknowledge from address 0x50
[ 2466.327993] hdmi_state_machine_set_state_l: switching from state 2 (Check EDID) to state 2 (Check EDID)
[ 2466.387571] hdmi_state_machine_worker (tid ea5d5a80): state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[ 2466.388834] tegra-i2c tegra12-i2c.3: no acknowledge from address 0x50
[ 2466.389360] hdmi_state_machine_set_state_l: switching from state 2 (Check EDID) to state 2 (Check EDID)
[ 2466.450144] hdmi_state_machine_worker (tid ea5d5a80): state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[ 2466.452780] tegra-i2c tegra12-i2c.3: no acknowledge from address 0x50
[ 2466.453734] hdmi_state_machine_set_state_l: switching from state 2 (Check EDID) to state 2 (Check EDID)
[ 2466.514671] hdmi_state_machine_worker (tid ea5d5a80): state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[ 2466.517018] tegra-i2c tegra12-i2c.3: no acknowledge from address 0x50
[ 2466.517956] hdmi_state_machine_set_state_l: switching from state 2 (Check EDID) to state 2 (Check EDID)
[ 2466.577558] hdmi_state_machine_worker (tid ea5d5a80): state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[ 2466.578766] tegra-i2c tegra12-i2c.3: no acknowledge from address 0x50
[ 2466.579081] Failed to read EDID after 5 times. Giving up.
[ 2466.579320] hdmi_disable_l: audio_switch 0
[ 2466.579370] hdmi_disable_l: hpd_switch 0
[ 2466.579437] hdmi_state_machine_set_state_l: switching from state 2 (Check EDID) to state 3 (Disabled)
Without EDID/DDC you can fill in the Xorg.conf manually. You’ll need to have all of the monitor’s specifications. Pay particular attention to info on modeline in that last URL.
I just read the edid information after I plugged the display into HDMI. (The screen is still blank or with flickering lines)
The EDID information looks sloppy with blank Id and ModelName. However, the modelline seems to be reasonable to a 1024x600 monitor except it is not working.
I added a custom Section “Monitor” in /etc/X11/xorg.conf, but seems it is not overriding the settings from the I2C ROM…
Connected the same LCD monitor to my PC running Windows 10, and it is working.
There may be clues in “/var/log/Xorg.0.log”. Manually configuring a monitor though is one of my least favorite things…DDC/EDID is really nice when it all works, but when it doesn’t, there’s a lot of just trying things out and researching on the internet. There are several aspects of configuring things which depend upon the Xorg ABI/version, other things depend on the nVidia driver version.
Perhaps nVidia publishes the typical README as to what parameters can be configured in Xorg.conf for this version of display driver? The desktop drivers come with such a file and talks about options like:
Option "IgnoreEDID" "boolean"
…anyone know where to get that README for this exact video driver?
.... All other things
[ 15.284] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 16.421] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 16.466] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 18.511] (II) XKB: reuse xkmfile /var/lib/xkb/server-34CEB476A3CB596DA76FD7010A029F76732EF824.xkm
# I plugged in the monitor's HDMI cable here...
[ 43.890] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[ 43.891] (**) NVIDIA(0): device DFP-1 (Using EDID frequencies has been enabled on
[ 43.894] (**) NVIDIA(0): all display devices.)
[ 44.024] (II) NVIDIA(0): Setting mode "NULL"
[ 44.280] (II) NVIDIA(0): Setting mode "HDMI-0: nvidia-auto-select @1024x600 +0+0 {ViewPortIn=1024x600, ViewPortOut=1024x600+0+0}"
In the code, it seems it is accepting the 1024x600 resolution, without giving other timing information. (PCLK may exceed the screen’s spec, but I don’t have neither the LCD’s datasheet nor PCLK reading…)
Update!! I got some readings from dmesg as well:
43.753914] tegra_dc_hdmi_irq: start
[ 43.754790] tegra_dc_hdmi_irq: end
[ 43.764339] hdmi_state_machine_worker (tid edb06080): state 3 (Disabled), hpd 1, pending_hpd_evt 1
[ 43.764524] hdmi_state_machine_set_state_l: switching from state 3 (Disabled) to state 0 (Reset)
[ 43.805467] hdmi_state_machine_worker (tid edb06080): state 0 (Reset), hpd 1, pending_hpd_evt 0
[ 43.805636] hdmi_disable_l: audio_switch 0
[ 43.805743] hdmi_disable_l: hpd_switch 0
[ 43.805880] hdmi_state_machine_set_state_l: switching from state 0 (Reset) to state 1 (Check Plug)
[ 43.817794] hdmi_state_machine_worker (tid edb06080): state 1 (Check Plug), hpd 1, pending_hpd_evt 0
[ 43.818315] hdmi_state_machine_set_state_l: switching from state 1 (Check Plug) to state 2 (Check EDID)
[ 43.879498] hdmi_state_machine_worker (tid edb06080): state 2 (Check EDID), hpd 1, pending_hpd_evt 0
[ 43.896678] panel size 15 by 10
[ 43.903354] handle_check_edid_l: audio_switch 0
[ 43.913866] Display connected, hpd_switch 1
[ 43.924914] hdmi_state_machine_set_state_l: switching from state 2 (Check EDID) to state 4 (Enabled)
[ 43.926473] hdmi_state_machine_worker (tid edb06080): state 4 (Enabled), hpd 1, pending_hpd_evt 0
[ 43.934819] pll_dyn_ramp_find_cfg: Failed to set pll_d2 out-of-table rate 96000000
[ 43.979715] tegradc tegradc.1: nominal-pclk:32000000 parent:100000000 div:3.5 pclk:28571428 31680000~34880000
[ 43.979741] tegradc tegradc.1: pclk out of range!
[ 43.985712] tegradc tegradc.1: tegra_dc_init: tegra_dc_program_mode failed
[ 43.986423] tegradc tegradc.1: _tegra_dc_controller_enable: tegra_dc_init failed
[ 44.305498] pll_dyn_ramp_find_cfg: Failed to set pll_d2 out-of-table rate 96000000
[ 44.306153] tegradc tegradc.1: nominal-pclk:32000000 parent:100000000 div:3.5 pclk:28571428 31680000~34880000
[ 44.306156] tegradc tegradc.1: pclk out of range!
[ 44.306159] tegradc tegradc.1: tegra_dc_init: tegra_dc_program_mode failed
[ 44.306232] tegradc tegradc.1: _tegra_dc_controller_enable: tegra_dc_init failed
[ 44.319639] pll_dyn_ramp_find_cfg: Failed to set pll_d2 out-of-table rate 96000000
[ 44.320474] tegradc tegradc.1: nominal-pclk:32000000 parent:100000000 div:3.5 pclk:28571428 31680000~34880000
[ 44.320479] tegradc tegradc.1: pclk out of range!
[ 44.320485] tegradc tegradc.1: tegra_dc_init: tegra_dc_program_mode failed
[ 44.320640] tegradc tegradc.1: _tegra_dc_controller_enable: tegra_dc_init failed
I don’t believe it is possible to set up Xorg.conf manually without the data sheet…you’d have to be very lucky.
For the current configuration issue, this line seems to be relevant from the log:
pll_dyn_ramp_find_cfg: Failed to set pll_d2 out-of-table rate 96000000
Although I do not know of a proper approach to fix this, it seems to be something which could be edited in tegra21_dvfs.c or tegra21_clocks.c (optionally a config value would need to be changed to work within existing settings). Perhaps someone could comment on whether it is more appropriate to change the config file or to add a new entry for pll_d2.