HDMI output not working

  1. I am going to make a change like the follawing. Is that right?

&sor0 {
status = “okay”;
/* nvidia,active-panel = <&sor0_dp_display>;*/
nvidia,active-panel = <&sor2_hdmi_display>;
};

&sor0_dp_display {
status = “okay”;
disp-default-out {
nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
};
/* nvidia,is_ext_dp_panel = <1>;*/
};

&sor1 {
status = “okay”;
/* nvidia,active-panel = <&sor1_dp_display>;*/
nvidia,active-panel = <&sor2_hdmi_display>;
};

&sor1_dp_display {
status = “okay”;
disp-default-out {
nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
};
/* nvidia,is_ext_dp_panel = <1>;*/
};

&sor2 {
status = “okay”;
nvidia,active-panel = <&sor2_hdmi_display>;
};

&sor2_hdmi_display {
status = “okay”;
disp-default-out {
nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
};
};

I didn’t understand exactly, how to find it?

The tegra194-disp-e3900-0000.dtsi and tegra194-e3366-disp.dtsi files are not related to xavier agx, are they?

And do I any change in the tegra194-hdmi.dtsi and tegra194-soc-base.dtsi files?

Or,

&sor0 {
status = “okay”;
/* nvidia,active-panel = <&sor0_dp_display>;*/
nvidia,active-panel = <&sor0_hdmi_display>;
};

&sor0_dp_display {
status = “okay”;
disp-default-out {
nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
};
/* nvidia,is_ext_dp_panel = <1>;/
};
&sor1 {
status = “okay”;
/
nvidia,active-panel = <&sor1_dp_display>;*/
nvidia,active-panel = <&sor1_hdmi_display>;
};

&sor1_dp_display {
status = “okay”;
disp-default-out {
nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
};
/* nvidia,is_ext_dp_panel = <1>;*/
};
&sor2 {
status = “okay”;
nvidia,active-panel = <&sor2_hdmi_display>;
};

&sor2_hdmi_display {
status = “okay”;
disp-default-out {
nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
};
};

Which one is the correct?

The second one is correct.

If that is sor0, use sor0_xxxx_display. Same rule for sor1 and sor2.

I didn’t understand exactly, how to find it?
The tegra194-disp-e3900-0000.dtsi and tegra194-e3366-disp.dtsi files are not related to xavier agx, are they?
And do I any change in the tegra194-hdmi.dtsi and tegra194-soc-base.dtsi files?

Let the code tells you the story but not me. The dts files include more dtsi files. Just get them one by one as you already did.
I didn’t memorize every location of each property either. When I try to find something, I grep the name with whole dts folder to know what is it.

For example, sor2_hdmi_display is just a nickname. The real property is “hdmi-display” under sor2.

sor2_hdmi_display: hdmi-display

You can find it in tegra194-soc-base.dtsi.

I also edited this but it istill did not work. Log is attached.

dmesg log (65.2 KB)

I thinh something else needs to be changed, but I could not find it. Or there is something wrong.

What cannot work? HDMI_DP2 or HDMI_DP1?

HDMI_DP2 is working. HDMI_DP0 and HDMI_DP1 is not working. I want to use these ports (HDMI_DP0 and HDMI_DP1) as HDMI output.

Your log tells sor1 hdmi is not enabled.

[ 1.777983] tegradc 15220000.nvdisplay: disp1 connected to head2->/host1x/sor1
[ 1.778008] tegradc 15220000.nvdisplay: tegra_dc_parse_panel_ops: panel: /host1x/sor1/hdmi-display is not active

Okay, I saw that. But how can I do that? I changed tegra194-p2888-0001-p2822-0000-common.dtsi and tegra194-p2822-disp.dtsi files.

tegra194-p2888-0001-p2822-0000-common.dtsi (8.3 KB) tegra194-p2822-disp.dtsi (3.6 KB)

Then I applied the following:

Ports are not still working? What else I do?

Maybe you can check how sor2_hdmi_display is doing and think why your sor1_hdmi_display is not active…

It is obvious so I really don’t want to directly point it out. Please learn to debug this by yourself.

I need to activate sor1_hdmi_display but I can not find the dtsi file to activate it. I find tegra194-soc-base.dtsi file when I search sor2_hdmi_display. Do I need to activate this? But sor2 is also not activate in this file.

