Display is not workig in Jetson Orin Nano custom carrier board

I am working Jetson Orin Nano custom carrier board. I can connect with monitor from mini display port in the board. I used both mini display to HDMI and mini display to Display port. It is not working.

I have checked /var/log/Xorg.0.log, there Nivida initially recognizes the display output , “DFP-0”. After short time, it again showed “DFP-0: disconnected”. Below I have attached the log output.

After checking in dmesg output it returned BPMP data failure and Probe failure.

[Mon Jan 27 14:44:13 2025] systemd[1]: Started Journal Service.
[Mon Jan 27 14:44:13 2025] nvmap_heap_init: nvmap_heap_init: created heap block cache
[Mon Jan 27 14:44:13 2025] nvmap_page_pool_init: Total RAM pages: 882078
[Mon Jan 27 14:44:13 2025] nvmap_page_pool_init: nvmap page pool size: 110259 pages (430 MB)
[Mon Jan 27 14:44:13 2025] nvmap_background_zero_thread: PP zeroing thread starting.
[Mon Jan 27 14:44:13 2025] random: systemd-journal: uninitialized urandom read (16 bytes read)
[Mon Jan 27 14:44:13 2025] random: systemd: uninitialized urandom read (16 bytes read)
[Mon Jan 27 14:44:13 2025] systemd-journald[238]: Received client request to flush runtime journal.
[Mon Jan 27 14:44:13 2025] random: crng init done
[Mon Jan 27 14:44:13 2025] random: 19 urandom warning(s) missed due to ratelimiting
[Mon Jan 27 14:44:14 2025] nvidia: loading out-of-tree module taints kernel.
[Mon Jan 27 14:44:14 2025] nv_platform 13800000.display: Adding to iommu group 41
[Mon Jan 27 14:44:14 2025] platform 13800000.display:nvdisplay-niso: Adding to iommu group 42
[Mon Jan 27 14:44:14 2025] MRQ_EMC_DVFS_LATENCY table has no entries
[Mon Jan 27 14:44:14 2025] NVRM: failed to get bpmp data
[Mon Jan 27 14:44:14 2025] platform 13800000.display:nvdisplay-niso: Removing from iommu group 42
[Mon Jan 27 14:44:14 2025] nv_platform: probe of 13800000.display failed with error -1
[Mon Jan 27 14:44:14 2025] NVRM: The NVIDIA probe routine was not called for 1 device(s).
[Mon Jan 27 14:44:14 2025] NVRM: This can occur when a driver such as: 
                           NVRM: nouveau, rivafb, nvidiafb or rivatv 
                           NVRM: was loaded and obtained ownership of the NVIDIA device(s).
[Mon Jan 27 14:44:14 2025] NVRM: Try unloading the conflicting kernel module (and/or
                           NVRM: reconfigure your kernel without the conflicting
                           NVRM: driver(s)), then try loading the NVIDIA kernel module
                           NVRM: again.
[Mon Jan 27 14:44:14 2025] NVRM: No NVIDIA devices probed.

[Mon Jan 27 14:44:20 2025] Adding 294024k swap on /dev/zram5.  Priority:5 extents:1 across:294024k SS
[Mon Jan 27 14:44:21 2025] fuse: init (API version 7.32)
[Mon Jan 27 14:44:21 2025] bwmgr req failed for 37
[Mon Jan 27 14:44:21 2025] platform 13800000.display:nvdisplay-niso: Adding to iommu group 44
[Mon Jan 27 14:44:21 2025] nv_platform 13800000.display: Unbalanced pm_runtime_enable!
[Mon Jan 27 14:44:21 2025] MRQ_EMC_DVFS_LATENCY table has no entries
[Mon Jan 27 14:44:21 2025] NVRM: failed to get bpmp data
[Mon Jan 27 14:44:21 2025] platform 13800000.display:nvdisplay-niso: Removing from iommu group 44
[Mon Jan 27 14:44:21 2025] nv_platform: probe of 13800000.display failed with error -1
[Mon Jan 27 14:44:21 2025] NVRM: The NVIDIA probe routine was not called for 1 device(s).
[Mon Jan 27 14:44:21 2025] NVRM: This can occur when a driver such as: 
                           NVRM: nouveau, rivafb, nvidiafb or rivatv 
                           NVRM: was loaded and obtained ownership of the NVIDIA device(s).
[Mon Jan 27 14:44:21 2025] NVRM: Try unloading the conflicting kernel module (and/or
                           NVRM: reconfigure your kernel without the conflicting
                           NVRM: driver(s)), then try loading the NVIDIA kernel module
                           NVRM: again.
