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}";
}
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
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.
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: