I have a custom carrier board for Orin and Xavier, that uses DP1 as a common Displayport. The port is working ok on Orin NX/nano, however I ran into issues when using it on Xavier NX.
As mentioned here, I need to modify both pinmux and the device tree to enable it, as by default it is configured as HDMI. So according to the post I did the following steps:
- From Jetson linux 35.5.0 download page I downloaded: Driver packge (BSP), Sample root filesystem and Driver package (BSP) sources, as well as Bootlin Toolchain gcc 9.3 .
- I set up the toolchain and the enviromental variables according to Developer guide.
- Using the Pinmux spreadsheet I generated three .dtsi files (I used the default configuration with no changes as all pins seemed to be as they should). I’m not sure whether this step is actually necessary.
- I extracted the Driver package into a folder, the extracted the root filesystem into
Linux_for_Tegra/rootfs
and kernel_src.tbz2 intoLinux_for_Tegra/source
- In
Linux_for_Tegra/source/hardware/nvidia/platform/t19x/jakku/kernel-dts/common
I modified thetegra194-p3509-disp.dtsi
file to look like:
#include <dt-bindings/display/tegra-dc.h>
#include <dt-bindings/display/tegra-panel.h>
#include <t19x-common-platforms/tegra194-hdmi.dtsi>
#include <t19x-common-platforms/tegra194-dp.dtsi>
#include "tegra194-fixed-regulator-p3509-0000-a00.dtsi"
#include "tegra194-spmic-p3668.dtsi"
&head0 {
status = "disabled";
nvidia,fb-bpp = <32>;
nvidia,fbmem-size = <265420800>; /* 8K (7680*4320) 32bpp double buffered */
nvidia,fb-flags = <TEGRA_FB_FLIP_ON_PROBE>;
win-mask = <0x7>;
nvidia,fb-win = <0>;
nvidia,dc-connector = <&sor1>;
nvidia,dc-flags = <TEGRA_DC_FLAG_ENABLED>;
avdd_hdmi-supply = <&p3668_spmic_sd0>; /* 1v0 */
avdd_hdmi_pll-supply = <&p3668_spmic_sd1>; /* 1v8 */
vdd_hdmi_5v0-supply = <&p3509_vdd_hdmi_5v0>; /* 5v0 */
};
&head1 {
status = "okay";
nvidia,fb-bpp = <32>;
nvidia,fbmem-size = <265420800>; /* 8K (7680*4320) 32bpp double buffered */
nvidia,fb-flags = <TEGRA_FB_FLIP_ON_PROBE>;
win-mask = <0x38>;
nvidia,fb-win = <3>;
nvidia,dc-connector = <&sor0>;
nvidia,dc-flags = <TEGRA_DC_FLAG_ENABLED>;
vdd-dp-pwr-supply = <&p3668_spmic_sd0>;
avdd-dp-pll-supply = <&p3668_spmic_sd1>;
vdd-edp-sec-mode-supply = <&battery_reg>;
vdd-dp-pad-supply = <&battery_reg>;
vdd_hdmi_5v0-supply = <&p3509_vdd_hdmi_5v0>;
};
&sor0 {
status = "okay";
nvidia,active-panel = <&sor0_dp_display>;
nvidia,sor-hdcp-not-supported;
};
&sor0_dp_display {
status = "okay";
nvidia,is_ext_dp_panel = <1>;
};
&sor1 {
status = "okay";
nvidia,active-panel = <&sor0_dp_display>;
nvidia,sor-hdcp-not-supported;
};
&sor1_dp_display {
status = "okay";
nvidia,is_ext_dp_panel = <1>;
};
&dpaux0 {
status = "okay";
};
&dpaux1 {
status = "okay";
};
&tegra_cec {
status = "okay";
};
- I then launched nvbuild.sh, as mentioned in the Developer guide.
- Using SDK manager I prepared a default Jetpack 5.1.3 image for Xavier NX (I let the SDK manager install the image and get it ready for flashing and the skipped flashing)
- I copied the newly created .dtb files from
Linux_for_Tegra/source/kernel_out/arch/arm64/boot/dts/nvidia
toJetPack_5.1.3_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/kernel/dtb
of the image from SDK manager - As mentioned here, I generated .cfg files from the pinmux .dts files and copied them into
JetPack_5.1.3_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/bootloader/t186ref/BCT
- I flashed Xavier using SDK manager with the now modified image.
Now when I did this, nothing happened, as if the new device tree did not get applied - HDMI (on another carrier board) was working as normal, and DP was showing blank screen.
I then attempted the following:
- I copied the created .dtb files to
JetPack_5.1.3_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/rootfs/boot
- Added entry to
JetPack_5.1.3_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/rootfs/boot/extlinux/extlinux.conf
FDT /boot/dtb/kernel_tegra194-p3668-0001-p3509-0000.dtb
- Reflashed the Xavier NX again using SDK manager
This gave me blank screens on both HDMI board and my DP board.
Could you please tell me what I did wrong and what steps should I do to get the DP working?
Thank you.