sor0: sor {
status = “disabled”;
compatible = “nvidia,tegra194-sor”;
reg = <0x0 0x15B00000 0x0 0x40000>;

  	nvidia,sor-ctrlnum = <0>;
  	nvidia,dpaux = <&dpaux0>;
  	nvidia,xbar-ctrl = <0x2 0x1 0x0 0x3 0x4>;

  	clocks = <&bpmp_clks TEGRA194_CLK_SOR0_REF>,
  		 <&bpmp_clks TEGRA194_CLK_SOR_SAFE>,
  		 <&bpmp_clks TEGRA194_CLK_SOR0_PAD_CLKOUT>,
  		 <&bpmp_clks TEGRA194_CLK_SOR0_OUT>,
  		 <&bpmp_clks TEGRA194_CLK_PLLDP>,
  		 <&bpmp_clks TEGRA194_CLK_PLLP_OUT0>,
  		 <&bpmp_clks TEGRA194_CLK_MAUD>,
  		 <&bpmp_clks TEGRA194_CLK_HDA>,
  		 <&bpmp_clks TEGRA194_CLK_HDA2CODEC_2X>,
  		 <&bpmp_clks TEGRA194_CLK_HDA2HDMICODEC>;
  	clock-names = "sor0_ref", "sor_safe", "sor0_pad_clkout",
  		      "sor0", "pll_dp", "pllp_out0",
  		      "maud", "hda", "hda2codec_2x",
  		      "hda2hdmi";
  	resets = <&bpmp_resets TEGRA194_RESET_SOR0>,
  		 <&bpmp_resets TEGRA194_RESET_HDA>,
  		 <&bpmp_resets TEGRA194_RESET_HDA2CODEC_2X>,
  		 <&bpmp_resets TEGRA194_RESET_HDA2HDMICODEC>;
  	reset-names = "sor0","hda_rst", "hda2codec_2x_rst",
  		"hda2hdmi_rst";

  	sor0_hdmi_display: hdmi-display {
  		compatible = "hdmi,display";
  		status = "disabled";
  	};
  	sor0_dp_display: dp-display {
  		compatible = "dp, display";
  		status = "disabled";
  	};
  }; //sor

  sor1: sor1 {
  	status = "disabled";
  	compatible = "nvidia,tegra194-sor";
  	reg = <0x0 0x15B40000 0x0 0x40000>;

  	nvidia,sor-ctrlnum = <1>;
  	nvidia,dpaux = <&dpaux1>;
  	nvidia,xbar-ctrl = <0x2 0x1 0x0 0x3 0x4>;

  	clocks = <&bpmp_clks TEGRA194_CLK_SOR1_REF>,
  		 <&bpmp_clks TEGRA194_CLK_SOR_SAFE>,
  		 <&bpmp_clks TEGRA194_CLK_SOR1_PAD_CLKOUT>,
  		 <&bpmp_clks TEGRA194_CLK_SOR1_OUT>,
  		 <&bpmp_clks TEGRA194_CLK_PLLDP>,
  		 <&bpmp_clks TEGRA194_CLK_PLLP_OUT0>,
  		 <&bpmp_clks TEGRA194_CLK_MAUD>,
  		 <&bpmp_clks TEGRA194_CLK_HDA>,
  		 <&bpmp_clks TEGRA194_CLK_HDA2CODEC_2X>,
  		 <&bpmp_clks TEGRA194_CLK_HDA2HDMICODEC>;
  	clock-names = "sor1_ref", "sor_safe", "sor1_pad_clkout",
  		      "sor1", "pll_dp", "pllp_out0",
  		      "maud", "hda", "hda2codec_2x",
  		      "hda2hdmi";
  	resets = <&bpmp_resets TEGRA194_RESET_SOR1>,
  		 <&bpmp_resets TEGRA194_RESET_HDA>,
  		 <&bpmp_resets TEGRA194_RESET_HDA2CODEC_2X>,
  		 <&bpmp_resets TEGRA194_RESET_HDA2HDMICODEC>;
  	reset-names = "sor1","hda_rst", "hda2codec_2x_rst",
  		"hda2hdmi_rst";

  	sor1_hdmi_display: hdmi-display {
  		compatible = "hdmi,display";
  		status = "disabled";
  	};
  	sor1_dp_display: dp-display {
  		compatible = "dp, display";
  		status = "disabled";
  	};
  }; //sor1

  sor2: sor2 {
  	status = "disabled";
  	compatible = "nvidia,tegra194-sor";
  	reg = <0x0 0x15B80000 0x0 0x40000>;

  	nvidia,sor-ctrlnum = <2>;
  	nvidia,dpaux = <&dpaux2>;
  	nvidia,xbar-ctrl = <0x2 0x1 0x0 0x3 0x4>;

  	clocks = <&bpmp_clks TEGRA194_CLK_SOR2_REF>,
  		 <&bpmp_clks TEGRA194_CLK_SOR_SAFE>,
  		 <&bpmp_clks TEGRA194_CLK_SOR2_PAD_CLKOUT>,
  		 <&bpmp_clks TEGRA194_CLK_SOR2_OUT>,
  		 <&bpmp_clks TEGRA194_CLK_PLLDP>,
  		 <&bpmp_clks TEGRA194_CLK_PLLP_OUT0>,
  		 <&bpmp_clks TEGRA194_CLK_MAUD>,
  		 <&bpmp_clks TEGRA194_CLK_HDA>,
  		 <&bpmp_clks TEGRA194_CLK_HDA2CODEC_2X>,
  		 <&bpmp_clks TEGRA194_CLK_HDA2HDMICODEC>;
  	clock-names = "sor2_ref", "sor_safe", "sor2_pad_clkout",
  		      "sor2", "pll_dp", "pllp_out0",
  		      "maud", "hda", "hda2codec_2x",
  		      "hda2hdmi";
  	resets = <&bpmp_resets TEGRA194_RESET_SOR2>,
  		 <&bpmp_resets TEGRA194_RESET_HDA>,
  		 <&bpmp_resets TEGRA194_RESET_HDA2CODEC_2X>,
  		 <&bpmp_resets TEGRA194_RESET_HDA2HDMICODEC>;
  	reset-names = "sor2","hda_rst", "hda2codec_2x_rst",
  		"hda2hdmi_rst";

  	sor2_hdmi_display: hdmi-display {
  		compatible = "hdmi,display";
  		status = "disabled";
  	};
  	sor2_dp_display: dp-display {
  		compatible = "dp, display";
  		status = "disabled";
  	};
  }; //sor2

