Orin Nano (P3767-005) Module (with SDCard) + our custom carrier board : HDMI no display

Our carrier board is designed referece to Jetson Orin Nano/NX developer kit (P3768)

the attachment is our schematic of HDMI part.

HDMI design.png
HDMI design rework.png

SW infomation :

Jetpack 6.2.2 / Jetson Linux 36.5

I follow this guide to use config “p3509-a02-p3767-0000.conf” to flash OS :

// for DP

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk0p1 \
-c tools/kernel_flash/flash_l4t_t234_nvme.xml -p “-c bootloader/generic/cfg/flash_t234_qspi.xml” \
–showlogs --network usb0 jetson-orin-nano-devkit internal

// for HDMI

$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device mmcblk0p1 \
-c tools/kernel_flash/flash_l4t_t234_nvme.xml -p “-c bootloader/generic/cfg/flash_t234_qspi.xml” \
–showlogs --network usb0 p3509-a02-p3767-0000 internal

proc-devicetree.dtb.dts.zip is the device tree parse from /proc/device-tree

I have check the console HDP pin config as input already and look correctly :

nano@nano:/proc/device-tree/display@13800000$ sudo cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups | grep -i pm0 -A 15

7 (dp_aux_ch0_hpd_pm0):

pull= 0

tristate =1

enable-inpu t=1

open-dra in=1

io-re set=1

rcv -sel=1

io-hv=1

s chmitt=1

pull-down-s trength=0

pull-up- strength=0

d rive-type=0

gpio-mode=0

function=rsvd1

nano@nano:/proc/device-tree/display@13800000$ sudo gpioinfo

gpiochip0 - 164 lines:

line 76: “PM.00” kernel input active-high [used]

DCB block looks fine :

########## Tegra DCB BLOB ###############

########### Display Devices ############ #

Display Devices ::

Display Devices : [0]

Type : [T MDS]

CCB : [0]

Heads : 0:[Y] 1:[Y]

Sor : [0 ]

HDMI capable : [1]

Connector : [0]

Bus : [0]

############### CCB Entries #### ######## ###

CCB::

*CCB entries that have both I2C and AUX ports unused (value = 31) are not displayed

CCB Index : 0

I2C Port : [6]

AUX Port : [0]

########### Connector entr ies ########### ##

Connectors::

Co nnector Index : 0x0

Type : [HDMI]

Hotpl ug : A:[Y]

################# ******* #################

Our issue is that seems HDMI doesn’t enable because from the console

But, HDMI no display and xrandr says,

Can’t open display

Are there any files that need to be modified that we haven’t noticed?

proc-devicetree.dtb.dts.zip (50.1 KB)

*** Please note that this reply is generated by LLM automatically ***

Based on the provided information, it appears that you are experiencing issues with enabling HDMI output on a custom carrier board designed for the Jetson Orin Nano module. You have followed the guide to flash the OS using the p3509-a02-p3767-0000.conf config file, but HDMI output is not working as expected.

Here are some potential issues and suggestions to resolve the problem:

  1. Device Tree Configuration: The device tree configuration file (proc/device-tree/dtbdts.zip) is not provided, but it’s essential to ensure that the HDMI configuration is correct. You can compare your device tree configuration with the one provided in the NVIDIA Jetson Linux documentation to identify any discrepancies.
  2. HDMI Pin Configuration: You have checked the console HDP pin configuration, and it appears to be correct. However, it’s crucial to verify that the HDMI pins are correctly configured in the device tree. You can use the sudo cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups command to check the pin configuration.
  3. GPIO Configuration: The GPIO configuration appears to be correct, as the gpioinfo command shows that the PM0 pin is configured as an input. However, you can double-check the GPIO configuration in the device tree to ensure that it matches the expected configuration.
  4. Display Devices Configuration: The Tegra DCB BLOB output shows that the HDMI capable connector is enabled, but the display devices configuration might be incorrect. You can check the Display Devices section in the device tree configuration to ensure that it matches the expected configuration.
  5. xrandr Configuration: The xrandr command is unable to open the display, which suggests that there might be an issue with the display configuration. You can try running the xrandr command with the --verbose option to get more detailed output and identify potential issues.
  6. Kernel Configuration: The kernel configuration might be incorrect, which could prevent HDMI output from working. You can check the kernel configuration file (/proc/config.gz) to ensure that the necessary HDMI-related options are enabled.

To resolve the issue, you can try the following:

  1. Update the device tree configuration: Update the device tree configuration file to match the expected configuration for HDMI output.
  2. Verify the HDMI pin configuration: Verify that the HDMI pins are correctly configured in the device tree.
  3. Check the GPIO configuration: Double-check the GPIO configuration in the device tree to ensure that it matches the expected configuration.
  4. Update the display devices configuration: Update the display devices configuration in the device tree to match the expected configuration.
  5. Run xrandr with verbose output: Run the xrandr command with the --verbose option to get more detailed output and identify potential issues.
  6. Rebuild the kernel: Rebuild the kernel with the necessary HDMI-related options enabled.

If none of these suggestions resolve the issue, you may need to provide more information about your custom carrier board design and the specific configuration files used to further troubleshoot the problem.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Where is the SOM part of schematic?

Here is the SOM pins of HDMI part

BTW some questions ?

Besides switching config
DP / p3768-0000-p3767-0000-a0.conf —> HMDI / p3509-a02-p3767-0000.conf ,

