Dp0 can not output for sony 4k screen

Hi
my xavier agx dp0 has not output for sony 4k screen.
this is kernel log.

15220000.nvdisplay is alway reconfigure.

My dts.
head2: nvdisplay@15220000 {
	status = "disabled";
	compatible = "nvidia,tegra194-dc";
	reg = <0x0 0x15220000 0x0 0x10000>;
	interrupts = <0 155 4>;

	iommus = <&smmu TEGRA_SID_NVDISPLAY>;
	iso-smmu;
	non-coherent;

	nvidia,dc-ctrlnum = <2>;
	nvidia,cmu-enable = <0x1>;

	clock-names = "nvdisplay_disp",
			  "nvdisplayhub", "nvdisplay_p0",
			  "nvdisplay_p1", "nvdisplay_p2",
			  "nvdisplay_p3", "pllp_display",
			  "pll_d", "plld2",
			  "plld3", "plld4",
			  "disp3_emc";
	clocks = <&bpmp_clks TEGRA194_CLK_NVDISPLAY_DISP>,
		 <&bpmp_clks TEGRA194_CLK_NVDISPLAYHUB>,
		 <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P0>,
		 <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P1>,
		 <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P2>,
		 <&bpmp_clks TEGRA194_CLK_NVDISPLAY_P3>,
		 <&bpmp_clks TEGRA194_CLK_PLLP_OUT0>,
		 <&bpmp_clks TEGRA194_CLK_PLLD>,
		 <&bpmp_clks TEGRA194_CLK_PLLD2>,
		 <&bpmp_clks TEGRA194_CLK_PLLD3>,
		 <&bpmp_clks TEGRA194_CLK_PLLD4>,
		 <&bpmp_clks TEGRA194_CLK_EMC>;
	reset-names = "misc", "wgrp0", "wgrp1", "wgrp2",
			  "wgrp3", "wgrp4", "wgrp5", "head2";
	resets = <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_MISC>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP0>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP1>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP2>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP3>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP4>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_WGRP5>,
		 <&bpmp_resets TEGRA194_RESET_NVDISPLAY0_HEAD2>;
	fb_reserved = <&fb2_reserved>;
	iommu-direct-regions = <&fb0_reserved &fb1_reserved
				&fb2_reserved &fb3_reserved>;

	pinctrl-names = "hdmi-dp0-dpd-disable", "hdmi-dp0-dpd-enable",
			"hdmi-dp1-dpd-disable", "hdmi-dp1-dpd-enable",
			"hdmi-dp2-dpd-disable", "hdmi-dp2-dpd-enable",
			"hdmi-dp3-dpd-disable", "hdmi-dp3-dpd-enable";
	pinctrl-0 = <&hdmi_dp0_dpd_disable>;
	pinctrl-1 = <&hdmi_dp0_dpd_enable>;
	pinctrl-2 = <&hdmi_dp1_dpd_disable>;
	pinctrl-3 = <&hdmi_dp1_dpd_enable>;
	pinctrl-4 = <&hdmi_dp2_dpd_disable>;
	pinctrl-5 = <&hdmi_dp2_dpd_enable>;
	pinctrl-6 = <&hdmi_dp3_dpd_disable>;
	pinctrl-7 = <&hdmi_dp3_dpd_enable>;
}; 
&head2 {
    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 = <0x30>;
    nvidia,fb-win = <4>;
    nvidia,dc-connector = <&sor1>;
    nvidia,dc-flags = <TEGRA_DC_FLAG_ENABLED>;
    avdd_hdmi-supply = <&p2888_spmic_sd0>;
    avdd_hdmi_pll-supply = <&p2888_spmic_sd1>;
    vdd_hdmi_5v0-supply = <&p2822_vdd_hdmi_5v0>;
};


&sor0 {
    status = "okay";
    nvidia,active-panel = <&sor0_dp_display>;
};

&sor0_dp_display {
    status = "okay";
    nvidia,is_ext_dp_panel = <1>;
};

image

thanks!

Your log says 15220000 is using HDMI driver.

