How to change HDMI output from HDMI_DP0 to HDMI_DP2?


How to change HDMI output from HDMI_DP0 to HDMI_DP2?
I tried to modify the settings of tegra194-p2822-disp.dtsi to exchange head0 and head2 but not work.
Can you give me some suggestions?

SOR needs to get correct type too.


Also, is this on rel-32 or rel-35?

Hi Wayne,

Thanks for your suggestions but what is rel-32 or rel-35 you mentioned?

Jetpack4 is rel-32 branch.

Jetpack5 is rel-35 branch.

Hi Wayne

Jetpack5 is currently I am coding on.

Ok. Start from changing SOR first.

Hi Wayne

Can you help to provide me more information or documents to show me how to change SOR?
I traced the device tree and had no idea about changing SOR.

As my understanding, sor2 is now set to enable HDMI display and mapped to head0 in NV default settings.
Therefore, I think I should be able to swap HDMI0 and HDMI2 by changing the mapping in hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-p2822-disp.dtsi, but not work.

When there is something “not work” in kernel, you should share me the content you modified… and the dmesg.

There is no document for this. The dts itself is the example. When you need to enable HDMI, follow head0 setting. If you need to enable DP, follow head1 or head2 setting.

swap_hdmi_output.patch (1.3 KB)
dmesg.log (66.7 KB)

Hi Wayne

What I modified and the dmesg are attached on.


Please also take a look into content of sor2 and sor1…

And sor1 indicates HDMI_DP1 but not HDMI_DP0…


另外 sor1代表的是HDMI_DP1而不是HDMI_DP0…

Hi Wayne

I don’t understand what you mentioned very much.
The default settings from NV are mapping head0 to sor2, head1 to sor0 and head2 to sor1, and it works on AGX Xavier Kit.

The display log from NV AGX Xavier Kit is such like as below…

wistron@ubuntu:~$ sudo dmesg | grep -i display

[ 1.065197] tegradccommon 15200000.display-hub: Nvhost Channel map failed
[ 7.493432] tegradccommon 15200000.display-hub: host1x channel mapped
[ 7.499001] tegradccommon 15200000.display-hub: dc_common syncpt # 1 allocated
[ 7.507416] tegradccommon 15200000.display-hub: dma mapping done
[ 7.508089] tegradc 15200000.display: Adding to iommu group 29
[ 7.510252] tegradc 15210000.display: Adding to iommu group 29
[ 7.511211] tegradc 15220000.display: Adding to iommu group 29
[ 7.795531] tegradc 15200000.display: disp0 connected to head0->sor2
[ 7.810085] tegradc 15200000.display: DT parsed successfully
[ 7.815705] tegradc 15200000.display: Display dc.00000000b9ecd680 registered with id=0
[ 7.848635] tegradc 15200000.display: vblank syncpt # 8 for dc 0
[ 7.864374] tegradc 15200000.display: vpulse3 syncpt # 9 for dc 0
[ 7.877817] tegradc 15200000.display: hdmi: invalid prod list prod_list_hdmi_board
[ 7.890739] tegradc 15200000.display: hdmi: tegra_hdmi_tmds_range_read(bd) failed
[ 7.909709] tegradc 15200000.display: probed
[ 7.933743] tegradc 15200000.display: fb registered
[ 7.944877] tegradc 15210000.display: disp1 connected to head1->sor
[ 7.955640] tegradc 15210000.display: parse_dp_settings: No dp-lt-settings node
[ 7.964524] tegradc 15210000.display: DT parsed successfully
[ 7.974301] tegradc 15210000.display: Display dc.00000000184761ac registered with id=1
[ 7.984912] tegradc 15210000.display: vblank syncpt # 11 for dc 1
[ 7.995949] tegradc 15210000.display: vpulse3 syncpt # 12 for dc 1
[ 8.003499] tegradc 15210000.display: probed
[ 8.137464] tegradc 15210000.display: fb registered
[ 8.159722] tegradc 15220000.display: disp2 connected to head2->sor1
[ 8.185846] tegradc 15210000.display: blank - powerdown
[ 8.185987] tegradc 15220000.display: parse_dp_settings: No dp-lt-settings node
[ 8.198492] tegradc 15220000.display: DT parsed successfully
[ 8.210344] tegradc 15220000.display: Display dc.00000000c7f4bdc9 registered with id=2
[ 8.243494] tegradc 15220000.display: vblank syncpt # 13 for dc 2
[ 8.249450] tegradc 15220000.display: vpulse3 syncpt # 14 for dc 2
[ 8.262309] tegradc 15220000.display: probed

Then, does it mean this is a bug?

The Jetson version I used is 35.2.1.


麻煩你把你現在想要使用的display head 跟對應的sor列出來. 我這裡指的是所有要接的都列出來

比方說 head0 → sor2 → DP 或是head0 ->sor1 ->HDMI…


Please list out every display head and sor you want to use out.

For example, head0 ->sor2->DP.

And I will tell you what to modify…


我不知道 head 怎麼對應 sor,這邊的需求只是想要把 HDMI 訊號從 HDMI_DP2_TX3 輸出,對應腳位 C50 / C51

那你其實什麼都不用改阿… SOR2本來在devkit上就是HDMI…

所以 sor2 代表的就是實體 HDMI_DP2 嗎?
那麼請問 head 是指什麼?

SOR對應的就是實體的pin. SOR → HDMI_DP0, SOR1 → HDMI_DP1, SOR2 ->HDMI_DP2.
head指的是software controller, 也有3個 . 跟 SOR的對應可以任意設定…

比方說device tree底下head的欄位下面還有 “nvidia,dc-connector = <&sor>;” 這就代表說這個head會用sor0.
sor底下又有dp or hdmi的設定…

比方說這裡的寫法就是sor2目前是使用hdmi… 如果要用dp, 有另外一個sor2_dp_display node可以寫入…

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

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.