You can just write sor1_hdmi_display in the same file as where sor2_hdmi_display is enabled. And it will enable that.

That is how device tree works.

I tried that but it still did not work.

Also, the problem is that when I scan the sor2_hdmi_display in the dtsi files, there is no files only with sor2_hdmi_display is enable.
sor2_hdmi_display.txt (1.5 KB)

I tried that but it still did not work.

What did you try?

Also, the problem is that when I scan the sor2_hdmi_display in the dtsi files, there is no files only with sor2_hdmi_display is enable.

I don’t get what you want to say here…

Open you own tegra194-p2822-disp.dtsi and you will see below code…

&sor2_hdmi_display {
	status = "okay";
	disp-default-out {
		nvidia,out-flags = <TEGRA_DC_OUT_HOTPLUG_LOW>;
	};
};

So for sor1_hdmi_display, write similar property in tegra194-p2822-disp.dtsi and set it to okay…

Hi Edaeren,

I noticed that your HDMI_DP2 not working problem was about the hot plug detect issue. Could you give more details about the fix? HDMI hot plug detect is only a inverting level shifter in dev kit board.

Thanks
Peter

Yes, the problem with HDMI_DP2 port was hot plug detect. We found this problem. Other problem is The HDMI_DP1 port was not working as HDMI output.

WayneWWW’s suggestion worked. The HDMI_DP1 port also worked.
Currently, both the HDMI_DP2 port and the HDMI_DP1 port are working as HDMI outputs. Problems are solved.
But now a different problem has occurred. In my own customer board, there is no infrastructure to put the module in recovery mode. That’s why I do the flashing process by attaching the module to the developer kit. However, after the last change I made for the HDMI_DP1 port, when I plug the module on developer kit, module doesn’t open when I press the power button. And I can’t put it into recovery mode either. What is the reason of this? The detailed log I received from the customer board is attached. (It works when I plug another module into the developer kit. I don’t think the problem is with the developer kit.)

2xhdmi output.txt (73.6 KB)

1 Like

This sounds weird because the power on/ and recovery mode are triggered by hardware but not software. So no matter what software change (dtb/pinmux) to the module, it should not cause power on failure.

Do you see the LED still on?

No, the led is not lit. The developer kit draws 0.65A from 18 Volts. When I press the power button, nothing changes.
It works when I plug another module into the developer kit.

I don’t think this is software problem. Please try to change the dtb only and see if this could create this error with other modules too.

If changing dtb would not hit problem, then change the pinmux too.

The problem with the opening persists. That’s why I boot from usb for now. I will examine this topic in more detail later.

The problem with hdmi is solved. Thanks for your help.