How can I customize carrier board via device tree?

Hello,

We use Jetson AGX Xavier on our custom carrier board.
The changes we made in our board is :

  • Not using of DP0_TXD0~3
  • Not using of DP1_TXD0~3
  • Deleted USB-C/Display Port Switches (removed two of these)
  • Display is only be able to be connected to HDMI_DP2_TX0~3 and DP_AUX_CH2_N/P

To apply these changes I downloaded BSP for NVIDIA L4T 32.7.2 : Jetson Linux R32.7.2 Release Page | NVIDIA Developer

And I reverse-compiled to get dts from dtb :
dtc -I dtb -O dts -o output.dts tegra194-p2888-0001-p2822-0000.dtb

And I changed “okay” to “disabled” for :
host1x → sor → status
host1x → sor → dp-display → status
host1x → sor1 → status
host1x → sor1 → dp-display → status
host1x → sor3 → status
host1x → sor3 → dp-display → status
from output.dts

With this way, I only okayed for host1x → sor2 → hdmi-display → status

I did this because we customized these way below :

  • Not using of DP0_TXD0~3
  • Not using of DP1_TXD0~3
  • Deleted USB-C/Display Port Switches (removed two of these)
  • Display is only be able to be connected to HDMI_DP2_TX0~3 and DP_AUX_CH2_N/P

And I re-compiled dtb file :
dtc -I dts -O dtb -o tegra194-p2888-0001-p2822-0000.dtb output.dts

And finally I flashed newly compiled dtb file - tegra194-p2888-0001-p2822-0000.dtb :

But nothing is displayed on my lcd monitor, which is connected to hdmi port of our customized carrier board.

I will attach the console log here.
Please help me make my thing work!

Thanks in advance!!!
console.txt (124.1 KB)
syslog.txt (12.6 KB)

There is no error log for HDMI head. HDMI got plugged and the edid seems getting read. The mode is a 1080p one.

If you still cannot see the screen, please review the hardware design first.

Hello Wayne,

Our HW people is looking this issue with schematics but they found a monitor, which works fine!
It is LG monitor. It connects to our carrier board via hdmi-to-dvi cable. Yes, this monitor only supports DVI.
Our carrier board only supports HDMI. So HDMI-to-DVI cable is needed.

So I captured many log messages and uploaded here so that you can review. Could you please check my log messages here?

bootup_no_monitor_VPU.txt (99.8 KB)
sysfs_contents.txt (5.4 KB)
pluggingin_hdmi_cable_to_LG_monitor.txt (4.1 KB)
pluggingin_hdmi_cable_to_AOC_monitor.txt (5.6 KB)
xorg_bootup.txt (9.7 KB)
xorg_AOC.txt (11.2 KB)
xorg_LG.txt (10.4 KB)

The LG monitor is the one that only WORKS FINE!
The AOC monitor is the one that DOESN’T WORK well. Actually all HDMI supported monitors near me DON’T WORK.
So far only the LG monitor that doesn’t support HDMI works.

This time, I used pure Nvidia image flashed via sdk manager. I didn’t make any change on device tree or kernel config or anything.
This image has been flashed on a EVB-like carrier board. And user account creation and locale settings has been done on the EVB-like carrier board. But the carrier board I am now working on and we targeted is another one. This targetted carrier board is not like EVBoard. It has differences I already mentioned :

  • Not using of DP0_TXD0~3
  • Not using of DP1_TXD0~3
  • Deleted USB-C/Display Port Switches (removed two of these)
  • Display is only be able to be connected to HDMI_DP2_TX0~3 and DP_AUX_CH2_N/P

With looking on my log messages, could you guide us anything?
I’d like to listen your opinion.

Do you still think this is HW schematics problem only?

Thank you very much!

I don’t think your DVI converter may prove anything.

Please just check pure HDMI monitors cases. If one monitor can work on devkit but failed on your board, then check the hardware schematic.

I believe this is hardware issue.

Hello Wayne,

Our HW people suggests to try HDMI tunning.

https://developer.download.nvidia.com/assets/embedded/secure/jetson/xavier/docs/DA-09737-001_v1.0.pdf?5IE32OZFsqs9lLg7Bgcxo-jHwaCfFRCrSwat6_IXVyVt4PZZZITH9w2ckfn3INALlRTN7lpiNjhjbK78Avc5hRlzcYP9ITREIt0TJ6DxL2fEMkC2oZgCIe__Ls0opQNecbmcyxDjr4o41-9Y1Tv5GrupI-mX02ArnHEHdT6X&t=eyJscyI6ImdzZW8iLCJsc2QiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5jb21cLyIsIm5jaWQiOiJlbS1uZXdzLTMxODcyMC12dDQ4In0

I read this document and understood I need to work with nvidia grahics driver to manipulate the register values. I wonder if I understood right.

By the way, Nvidia graphics driver is NOT an open source. Can I access the source code of nvidia graphics driver?

Is there any recommended method to do this HDMI tuning for developers like me?
The guide above doesn’t explain how to change register values.

Do you think this HDMI tunning is right approach for our problem?

No, the tuning is not done in the graphic driver. It is done in the kernel… and kernel is open source.

You can try the tuning. But I don’t guarantee it would work.

Hello WayneWWW,

on the HDMI Tuning Guide, they say to “disable HPD interrupt via software by setting the HPD pin to TRISTATE”.

Could you give me some information about how to do this with kernel source?

There is a pinmux cfg file under your Linux_for_Tegra/bootloader and that cfg file will be flashed to your board for pinmux confiugration.

The method to generate a new pinmux file is downloading the pinmux spreadsheet (a excel file) from the download centner.

You can generate the dts files by running that excel file.

And refer to Linux_for_Tegra/kernel/pinmux to convert those dts files to a new pinmux cfg file again.

I downloaded the pinmux spreadsheet : Jetson_AGX_Xavier_Series_Pinmux_Configuration_Template_v1.4.xlsm

And I use pinmux-dts2cfg.py this way :
$ sudo python ./pinmux-dts2cfg.py
–pinmux
addr_info.txt gpio_addr_info.txt por_val.txt
–mandatory_pinmux_file mandatory_pinmux.txt
tegra19x-jetson_agx-pinmux.dtsi
tegra19x-jetson_agx-gpio-default.dtsi
1.0 > tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg

$ sudo python ./pinmux-dts2cfg.py
–pad
pad_info.txt
tegra19x-jetson_agx-padvoltage-default.dtsi
1.0 > tegra19x-mb1-padvoltage-p2888-0000-a00-p2822-0000-a00.cfg

See I placed version number 1.0 at the command line. Should I have used 1.4 instead?

Are those versions between the spreadsheet and the command line of pinmux-dts2cfg.py have to be the same?

I’ve checked other cfg files in /home/armstrong/BSP_Tegra/Linux_for_Tegra/bootloader/t186ref/BCT and found that other cfg fiels are CFG 1.0

CFG version 1.0

Maybe I need to use 1.0 version of pinmux spreadsheet?

Please just follow what the readme file told you. If the cfg can be generated, then no need to worry about something like 1.0 or 1.4, they do not matter.

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