But your device tree says you want to use DP driver. Also, 15220000 is mapping to SOR1…

Which one is correct? Your device tree looks like a mess.

Hi
I appreciate you very much!
Maybe I showed dts information was not correct, But the log is actual the kernel log. Now DP-0 don’t output data for 4k sony screen. Also, DP0 can output data for 4k dell screen. Can you give me some advices?

Please dump the dmesg and /var/log/Xorg.0.log when error occurred.

This is my dmesg log.
dmesg.log (95.0 KB)

This is my Xorg.0.log
Xorg.0.log (20.6 KB)

Thanks!

The resolution of your Sony monitor is 5120 x 2160?

The resolution of Sony monitor is 3840 x 2160

  1. Could you connect “only” the Sony monitor when dumping log?
    I saw you have 2 devices connected in xorg log…
[    30.899] (--) NVIDIA(GPU-0): LTM LONTIUM (DFP-0): connected
[    30.899] (--) NVIDIA(GPU-0): LTM LONTIUM (DFP-0): External TMDS
[    30.899] (--) NVIDIA(GPU-0): JRD EC8320-HDMI (DFP-2): connected
[    30.899] (--) NVIDIA(GPU-0): JRD EC8320-HDMI (DFP-2): External TMDS
[    31.545] (--) NVIDIA(GPU-0): LTM LONTIUM (DFP-0): connected
[    31.545] (--) NVIDIA(GPU-0): LTM LONTIUM (DFP-0): External TMDS
  1. please also share me the result of below node
sudo -s
cat /sys/kernel/debug/tegradc.0/mode
cat /sys/kernel/debug/tegradc.1/mode
cat /sys/kernel/debug/tegradc.2/mode

dmesg_2.log (94.4 KB)
tegradc.1.log (228 Bytes)
tegradc.2.log (237 Bytes)
tegradc.2.log (237 Bytes)

I only connect sony screen.
appreciation!

請問一下你現在那邊是有幾個問題? 還是說你沒有發現你的問題有很多個?

就我這邊log來看

  1. 你的底板似乎讀HDMI edid不太穩定, 這次的dmesg裡面我可以看到你的edid讀不到, 所以我們的driver直接出了一個固定的720p 給你…

[ 2.141548] tegradc 15220000.nvdisplay: hdmi: edid read failed
[ 2.141608] tegradc 15220000.nvdisplay: hdmi: using fallback edid

可是這個問題在前面的log沒有發現.可以請你確認一下是不是當你只接一個螢幕的時候就會有這狀況嗎?

  1. 在前面的log裡你的dmesg 是寫pclk =297Mhz, 這是4k@30常見的pclk. 但是你的xorg.log 裡面 screen size是開了5120x2160…

可以麻煩你先在你那邊澄清完你到底有幾個問題之後再回來提供log嗎

-Eng version

Could you clarify how many problems on your side? Or you don’t know you have multiple issues there?

  1. From the log you just shared, looks like you have problem in EDID read so that our driver directly give you a 720p hardcoded mode…
    But this problem didn’t happen in previous log. Could you check if that is due to only one monitor connected?

  2. Your previous log says it is 297Mhz pclk. This is a common one with 4k@30 mode. However, the xorg log tells us the screen size is 5120x2160.

Please clarify your situation on your side first and then share the log …

background:
my platform is jetson xavier agx 32G.

I have three video output ports.
the first port is 4k(DP 3840 x 2160)
the second port is also 4k(HDMI 3840 x 2160).
third is 2k(HDMI).

now , Have two questions.
1、DP can not output 4k data for 4k sony screen.
2、at power up, if i don’t connect 4k hdmi, the scond port will change to 720P.

  1. if I only connect sony 4k screen with first port which is 4k dp port at powerdown status. the DP output nothing and , after that, I connect another 4k screen with the second port which is 4k hdmi port. but the second port only output 720P.
  2. if I connect sony 4k screen with first port and connect another 4k screen with the second port at powerdown status. the DP output nothing and the second port can normal output 4k data.

dts:

