Display port enabled but not working

Hello,

I designed a custom carrier board and have a mini display port on DP0. I followed the following threads:



Since I don’t have the 5V regulator for HDMI, I disabled it as suggested in sources/kernel/nvidia/drivers/video/tegra/dc/of_dc.c

My device tree file, tegra186-quill-p3310-1000-a00-00-base.dts has the following settings, which simply enables DP0 and DP1 for display port:

sor {
	status = "okay";
	bootloader-status = "okay";
	nvidia,active-panel = <&sor0_dp_display>;
	dp-display {
		status = "okay";
		bootloader-status = "okay";
	};
	hdmi-display {
		status = "disabled";
	};

	panel-s-edp-uhdtv-15-6 {
		smartdimmer {
			status = "disabled";
		};
	};
};

dpaux@155c0000 {
	status = "okay";
	bootloader-status = "okay";
};

sor1 {
	status = "okay";
	bootloader-status = "okay";
	nvidia,active-panel = <&sor1_dp_display>;
	hdmi-display {
		status = "disabled";
	};
	dp-display {
		status = "okay";
		bootloader-status = "okay";
	};
};

dpaux@15040000 {
	status = "okay";
	bootloader-status = "okay";
};

nvdisplay@15200000 {
	status = "okay";
	nvidia,dc-or-node = "/host1x/sor";
	nvidia,dc-connector = <&sor0>;
	nvidia,fb-win = <0>;
	win-mask = <0x3>;
};

nvdisplay@15210000 {
	status = "okay";
	nvidia,dc-or-node = "/host1x/sor1";
	nvidia,dc-connector = <&sor1>;
	nvidia,fb-win = <2>;
	win-mask = <0xC>;
};

nvdisplay@15220000 {
	status = "disabled";
	nvidia,dc-or-node = "/host1x/dsi";
	nvidia,fb-win = <4>;
	win-mask = <0x30>;
};

As you can see from the following log, it looks like there is no problem, however, the Dell monitor I have goes into sleep mode, as it detects no DP signal (however, it does detect something, as when I unplug the cable, it stays awake). I use a display port to mini display port cable (in case that’s important, no adapters are used).

root@ubuntu-desktop:~# dmesg | grep nvdisplay
[    0.409904] iommu: Adding device 15200000.nvdisplay to group 32
[    0.409996] platform 15200000.nvdisplay: OF IOVA linear map 0x9607d000 size (0x800000)
[    0.410030] platform 15200000.nvdisplay: OF IOVA linear map 0x9607a000 size (0x2008)
[    0.410469] iommu: Adding device 15210000.nvdisplay to group 33
[    0.410554] platform 15210000.nvdisplay: OF IOVA linear map 0x9607d000 size (0x800000)
[    0.410583] platform 15210000.nvdisplay: OF IOVA linear map 0x9607a000 size (0x2008)
[    0.951165] tegradc 15200000.nvdisplay: disp0 connected to head0->/host1x/sor
[    0.951318] tegradc 15200000.nvdisplay: DT parsed successfully
[    0.951340] tegradc 15200000.nvdisplay: Display dc.ffffff800b690000 registered with id=0
[    0.958745] tegradc 15200000.nvdisplay: vblank syncpt # 8 for dc 0
[    0.958751] tegradc 15200000.nvdisplay: vpulse3 syncpt # 9 for dc 0
[    0.968812] tegradc 15200000.nvdisplay: probed
[    0.969170] tegradc 15200000.nvdisplay: fb registered
[    0.972551] tegradc 15200000.nvdisplay: blank - powerdown
[    0.973029] tegradc 15210000.nvdisplay: disp1 connected to head1->/host1x/sor1
[    0.973163] tegradc 15210000.nvdisplay: DT parsed successfully
[    0.973184] tegradc 15210000.nvdisplay: Display dc.ffffff800b790000 registered with id=1
[    0.973386] tegradc 15210000.nvdisplay: vblank syncpt # 11 for dc 1
[    0.973391] tegradc 15210000.nvdisplay: vpulse3 syncpt # 12 for dc 1
[    0.974290] tegradc 15210000.nvdisplay: Bootloader disp_param detected. Detected mode: 1920x1080 (on 0x0mm) pclk=148350937
[    0.978138] tegradc 15210000.nvdisplay: probed
[    0.999680] tegradc 15210000.nvdisplay: fb registered
[    1.000260] tegradc 15210000.nvdisplay: blank - powerdown
[    4.911447] tegradc 15200000.nvdisplay: blank - powerdown
[    4.911456] tegradc 15210000.nvdisplay: blank - powerdown
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/nvdisplay@15200000/status
00000000: 6f6b 6179 00                             okay.
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/nvdisplay@15210000/status
00000000: 6f6b 6179 00                             okay.
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/nvdisplay@15220000/status
00000000: 6469 7361 626c 6564 00                   disabled.
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/sor/status
00000000: 6f6b 6179 00                             okay.
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/sor1/status
00000000: 6f6b 6179 00                             okay.
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/sor/dp-display/status
00000000: 6f6b 6179 00                             okay.
root@ubuntu-desktop:~# xxd /proc/device-tree/host1x/sor1/dp-display/status
00000000: 6f6b 6179 00                             okay.

Lastly I tried checking /sys/kernel/debug/tegra_dp0/hotplug, but it stays at 0

Here is the full dmesg log: dmesg.log (82.3 KB)

Hi,

I think the post that was resolved recent is good enough for your problem. When you check the post over the forum, you have to be careful about whether this is a post for rel-28 or for rel-32.

In your dmesg, you are trying to enable two DP ports simultaneously.

But these two all give you negative hpd (hot plug detection) . Please check your hardware design for this part.

[ 0.972599] hpd: hpd_switch 0
[ 0.972602] hpd: switching from state 0 (Reset) to state 1 (Check Plug)
[ 0.972609] hpd: state 1 (Check Plug), hpd 0, pending_hpd_evt 0
[ 0.972615] hpd: switching from state 1 (Check Plug) to state 3 (Disabled)

[ 1.000274] hpd: hpd_switch 0
[ 1.000277] hpd: switching from state 0 (Reset) to state 1 (Check Plug)
[ 1.000285] hpd: state 1 (Check Plug), hpd 0, pending_hpd_evt 0
[ 1.000290] hpd: switching from state 1 (Check Plug) to state 3 (Disabled)

Hello Wayne,

The problem was that there was a short on HPD and GND at the side of the connector. I desoldered the connector, removed the excess solder, and resoldered the connector. I can confirm that the display output is working

1 Like