Do we need to make any additional modifications to the following parts of DTS?
  1. Is it necessary or how to modify pimnux of DP AUX / HDMI DDC ?

from Jetson_Orin_NX_and_Orin_Nano_series_Pinmux_Config_Template_v1.2.xlsm

for Jetson Orin Nano&NX Pinmux DP

100 DP1_AUX_P DP1_AUX_P N/A z DP_AUX_CH0_P Bidirectional
98 DP1_AUX_N DP1_AUX_N N/A z DP_AUX_CH0_N Bidirectional
96 DP1_HPD DP1_HPD 50k z DP_AUX_CH0_HPD Input

for Jetson Orin Nano&NX Pinmux HDMI

100 DP1_AUX_P DP1_AUX_P N/A z I2C6_CLK Bidirectional
98 DP1_AUX_N DP1_AUX_N N/A z I2C6_DAT Bidirectional
96 DP1_HPD DP1_HPD 50k z GPIO3_PM.00 Input

but from output *-pinmux.dtsi
“Orin-jetson orin nano&nx pinmux dp-pinmux.dtsi”
“Orin-jetson orin nano&nx pinmux hdmi-pinmux.dtsi”

Only see

        dp_aux_ch0_hpd_pm0 {

            nvidia,pins = "dp_aux_ch0_hpd_pm0";

            nvidia,function = "rsvd1";   // "dp" -->  "rsvd1"

            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>;

        };

Not found DP_AUX / HDMI_DDC pinmux modification ?

So, which/where the source code (which dts/dtsi files, how to modify) should be modified to match DP_AUX / HDMI_DDC pinmux switch ?

2. We noticed that the HDMI DDC SCL/SDA pin (i2c6) in the DTS file is set to disabled.
Do we need to change the status to enabled (status=“okay”)?

1 /* 原始定義位於 tegra234.dtsi /
2 dp_aux_ch2_i2c: i2c@31c0000 {
3 compatible = “nvidia,tegra194-i2c”;
4 reg = <0x0 0x31c0000 0x0 0x100>;
5 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
6
#address-cells = <1>;
7
#size-cells = <0>;
8 status = “disabled”;
9 clock-frequency = <100000>;
10 clocks = <&bpmp TEGRA234_CLK_I2C7>,
11 <&bpmp TEGRA234_CLK_PLLP_OUT0>;
12 assigned-clocks = <&bpmp TEGRA234_CLK_I2C7>;
13 assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLP_OUT0>;
14 clock-names = “div-clk”, “parent”;
15 resets = <&bpmp TEGRA234_RESET_I2C7>;
16 reset-names = “i2c”;
17 dmas = <&gpcdma 27>, <&gpcdma 27>;
18 dma-names = “rx”, “tx”;
19
20 /
由 tegra234-base-overlay.dtsi 補充 /
21 iommus = <&smmu_niso0 TEGRA234_SID_GPCDMA>;
22 dma-coherent;
23
24 /
由 tegra234-soc-prod-overlay.dtsi 補充 */
25 prod-settings {
26 #prod-cells = <4>;
27
28 prod {
29 prod = <
30 0 0x0000009c 0x0000ffff 0x00000308 //i2c_i2c_hs_interface_timing_0_0
31 0 0x000000d4 0x000000ff 0x00000000 //i2c_i2c_interface_timing_2_0
32 0 0x000000d8 0x000000ff 0x00000000 //i2c_i2c_hs_interface_timing_2_0
33 0 0x000000dc 0x0000ffff 0x00000001 //i2c_i2c_mstr_data_capture_timing_0
34 0 0x000000e0 0x0000ffff 0x00000002>; //i2c_i2c_slv_data_capture_timing_0
35 };
36
37 prod_c_fm {
38 prod = <
39 0 0x0000006c 0xffff0000 0x003c0000 //i2c_i2c_clk_divisor_register_0
40 0 0x00000094 0x0000ffff 0x00000202 //i2c_i2c_interface_timing_0_0
41 0 0x00000098 0xffffffff 0x02020202>; //i2c_i2c_interface_timing_1_0
42 };
43
44 prod_c_fmplus {
45 prod = <
46 0 0x0000006c 0xffff0000 0x00160000 //i2c_i2c_clk_divisor_register_0
47 0 0x00000094 0x0000ffff 0x00000202 //i2c_i2c_interface_timing_0_0
48 0 0x00000098 0xffffffff 0x02020202>; //i2c_i2c_interface_timing_1_0
49 };
50
51 prod_c_hs {
52 prod = <
53 0 0x0000006c 0xffffffff 0x00160002 //i2c_i2c_clk_divisor_register_0
54 0 0x00000094 0x0000ffff 0x00000202 //i2c_i2c_interface_timing_0_0
55 0 0x00000098 0xffffffff 0x02020202 //i2c_i2c_interface_timing_1_0
56 0 0x00000a0 0x00ffffff 0x00090909>; //i2c_i2c_hs_interface_timing_1_0
57 };
58
59 prod_c_sm {
60 prod = <
61 0 0x0000006c 0xffff0000 0x004f0000 //i2c_i2c_clk_divisor_register_0
62 0 0x00000094 0x0000ffff 0x00000708 //i2c_i2c_interface_timing_0_0
63 0 0x00000098 0xffffffff 0x08080808>; //i2c_i2c_interface_timing_1_0
64 };
65 };
66 };

What is the result of xrandr and xorg log when you have HDMI connected?