[Mon Jan 27 14:44:21 2025] NVRM: No NVIDIA devices probed.
[Mon Jan 27 14:44:21 2025] bwmgr req failed for 37
[Mon Jan 27 14:44:21 2025] ax88179_178a 1-2:1.0 eth0: ax88179 - Link status is: 1
[Mon Jan 27 14:44:21 2025] bwmgr req failed for 37
[Mon Jan 27 14:44:21 2025] platform 13800000.display:nvdisplay-niso: Adding to iommu group 44
[Mon Jan 27 14:44:21 2025] nv_platform 13800000.display: Unbalanced pm_runtime_enable!
[Mon Jan 27 14:44:21 2025] MRQ_EMC_DVFS_LATENCY table has no entries
[Mon Jan 27 14:44:21 2025] NVRM: failed to get bpmp data
[Mon Jan 27 14:44:21 2025] platform 13800000.display:nvdisplay-niso: Removing from iommu group 44
[Mon Jan 27 14:44:21 2025] nv_platform: probe of 13800000.display failed with error -1
[Mon Jan 27 14:44:21 2025] NVRM: The NVIDIA probe routine was not called for 1 device(s).
[Mon Jan 27 14:44:21 2025] NVRM: This can occur when a driver such as: 
                           NVRM: nouveau, rivafb, nvidiafb or rivatv 
                           NVRM: was loaded and obtained ownership of the NVIDIA device(s).
[Mon Jan 27 14:44:21 2025] NVRM: Try unloading the conflicting kernel module (and/or
                           NVRM: reconfigure your kernel without the conflicting
                           NVRM: driver(s)), then try loading the NVIDIA kernel module
                           NVRM: again.


[Mon Jan 27 14:44:21 2025] NVRM: No NVIDIA devices probed.
[Mon Jan 27 14:44:21 2025] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[Mon Jan 27 14:45:47 2025] bwmgr req failed for 37
[Mon Jan 27 15:15:11 2025] hot-surface-alert cooling state: 0 -> 1

I have tried the same image in devkit and xrandr showed DP-0 connected primary 1920x1080. On the other hand my board showed HDMI-0 disconnected primary.

below is my DP design in board

And it also point out into the device tree

