Portrait mode support on DisplayPort?

I’m helping with a custom carrier board, and so far have managed to get most of the devices working. The one big problem I’m having is with DisplayPort output, we’re using a Toshiba TC358860 chip to convert from DisplayPort (or embedded, I’ve tried both) to DSI. Currently I have to configure the 358860 after boot using i2c, and that appears to work since I can get the chip to generate and display color bars correctly.

However, I can’t get any graphics out from the Nano, either framebuffer or X. Sometimes it seems like I get close to getting video working in X (fixed most obvious errors) but I get a bunch of GPU exceptions and X fails to start. Currently, I can initialize the 358860 and attempt to start X but it fails for reasons that are not obvious to me, and I still don’t get any video output from the framebuffer. I’m using
DISPLAY=:0.0 startx
to start X windows from ssh, since I’m on a custom file system. I’m happy to add packages (display manager or whatever) that might help.

I have a bunch of questions, but the main ones are:

  1. Does the Nano support portrait video modes? The display is 1200x1920.
  2. I don’t know what to do with this error:

[ 180.414386] tegradc tegradc.1: tegra_dp_get_bpp: vmode=0x10200000 did not specify bpp
[ 180.414848] tegradc tegradc.1: tegra_dp_get_bpp: vmode=0x10400000 did not specify bpp
[ 180.415322] tegradc tegradc.1: tegra_dp_get_bpp: vmode=0x10420000 did not specify bpp

This is what I have in my device tree for vmode, second one added by me:

//vmode = <0x400000>; /* FB_VMODE_NONINTERLACED | FB_VMODE_IS_CEA /
vmode = <0x000140>; /
FB_VMODE_Y444 | FB_VMODE_Y24*/

  1. I don’t know what to put into prod-settings. This is what I have currently, but I haven’t been able to confirm what they should be.
  prod-settings {
					prod_c_hbr {
						prod = <
							0x00000590 0x00f00000 0x00400000   //SOR_NV_PDISP_SOR_PLL1_0	23:20=LOADADJ	0x04 
							>;
					};
					prod_c_hbr2 {
						prod = <
							0x00000590 0x00f00000 0x00600000   //SOR_NV_PDISP_SOR_PLL1_0	23:20=LOADADJ	0x06 
							>;
					};
					prod_c_rbr {
						prod = <
							0x00000590 0x00f00000 0x00300000   //SOR_NV_PDISP_SOR_PLL1_0	23:20=LOADADJ	0x03
							>;
					};

Here’s my current dmesg output from booting normally, initializing the 358860 starting at around 75 seconds, and starting X at around 180 seconds.
dmesg.txt (66.4 KB)

Here’s the X.org log, same run:
Xorg.0.log (395.1 KB)

My tegra210-dp.dsti:
tegra210-dp.dtsi (4.0 KB)

  1. For the prod setting, please refer to the tuning guide from our download center.

  2. When debug display issue, disable other display and focus on only the one you need. In your case, disable hdmi port from dts first.

  3. Why do you have to set fbcon-default mode in your dts? Does tegra not read edid from your panel in your case?

  1. Thanks, I’ll look into that.
  2. I’ll do that.
  3. There was no edid to read, it’s a custom driver board for an off-the-shelf panel. It was originally intended to be an eDP display, but decided to try DP to see if it helped any. That gave me the error messages from this thread: 2048x1536 eDP display on TX1 which is a bit confusing since that specifies eDP, but I’ve since implemented the fixes there to get where I am now.

But now I’ve got my custom edid file embedded in the kernel (also a long story), I’ll try getting rid of the fbcon-default settings in the device tree and turning off the HDMI. And checking the tuning guide.

Thanks for the quick response.

Actually, the topic you are referring to is little bit out of date. That thread seems 3 years ago. The kernel version is totally different from current k4.9.

And for DP driver, I still suggest you should let the edid read start. You can enable use_fallback in edid.c and assign a fake edid for your panel.

Looks like the fbcon-default settings were indeed fighting with the custom edid I embedded in the kernel with use_fallback=true in:

nvidia/drivers/video/tegra/dc/edid.c

I have working video output now after running the code to initialize the Toshiba chip. Thanks! Next step is to turn the HDMI back on and hope both displays work.

To answer my own question, portrait mode over displayport works fine, and

! nvvidconv flip-method=1 !

rotates the video output through my gstreamer pipeline nicely and is still accelerated. I haven’t tested X.org, but I don’t plan on using it.

If it’s okay, I’m going to mark this post as the solution. I might be back after working on enabling HDMI. Thanks again for the help.

1 Like