Jetson TX2 Custom Carrier: HDMI Non-inverting Hot Plug Detect

Hello all,

I’m designing a custom carrier board for the TX2, implementing the HDMI. I’ve got HDMI working, but only when I use the following command:

echo 1 > /sys/kernel/debug/tegra_hdmi/hotplug

Now I’ve seem to found the problem, our HPD isn’t inverting while the dev kit does have the HPD inverted. How do I go about change the behavior of this? The OEM design manual states the following:

Level shifters required on DDC/HPD. Jetson TX2/TX2i pads are not 5V tolerant & cannot directly meet HDMI VIL/VIH
requirements. HPD level shifter can be non-inverting or inverting.

Thus, I guess there should be a software solution to fix this problem?

Thanks in advance,

Falco

Hi,

I solved the same problem in the past by changing the active level of the HPD pin in the device tree.
Try something like this:

host1x {
        sor {
                status = "okay";
                /delete-property/ nvidia,hpd-gpio;
                nvidia,hpd-gpio = <&tegra_main_gpio TEGRA_MAIN_GPIO(P, 6) GPIO_ACTIVE_LOW>;
        };
};

Of course, make sure that the settings match your hardware:

  • your serial output might be sor1
  • and, most likely your gpio pin is different.

Thanks for your answer, unfortunately changing ‘GPIO_ACTIVE_LOW’ to ‘GPIO_ACTIVE_HIGH’ didn’t do the trick. I’m using the same GPIO/HDMI combo as the NVIDIA devkit so I don’t need to change the GPIO and SOR. Also, changing it from low to high didn’t give any effect in behavior on the devkit itself, so I think it needs to be changed on more places…

Yes, you’re right, I was missing something.
Try this:

host1x {
        sor {
                status = "okay";
                /delete-property/ nvidia,hpd-gpio;
                nvidia,hpd-gpio = <&tegra_main_gpio TEGRA_MAIN_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
                hdmi-display {
                        disp-default-out {
                                nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_HIGH>;
                        };
                };
        };
};

Thank you very much @D3_cpetrescu! That was indeed the solution!

For future reference, I edited it to the following in /sources/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common/platforms/tegra186-quill-common.dtsi :

...
sor1 {
			status = "okay";
			nvidia,xbar-ctrl = <0 1 2 3 4>;
			nvidia,hpd-gpio = <&tegra_main_gpio TEGRA_MAIN_GPIO(P, 1) GPIO_ACTIVE_HIGH>;
			hdmi-display {
				status = "okay";
				disp-default-out {										//Added by Falco
                    			nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_HIGH>;
                		};
			};
			dp-display {
				status = "disabled";
			};
		};
...