head0: nvdisplay@15200000{
}
head1: nvdisplay@15210000{
}
head2: nvdisplay@15220000{
}
&head0 {
        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 = <0x3>;
        nvidia,fb-win = <0>;
        nvidia,dc-connector = <&sor2>;
        nvidia,dc-flags = <TEGRA_DC_FLAG_ENABLED>;
        avdd_hdmi-supply = <&p2888_spmic_sd0>; /* 1v0 */
        avdd_hdmi_pll-supply = <&p2888_spmic_sd1>; /* 1v8 */
        vdd_hdmi_5v0-supply = <&p2822_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 = <0xC>;
        nvidia,fb-win = <2>;
        nvidia,dc-connector = <&sor0>;
        nvidia,dc-flags = <TEGRA_DC_FLAG_ENABLED>;
        vdd-dp-pwr-supply = <&p2888_spmic_sd0>;
        avdd-dp-pll-supply = <&p2888_spmic_sd1>;
        vdd-edp-sec-mode-supply = <&battery_reg>;
        vdd-dp-pad-supply = <&battery_reg>;
        vdd_hdmi_5v0-supply = <&p2822_vdd_hdmi_5v0>;
};

&head2 {
        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 = <0x30>;
        nvidia,fb-win = <4>;
        nvidia,dc-connector = <&sor1>;
        nvidia,dc-flags = <TEGRA_DC_FLAG_ENABLED>;
        avdd_hdmi-supply = <&p2888_spmic_sd0>;
        avdd_hdmi_pll-supply = <&p2888_spmic_sd1>;
        vdd_hdmi_5v0-supply = <&p2822_vdd_hdmi_5v0>;
};


&sor0 {
        status = "okay";
        nvidia,active-panel = <&sor0_dp_display>;
};

&sor0_dp_display {
        status = "okay";
        nvidia,is_ext_dp_panel = <1>;
};

&sor0_hdmi_display {
        status = "disabled";
        nvidia,is_ext_dp_panel = <1>;
};



&sor1 {
        status = "okay";
        nvidia,active-panel = <&sor1_hdmi_display>;
};

&sor1_dp_display {
        status = "disabled";
        nvidia,is_ext_dp_panel = <1>;
};

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

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

&sor2_dp_display {
        status = "disabled";
        nvidia,is_ext_dp_panel = <1>;
};

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

only connect dp for 4k sony:
4k_dp_dmesg.log (90.6 KB)

connect 4k dp && 4k hdmi:
4k_dp_hdmi_dmesg.log (89.4 KB)

image
image

head0 = hdmi_dp1
head1= hdmi_dp0
head2 = hdmi_dp2
That is right?

Thank you very much!!

您對head的定義搞錯了…

head 是nvdisplay. 這東西跟硬體上pin的連接沒有關係.
SOR0,1,2才是對應到dp0/dp1/dp2.

所以根據device tree, 現在應該是
head0 → sor2 (dp2)
head1 → sor0 (dp0)
head 2 → sor1 (dp1)

我會建議你把問題分開看.

  1. sony 4k螢幕出不來的問題麻煩你就單獨share一份log, 只接這個螢幕的dmesg, /var/log/Xorg.0.log, tegradc.X/mode. log之中不要有任何其他螢幕干擾…
  2. 第二個螢幕沒辦法單獨讀取edid, 根據過去經驗都是硬體問題, 麻煩參考design guide 文件

–Eng version

Your understanding to head and pin mapping is not correct.
Head is the “nvdisplay”. This property has nothing to do with your pin connection.

Instead, “sor” is the pin conneciton.

Thus, according to your device tree, your actual connection is
head0 → sor2 (dp2)
head1 → sor0 (dp0)
head 2 → sor1 (dp1)

I would suggest you check each issue separately

  1. For the sony 4k issue, please dump the log with only that sony 4k monitor connected. I don’t want to see any other monitor connected in the dmesg, /var/log/Xorg.0.log and tegradc.X /mode

  2. For the edid read failure issue, based on past experience, that is hardware design issue. Please refer to the HW design guide.

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