dp_aux_ch0_hpd_pm0 {
				nvidia,pins = "dp_aux_ch0_hpd_pm0";
				nvidia,function = "dp";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_ENABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

Is there anything I am missing ?

This is node from live device tree:

dsplay@13800000 {
		power-domains = <0x02 0x03>;
		iommus = <0x05 0x01>;
		interconnect-names = "dma-mem\0read-1";
		nvidia,bpmp = <0x02>;
		clock-names = "nvdisplayhub_clk\0nvdisplay_disp_clk\0nvdisplay_p0_clk\0nvdisplay_p1_clk\0dpaux0_clk\0fuse_clk\0dsipll_vco_clk\0dsipll_clkoutpn_clk\0dsipll_clkouta_clk\0sppll0_vco_clk\0sppll0_clkoutpn_clk\0sppll0_clkouta_clk\0sppll0_clkoutb_clk\0sppll0_div10_clk\0sppll0_div25_clk\0sppll0_div27_clk\0sppll1_vco_clk\0sppll1_clkoutpn_clk\0sppll1_div27_clk\0vpll0_ref_clk\0vpll0_clk\0vpll1_clk\0nvdisplay_p0_ref_clk\0rg0_clk\0rg1_clk\0disppll_clk\0disphubpll_clk\0dsi_lp_clk\0dsi_core_clk\0dsi_pixel_clk\0pre_sor0_clk\0pre_sor1_clk\0dp_link_ref_clk\0sor_linka_input_clk\0sor_linka_afifo_clk\0sor_linka_afifo_m_clk\0rg0_m_clk\0rg1_m_clk\0sor0_m_clk\0sor1_m_clk\0pllhub_clk\0sor0_clk\0sor1_clk\0sor_pad_input_clk\0pre_sf0_clk\0sf0_clk\0sf1_clk\0dsi_pad_input_clk\0pre_sor0_ref_clk\0pre_sor1_ref_clk\0sor0_ref_pll_clk\0sor1_ref_pll_clk\0sor0_ref_clk\0sor1_ref_clk\0osc_clk\0dsc_clk\0maud_clk\0aza_2xbit_clk\0aza_bit_clk\0mipi_cal_clk\0uart_fst_mipi_cal_clk\0sor0_div_clk";
		interconnects = <0x03 0x92 0x03 0xa1>;
		reg-names = "nvdisplay\0dpaux0\0hdacodec\0mipical";
		resets = <0x02 0x10 0x02 0x08 0x02 0x03 0x02 0x25>;
		os_gpio_hotplug_a = <0x06 0x60 0x00>;
		interrupts = <0x00 0x1a0 0x04 0x00 0x1a3 0x04 0x00 0x3d 0x04>;
		clocks = <0x02 0x54 0x02 0x55 0x02 0x56 0x02 0x57 0x02 0x13 0x02 ........
                nvidia,dcb-image = [55 aa 16 00 .................
                nvidia,disp-sw-soc-chip-id = <0x2350>;
		compatible = "nvidia,tegra234-display";
		status = "okay";
		interrupt-names = "nvdisplay\0dpaux0\0hdacodec";
		reg = <0x00 0x13800000 0x00 0xeffff 0x00 0x155c0000 0x00 0xffff 0x00 0x242c000 0x00 0x1000 0x00 0x3990000 0x00 0x10000>;
		phandle = <0x2c4>;
		reset-names = "nvdisplay_reset\0dpaux0_reset\0dsi_core_reset\0mipi_cal_reset";
		non-coherent;
		iommu-direct-regions = <0x04>;
		nvidia,num-dpaux-instance = <0x01>;

		dsi {
			nvidia,active-panel = "NULL";
			compatible = "nvidia,tegra234-dsi";
			status = "disabled";
		};

		nvdisplay-niso {
			iommus = <0x07 0x07>;
			dma-coherent;
			compatible = "nvidia,tegra234-display-niso";
		};
	};

This current display dtsi /tegra234-p3711-display.dtsi

/ {
	display@13800000 {
		status = "okay";
	};
};

I don’t know where you got a guidance here. But this dtsi is not in use for any Orin Nano dts at all.

You could directly refer to p3509+p3767 config in your BSP directory. That one already included everything for a Orin Nano to enable HDMI.

Hi @WayneWWW
I have tried to add
os_gpio_hotplug_a = <&tegra_main_gpio TEGRA234_MAIN_GPIO(M, 0) GPIO_ACTIVE_LOW>;
While the previous was os_gpio_hotplug_a = <0x06 0x60 0x00>;
But then I got error in dtb converting

Error: kernel_tegra234-p3767-0004-p3509-a02.dts:7538.51-52 syntax error
FATAL ERROR: Unable to parse input tree

I have tried this on live device tree

You should do things on the source code but not live device tree.

Live device tree won’t know what are “tegra_main_gpio”, “TEGRA234_MAIN_GPIO(M, 0)”.

Hello again @WayneWWW , I did refer into the config. I have added PINMUX_CONFIG=“Orin-silicann_baseboard-pinmux.dtsi” into the config
and in the pinmux its declared as

dp_aux_ch0_hpd_pm0 {
				nvidia,pins = "dp_aux_ch0_hpd_pm0";
				nvidia,function = "dp";
				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
				nvidia,tristate = <TEGRA_PIN_ENABLE>;
				nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				nvidia,io-high-voltage = <TEGRA_PIN_DISABLE>;
				nvidia,lpdr = <TEGRA_PIN_DISABLE>;
			};

This is already set by the build process after applying my pinmux and gpio dtsi in tegra234-p3509-a02.dtsi

source/public/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3509-a02.dtsi
247:		os_gpio_hotplug_a = <&tegra_main_gpio TEGRA234_MAIN_GPIO(M, 0) GPIO_ACTIVE_HIGH>;
	display@13800000 {
		status = "okay";
		os_gpio_hotplug_a = <&tegra_main_gpio TEGRA234_MAIN_GPIO(M, 0) GPIO_ACTIVE_HIGH>;
	};

Hi,

Just to clarify this issue again…

What are you trying to enable here ? Are you trying to enable a DP port or HDMI port…?

I am trying to getting the display output either using DP or HDMI. I have both MiniDP to DP and MiniDP to HDMI. if any of them works, fine for me.

No, you don’t get the idea here.

The hardware design is different. You could only enable one thing here.

There is nothing that “I can do either of them”. The hardware is a fixed design. If your design is for DP then you could only enable it as DP. And same concept to HDMI.

I saw both DP and HDMI in hardware design thats why I said that.

Just to clarify. I really don’t know what you are trying to tell here.

The hardware design is made up to you. Whether you want to make it to DP or HDMI is up to you.

I don’t know what is your final design here. What are you trying to say with that picture you provided? That one didn’t ever tell any info.

I notice you mentioned “dp-display” in the topic label and also “below is my DP design in board” comment in previous post.

So are you trying to make a DP port for the carrier board?

So, it can be set only one mode not togather , right ? I will ask the hardware design dpt. They Provide me the board with miniDP adapter. And as its works same as devkit, so that means only dp is enable, because when I use the image into devkit it works.

HI,

Yes, only one mode could be in use. Not together.

If you flash the board with “jetson-orin-nano-devkit.conf” which points to p3768-0000-p3767-0000-a0.conf, then it will have DP enabled by default because that one is for Orin Nano devkit. And Orin Nano devkit has DP port only.

If you flash the board with “p3509-a02-p3767-0000.conf”, then it will enable HDMI mode.

Your above software configuration messed up both of them so it won’t work.

Hi @WayneWWW , I got confirmation from Hardware team that there is only the DP configuration implemented. Later after you point out the difference between “jetson-orin-nano-devkit.conf” and “p3509-a02-p3767-0000.conf”, I have flashed the board with “jetson-orin-nano-devkit.conf”. But still can not see output in monitor. When I run xrandr, got below output

jetson@nvidia:~$ xrandr
Screen 0: minimum 8 x 8, current 640 x 480, maximum 32767 x 32767
HDMI-0 disconnected primary (normal left inverted right x axis y axis)

Should not it show something like ?DP-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) ...

But in the devit I can see output in monitor. After flash the image, I can not via both SSH and UART.

I was looking some error message in dmesg

jetson@nvidia:~$ sudo dmesg | grep -i display
[sudo] password for jetson: 
[   16.819533] nv_platform 13800000.display: Adding to iommu group 40
[   16.834047] platform 13800000.display:nvdisplay-niso: Adding to iommu group 41

jetson@nvidia:~$ sudo dmesg | grep -i dp
[    1.502989] vdd-3v3-dp: supplied by vdd-3v3-sys
[    1.887785] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    1.894502] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    1.912245] RPC: Registered udp transport module.
[    6.045157] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    6.051233] Bluetooth: HIDP socket layer initialized
[    6.981597] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
[    7.043441] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
[   15.014112] systemd[1]: system-modprobe.slice: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
[   15.036949] systemd[1]: Created slice system-modprobe.slice.
[   15.941025] systemd[1]: Starting udev Coldplug all Devices...
[   17.143073] input: NVIDIA Jetson Orin NX HDA HDMI/DP,pcm=3 as /devices/platform/3510000.hda/sound/card0/input1
[   17.163817] input: NVIDIA Jetson Orin NX HDA HDMI/DP,pcm=7 as /devices/platform/3510000.hda/sound/card0/input2
[   17.201113] input: NVIDIA Jetson Orin NX HDA HDMI/DP,pcm=8 as /devices/platform/3510000.hda/sound/card0/input3
[   17.249306] input: NVIDIA Jetson Orin NX HDA HDMI/DP,pcm=9 as /devices/platform/3510000.hda/sound/card0/input4

