Hi guys, I met a problem when config the dcb from DP to HDMI.
Our custom board use an converter to convert the HDMI signal to VGA. Here is my configuration:
# Linux_for_Tegra/nano.conf
source "${LDK_DIR}/jetson-orin-nano-devkit-nvme.conf";
PINMUX_CONFIG="tegra234-mb1-bct-pinmux-p3767-hdmi-a03.dtsi"; # hdmi
PMC_CONFIG="tegra234-mb1-bct-padvoltage-p3767-hdmi-a03.dtsi"; # hdmi
EMMC_CFG="flash_t234_qspi_nvme.xml";
# ref: https://docs.nvidia.com/jetson/archives/r35.3.1/DeveloperGuide/text/HR/JetsonModuleAdaptationAndBringUp/JetsonOrinNxNanoSeries.html#configuring-the-uphy-lane
ODMDATA="gbe-uphy-config-9,hsstp-lane-map-3,hsio-uphy-config-0";
# https://docs.nvidia.com/jetson/archives/r36.2/DeveloperGuide/SD/FlashingSupport.html#using-flash-sh-with-orin-nx-and-nano
UPHYLANE="c7x2"
if [ "${UPHYLANE}" = "c7x1" ]; then
UPHYLANE_CONFIG="tegra234-mb1-bct-uphylane-si-c7x1.dtsi";
EMMC_CFG="flash_t234_qspi_nvme_c7.xml";
elif [ "${UPHYLANE}" = "c7x2" ]; then
UPHYLANE_CONFIG="tegra234-mb1-bct-uphylane-si-c7x2.dtsi";
EMMC_CFG="flash_t234_qspi_nvme_c7.xml";
fi
# update_flash_args:
update_flash_args()
{
# All updates should go into update_flash_args_common to allow
# for other files to include this file and override variables.
update_flash_args_common "$@"
if [ "${board_sku}" = "0001" ]; then
DTB_FILE=kenexs-v700.dtb;
elif [ "${board_sku}" = "0003" ]; then
DTB_FILE=kenexs-v700-nano.dtb;
else
echo "Error: Unrecognized module SKU ${board_sku}";
exit 1;
fi
TBCDTB_FILE="${DTB_FILE}";
}
# Linux_for_Tegra/sources/hardware/nvidia/platform/t23x/p3768/kernel-dts/kenexs-v700.dts
/dts-v1/;
#include "tegra234-p3767-0001-p3768-0000-a0.dts"
#include "tegra234-dcb-p3767-0000-hdmi.dtsi"
#include "cvb/kenexs-v700-common.dtsi"
/ {
model = "KENEXS V700 V01 Board";
/* C4 - PCIe0 10GigE AQC113-B1-I */
pcie@14160000 {
status = "okay";
max-link-speed = <0x3>;
};
};
When the #include "tegra234-dcb-p3767-0000-hdmi.dtsi" is not included in dts, the xrandr show as following:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
1920x1080 60.00*+ 59.94
1600x900 60.00
1280x1024 75.02 60.02
1280x720 59.94
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32
720x480 59.94 59.94
640x480 75.00 59.94
The screen list is not correct, and hot plug does not work.
But when the #include "tegra234-dcb-p3767-0000-hdmi.dtsi" is included, the display is failed to show up. It shows something like “input signal is not supported” on screen. And the xrandr’s output is:
Screen 0: minimum 8 x 8, current 640 x 480, maximum 32767 x 32767
Here are the logs:
Xorg.0.log (17.7 KB)
debug_serial.log (100.9 KB)
Could you try a native HDMI monitor first instead of converter?
Also, you have to do full flash but not just replace kernel dtb in /boot/dtb.
Hi, @WayneWWW
Could you try a native HDMI monitor first instead of converter?
Sorry. As the converter is soldered on our board, we cannot do for that.
Also, you have to do full flash but not just replace kernel dtb in /boot/dtb.
Yes, I’ve seen another post motioned it. I did do tho full flash by ./tools/kernel_flash/l4t_initrd_flash.sh
It is possible to test Xavier NX devkit + Orin NX with that monitor you are using and see if you would see same issue?
Sorry again. We do not have the devkit. 😳
How about you directly flash your board with p3509 config first? We guarantee the full display software from this config is correct.
Does “p3509 config” means p3509-a02+p3767-0000-maxn.conf ?
p3509-a02+p3767-0000.conf
diff --git a/tegra234-p3767-0001-p3509-a02.dts b/tegra234-p3767-0001-p3509-a02.dts
index 7457939..021321f 100644
--- a/tegra234-p3767-0001-p3509-a02.dts
+++ b/tegra234-p3767-0001-p3509-a02.dts
@@ -22,4 +22,24 @@
nvidia,dtbbuildtime = __DATE__, __TIME__;
compatible = "nvidia,p3509-0000+p3767-0001", "nvidia,p3767-0001", "nvidia,tegra234", "nvidia,tegra23x";
model = "NVIDIA Orin NX Developer Kit";
+
+ pcie@14100000 {
+ status = "okay";
+ };
+
+ /* C7 - PCIe2 M.2 Key-M */
+ pcie@141e0000 {
+ status = "okay";
+ num-lanes = <0x01>;
+ phys = <&p2u_gbe_0>;
+ phy-names = "p2u-0";
+ };
+
+ /* C9 - PCIe3 GigE RTL8111H */
+ pcie@140c0000 {
+ status = "okay";
+ num-lanes = <0x01>;
+ phys = <&p2u_gbe_1>;
+ phy-names = "p2u-0";
+ };
};
As our pcie config is as above, I change the dts, and rebuild and update it to kernel/dtb/tegra234-p3767-0001-p3509-a02.dtb. Then I do a full flash. After the system boot up. The xrandr’s output and the screen is the same as before.
please share lsmod result.
Module Size Used by
fuse 131072 3
lzo_rle 16384 36
lzo_compress 16384 1 lzo_rle
zram 32768 6
ramoops 28672 0
reed_solomon 20480 1 ramoops
gevfilter 69632 0
mvUniversalForEthernet 221184 0
nvgpu 2764800 14
aes_ce_blk 36864 0
crypto_simd 24576 1 aes_ce_blk
snd_soc_tegra210_ope 36864 1
snd_soc_tegra186_asrc 40960 1
cryptd 28672 1 crypto_simd
snd_soc_tegra186_dspk 20480 2
snd_soc_tegra210_iqc 16384 0
snd_soc_tegra186_arad 28672 2 snd_soc_tegra186_asrc
snd_soc_tegra210_mvc 20480 2
aes_ce_cipher 20480 1 aes_ce_blk
snd_soc_tegra210_dmic 20480 4
snd_soc_tegra210_afc 20480 6
snd_soc_tegra210_adx 32768 4
snd_soc_tegra210_mixer 49152 1
snd_soc_tegra210_amx 36864 4
ghash_ce 28672 0
snd_soc_tegra210_admaif 131072 1
snd_soc_tegra210_i2s 24576 6
snd_soc_tegra210_adsp 774144 1
snd_soc_tegra210_sfc 61440 4
snd_soc_tegra_pcm 16384 1 snd_soc_tegra210_admaif
sha2_ce 20480 0
snd_soc_tegra_machine_driver 16384 0
sha256_arm64 28672 1 sha2_ce
snd_hda_codec_hdmi 65536 1
sha1_ce 20480 0
nvadsp 118784 1 snd_soc_tegra210_adsp
atlantic 188416 0
snd_soc_tegra_utils 32768 3 snd_soc_tegra210_admaif,snd_soc_tegra_machine_driver,snd_soc_tegra210_adsp
r8168 499712 0
snd_soc_simple_card_utils 24576 1 snd_soc_tegra_utils
snd_soc_spdif_tx 16384 0
pwm_fan 24576 0
snd_hda_tegra 16384 0
snd_hda_codec 135168 2 snd_hda_codec_hdmi,snd_hda_tegra
userspace_alert 16384 0
snd_soc_tegra210_ahub 1273856 3 snd_soc_tegra210_ope,snd_soc_tegra210_sfc
ina3221 24576 0
tegra_bpmp_thermal 16384 0
tegra210_adma 28672 2 snd_soc_tegra210_admaif,snd_soc_tegra210_adsp
snd_hda_core 94208 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_tegra
spi_tegra114 32768 0
nv_imx219 20480 0
nvidia 1327104 0
nvmap 217088 32 nvgpu
ip_tables 36864 0
x_tables 53248 1 ip_tables
I don’t know what I’ve missed. But now the problem disappear. Here is what I’ve done.
We use USB-A as the flash port, and the ID pin is always pulled up. Referring to this, I use the following command to do flash:
# create system.img with usb host
echo "create system.img with usb host"
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
--external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_external.xml \
-p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml \
--no-systemimg" \
--network usb0 \
--no-flash nano external
# create initrd with usb device mode
echo "create initrd with usb device mode"
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
--external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_external.xml \
-p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml \
--no-systemimg" \
--network usb0 \
--use-backup-image nano-usb-client external
With the above command, no matter how many times I flash it, the display port is always missed in xrandr, which is the reason of this post. But after I’ve done a normal flash as the following:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \
--showlogs --network usb0 nano-usb-client internal
The problem disappear, the HDMI-0 shows up in xrandr’s output.
I try to reproduce the problem, but failed. May be it’s because that some device tree file is not updated.
Yes, that sounds like some software didn’t get updated in your method.