Try to get a 1024x600 screen (Eleduino Raspberry Pi 7 Inch 1024x600 Pixel IPS HDMI) working for Jets

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)

Some information on history of VGA which worked without DDC/EDID:
https://devtalk.nvidia.com/default/topic/933221/jetson-tx1/changing-the-refresh-rate-of-the-monitor/post/4888014/#4888014

You may find useful information in this thread:
https://devtalk.nvidia.com/default/topic/930000/hdmi-display-for-rpi-works-on-jtk1-/?offset=10

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.

http://www.eleduino.com/7-0-Inch-1024x600-Pixel-IPS-Hdmi-Input-Capacitive-Touch-Screen-Support-Raspberry-pi-Banana-Pi-Pro-Be-p10533.html

ubuntu@tegra-ubuntu:~$ sudo get-edid | parse-edid
This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 2
No EDID on bus 4
[ 1238.692019] tegra-i2c tegra12-i2c.5: --- register dump for debugging ----
[ 1238.708066] tegra-i2c tegra12-i2c.5: I2C_CNFG - 0x2c00
[ 1238.722200] tegra-i2c tegra12-i2c.5: I2C_PACKET_TRANSFER_STATUS - 0xff0001
[ 1238.730000] tegra-i2c tegra12-i2c.5: I2C_FIFO_CONTROL - 0xe0
[ 1238.736082] tegra-i2c tegra12-i2c.5: I2C_FIFO_STATUS - 0x800040
[ 1238.742326] tegra-i2c tegra12-i2c.5: I2C_INT_MASK - 0xed
[ 1238.748183] tegra-i2c tegra12-i2c.5: I2C_INT_STATUS - 0x0
[ 1238.753862] tegra-i2c tegra12-i2c.5: msg->len - 1
[ 1238.759067] tegra-i2c tegra12-i2c.5: is_msg_write - 1
[ 1238.764582] tegra-i2c tegra12-i2c.5: next_msg->len - 1
[ 1238.770091] tegra-i2c tegra12-i2c.5: is_next_msg_write - 0
[ 1238.775758] tegra-i2c tegra12-i2c.5: buf_remaining - 1
[ 1238.781512] tegra-i2c tegra12-i2c.5: i2c transfer timed out, addr 0x0050, data 0x00
No EDID on bus 5
1 potential busses found: 3
128-byte EDID successfully retrieved from i2c bus 3
Looks like i2c was successful. Have a good day.
Checksum Correct

Section "Monitor"
        Identifier ""
        ModelName ""
        VendorName "ADA"
        # Monitor Manufactured week 1 of 2007
        # EDID version 1.3
        # Digital Display
        DisplaySize 150 100
        Gamma 1.00
        Option "DPMS" "false"
        Modeline        "Mode 0" 32.00 1024 1064 1112 1152 600 613 616 645 -hsync -vsync
EndSection

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?

A most identical topic by @KarlR, he gave up eventually (I guess), and @tiru claims it works for R21 Update 3, while it is not happening here.
https://devtalk.nvidia.com/default/topic/923782/hdmi-display-for-raspberry-pi-on-jetson-tk1/

.... 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 still don’t have the screen’s datasheet though…

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.