Hi,

I believe the reason here is you already modified something on your side and cause jetson-orin-nano-devkit.conf already not run with the default setting.

If you see HDMI-0 in xrandr, then it is definitely not the default dtb.

Hi, @WayneWWW ,

I actually did double check. Its is default dtb. Only I modify the EEPROM

- cvb_eeprom_read_size = <0x100>
+ cvb_eeprom_read_size = <0x0>

in Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi before flash, as it is suggested for cusotm carrier board in NVIDIA Jetson Linux Developer Guide.

Same image in our board shows

jetson@nvidia:~$ xrandr
Screen 0: minimum 8 x 8, current 640 x 480, maximum 32767 x 32767
HDMI-0 disconnected primary (normal left inverted right x axis y axis)

and devkit shows

Screen 0: minimum 8 x 8, current 640 x 480, maximum 32767 x 32767               
DP-0 disconnected primary (normal left inverted right x axis y axis)            
DP-1 disconnected (normal left inverted right x axis y axis)

Monitor is the same. Only in our board, we are using MiniDP tp Display cable and devkit using DP tp DP.

Hi,

Just some clarification because you didn’t share any useful information so far.

  1. If you want to share a device tree, attach the full one converted from dtb file by dtc.

  2. If you want to share a log, attach the full one without doing any grep.

This forum could attach files. Please do not paste whole log directly to the forum.

Also, please give us the log that indicates how you flashed your custom board. I need the host side and also the uart side logs.

There are lots of users asking about how to enable HDMI on their board every week. But there is no one ever did that just because “they used their own custom board”. That is what you are talking about here which I don’t think it is true. So please provide log to us to check what is going on.