Bug 19995 - new feature: DisplayPort support
Summary: new feature: DisplayPort support
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: medium enhancement
Assignee: Keith Packard
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-02-06 09:53 UTC by Alex Ghoth
Modified: 2009-07-03 08:29 UTC (History)
8 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Xorg log (8.71 KB, text/plain)
2009-02-06 09:53 UTC, Alex Ghoth
no flags Details
Xorg.log (216.79 KB, text/plain)
2009-04-01 09:29 UTC, Miguel Tormo
no flags Details
Xorg.log -- DP connected before startx (149.39 KB, text/plain)
2009-04-01 17:55 UTC, Miguel Tormo
no flags Details
X.org log now DP output works at first try (107.73 KB, text/plain)
2009-04-05 13:22 UTC, Miguel Tormo
no flags Details
Xorg log with external monitor attached to DisplayPort (270.47 KB, text/plain)
2009-04-06 11:32 UTC, Adam Piątyszek
no flags Details
xorg for Q45 (24.80 KB, application/octet-stream)
2009-06-23 07:49 UTC, Carlos Salazar
no flags Details

Description Alex Ghoth 2009-02-06 09:53:39 UTC
Created attachment 22655 [details]
Xorg log

The integrated G45 controller works fine through the DisplayPort conenctor when at the console, but attempting to start Xorg 1.6 with the intel 2.6.1 driver reports that no outputs are available. See attached Xorg.log.

System details follow:

-- chipset: G45
-- system architecture: i686
-- kernel version: 2.6.28.2
-- Versions:
     xf86-video-intel 2.6.1 
     libdrm 2.4.4
     xorg-server 1.5.99.902

-- Display connector: DP (DisplayPort) is connected to a 30" Dell Monitor, model WPF3008.

-- Machine or mobo model: 

Dell Vostro 420, with HDMI, VGA, and DP display connectors.

$ lspci -v 

00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
        Subsystem: Dell Device 0282
        Flags: bus master, fast devsel, latency 0, IRQ 10
        Memory at fe400000 (64-bit, non-prefetchable) [size=4M]
        Memory at d0000000 (64-bit, prefetchable) [size=256M]
        I/O ports at cc00 [size=8]
        Capabilities: [90] MSI: Mask- 64bit- Count=1/1 Enable-
        Capabilities: [d0] Power Management version 2
        Capabilities: [a4] PCIe advanced features <?>

00:02.1 Display controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)
        Subsystem: Dell Device 0282
        Flags: bus master, fast devsel, latency 0
        Memory at fe300000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [d0] Power Management version 2

$ lswh

     *-pci
          description: Host bridge
          product: 4 Series Chipset DRAM Controller
          vendor: Intel Corporation
          physical id: 100
          bus info: pci@0000:00:00.0
          version: 03
          width: 32 bits
          clock: 33MHz
          configuration: driver=agpgart-intel module=intel_agp
        *-display:0 UNCLAIMED
             description: VGA compatible controller
             product: 4 Series Chipset Integrated Graphics Controller
             vendor: Intel Corporation
             physical id: 2
             bus info: pci@0000:00:02.0
             version: 03
             width: 64 bits
             clock: 33MHz
             capabilities: msi pm vga_controller bus_master cap_list
             configuration: latency=0
        *-display:1 UNCLAIMED
             description: Display controller
             product: 4 Series Chipset Integrated Graphics Controller
             vendor: Intel Corporation
             physical id: 2.1
             bus info: pci@0000:00:02.1
             version: 03
             width: 64 bits
             clock: 33MHz
             capabilities: pm bus_master cap_list
             configuration: latency=0
Comment 1 Gordon Jin 2009-02-06 21:20:13 UTC
Current driver doesn't support DisplayPort yet.
Keith may have some code for trial.
Comment 2 Alex Ghoth 2009-02-09 07:23:21 UTC
(In reply to comment #1)
> Current driver doesn't support DisplayPort yet.
> Keith may have some code for trial.
> 

The HDMI code with audio is a great enhancement, and would be perfect if it weren't for the fact that I am trying to drive a 2560x1600 30" display. It would be great to see similar support for DisplayPort outputs.

Just did a "pull", and not seen any new code/activity on the master branch. If there's a patch or any trial code, I'd be happy to give it a go!
Comment 3 Miguel Tormo 2009-03-12 08:38:48 UTC
I'll be glad to test new drivers too. I have a 24" 1920x1200 monitor to be connected through DP (GMA 4500HD).
Comment 4 shirsavar 2009-03-29 08:33:26 UTC
Dear All,

I have exactly the same problem with Intel x4500 chip set, Displayport and a 24" 1920x1200 monitor.

Displayport does not work. I tried compiling and installing the Intel xf86 graphic drivers but it made no difference.

Any help would be much appreciated.
Comment 5 Keith Packard 2009-03-30 11:29:20 UTC
There is some sample code on the display-port branch of the 2D driver. I'd like to get some feedback on whether this works in other environments.
Comment 6 Miguel Tormo 2009-03-31 16:15:38 UTC
Hi Keith,
Just tested it today. It looks good:
$ xrandr -q
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 3360 x 1200
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 2
07mm
   1440x900       59.9*+   40.0
   1152x864       75.0
   1024x768       85.0     75.0     70.1     60.0
   832x624        74.6
   800x600        85.1     72.2     75.0     60.3     56.2
   640x480        85.0     72.8     75.0     59.9
   720x400        85.0
   640x400        85.1
   640x350        85.1
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected (normal left inverted right x axis y axis)
   1920x1200      60.0 +
   1600x1200      60.0     60.0
   1400x1050      74.8     60.0
   1280x1024      75.0     60.0     60.0
   1280x960       60.0
   1152x864       75.0     75.0
   1024x768       75.1     75.0     70.1     60.0
   832x624        74.6
   800x600        72.2     75.0     60.3     56.2
   640x480        75.0     72.8     75.0     60.0     59.9
   720x400        70.1
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
TV disconnected (normal left inverted right x axis y axis)

However, I don't get any output in the monitor connected through the DP:
$ xrandr --output DP-1 --auto --left-of LVDS

The monitor enters power save mode, no ouput if I switch off-switch on again, change source and back to DP, etc. Xorg does resize.

I think this is the expected behaviour as it's just sample code to see if it is correctly detected, right?

Comment 7 Keith Packard 2009-03-31 17:58:05 UTC
No, it should bring up the display and work. Can you post your Xorg.0.log file so I can check to see what errors might have been reported? Also, it's worth trying a few other modes to see if they'll come up. It's still a bit twitchy for me, so additional information would be useful.

Also, turn on 

        Option "ModeDebug" "YES"

in your xorg.conf "Device" section as that will output a few other details.
Comment 8 Adam Piątyszek 2009-04-01 02:21:17 UTC
(In reply to comment #6)
> However, I don't get any output in the monitor connected through the DP:
> $ xrandr --output DP-1 --auto --left-of LVDS
> 
> The monitor enters power save mode, no ouput if I switch off-switch on again,
> change source and back to DP, etc. Xorg does resize.

I confirm this behaviour. For the first try I had exactly the same symptoms. 

Although, I was able to use 1600x1200 resolution using "--mode" option, and with the next try the native 1920x1200 also worked fine:

$ xrandr --output DP-1 --auto --output LVDS --off
Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 1920 x 1200
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected (normal left inverted right x axis y axis)
   1440x900       60.2 +   40.2  
   1152x864       75.0  
   1024x768       85.0     75.0     70.1     60.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 580mm x 360mm
   1920x1200      60.0*+
   1600x1200      60.0     60.0  
   1680x1050      60.0  
   1400x1050      74.8     60.0  
   1280x1024      75.0     60.0     60.0  
   1280x960       60.0  
   1152x864       75.0     75.0  
   1024x768       75.1     75.0     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        75.0     72.8     75.0     60.0     59.9  
   720x400        70.1  
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
TV disconnected (normal left inverted right x axis y axis)
Comment 9 Miguel Tormo 2009-04-01 04:24:13 UTC
I can confirm what Adam says, output is working here too. I didn't do further tests because I thought the driver wasn't ready yet, sorry.

So, apparently these are the cases:
 - X started with DP connected: it works since first try
 - X started without DP connected: it works at second try, fi:
$ xrandr --output DP-1 --auto    # Doesn't work yet...
$ xrandr --output DP-1 --auto    # Now it does work

Once one gets output for the first time, it works even disconnecting the port and restarting X, etc, until a cold reboot, then you have the same scenario as above.

So it works 100%, only the little issue of the first try when DP is connected after starting X.

It's great to see DP support finally!

Do you still want to take a look at the log? I'll attach it if so.
Comment 10 Keith Packard 2009-04-01 07:38:19 UTC
Yes, all logs are useful at this point, with ModeDebug enabled it may show where it fails and how that differs from when it works. If not, we'll stick more stuff into the log until we figure out how to make it work reliably.
Comment 11 Miguel Tormo 2009-04-01 09:29:00 UTC
Created attachment 24437 [details]
Xorg.log

Xorg.log: DP disconnected at X start.

I will attach another log for the case when DP is connected before X starts.
Comment 12 Miguel Tormo 2009-04-01 17:55:49 UTC
Created attachment 24450 [details]
Xorg.log -- DP connected before startx

This is the X.org log file when the DisplayPort is connected before starting X.
Comment 13 Keith Packard 2009-04-03 13:37:31 UTC
Ok, I found a bunch of little mistakes in the user-mode Display Port code:

 * not actually setting the voltage/pre-emphasis, which would break monitors that couldn't lock onto the lowest voltage/pre-emphasis pair.

 * setting the M/N values after enabling the pipe. This would cause the first attempt to enable the output to fail, as those values are part of the pipe configuration and not loaded except at pipe enable time.

 * Not saving/restoring the M/N registers. This would cause return to text mode to fail if the M/N values needed to change.

I'm pretty happy with the current code; please retest the display-port branch and report back any failures.
Comment 14 Miguel Tormo 2009-04-04 17:30:14 UTC
I cannot get it to compile:
$ ./autogen.sh
...
checking for DRM... configure: error: Package requirements (libdrm >= 2.4.6) were not met:

Requested 'libdrm >= 2.4.6' but version of libdrm is 2.4.5

The previous version tested asked for libdrm >= 2.4.5 so I upgraded because I had 2.4.4. Now it asks libdrm 2.4.6, but here http://dri.freedesktop.org/libdrm/ last version available is 2.4.5, so is the last tag from git...

What do you suggest to be able to build it?
Comment 15 Miguel Tormo 2009-04-05 13:22:54 UTC
Created attachment 24589 [details]
X.org log now DP output works at first try

I've just compìled it changing the dependency check in the configure script. The driver works well so far, now it gets the output at the first try when DP is connected after startx.
Everything is working as expected for me. I attach the X.org log, maybe it could be useful.
Comment 16 Keith Packard 2009-04-05 14:13:17 UTC
Thanks for confirming that it works now. I'd love to see additional tests with monitors other than the Dell 2408WFP (which I have as well).

Once we get this moved to the kernel, I'll be closing this bug unless someone finds additional issues.
Comment 17 Adam Piątyszek 2009-04-06 04:16:06 UTC
(In reply to comment #16)
> Thanks for confirming that it works now. I'd love to see additional tests with
> monitors other than the Dell 2408WFP (which I have as well).

I can confirm that it now works almost fine with Dell 2709W LCD monitor. I say "almost", because I have another problem with DisplayPort and DVI outputs on my laptop (Dell Latitude E6400) with this monitor, but this is rather unrelated to this bug.

The problem is that when I use a digital output (DVI or DP), the fan in my laptop starts running at the highest speed and never stops even, if the CPU is idle (30C on both cores). This does not happen, if I connect my external monitor with VGA cable or if I use LVDS display only. I suspect some performance critical operations in Intel driver when using digital output connectors. Should I open a new bug report for this issue?
Comment 18 Keith Packard 2009-04-06 08:25:56 UTC
Can you post an Xorg.0.log file with

option "ModeDebug" "true"

in your config file? I'd like to see if running the PLL at 270MHz might be causing this extra power consumption; there shouldn't be any difference running DP compared to other outputs...
Comment 19 Adam Piątyszek 2009-04-06 11:32:44 UTC
Created attachment 24611 [details]
Xorg log with external monitor attached to DisplayPort
Comment 20 Adam Piątyszek 2009-04-06 11:45:09 UTC
(In reply to comment #18)
> Can you post an Xorg.0.log file with
> 
> option "ModeDebug" "true"
> 
> in your config file? I'd like to see if running the PLL at 270MHz might be
> causing this extra power consumption; there shouldn't be any difference running
> DP compared to other outputs...

I have just attached the relevant Xorg.0.log file. I hope you will find out something, because it is quite annoying to work with this laptop when DVI or DisplayPort is used (fans runs at maximum RPM level and are very noisy). Now I still use VGA output due to this reason.

BTW, I observed similar fan (or video heating) problems even with LVDS display, when I was using earlier xf86-video-intel driver (version 2.3.2 and 2.4.3) and xorg-server (ver. 1.3.0 and 1.4.2) with 2.6.27 kernel.

Thanks in advance!
/Adam
Comment 21 Adam Piątyszek 2009-04-20 00:58:04 UTC
(In reply to comment #17)
> The problem is that when I use a digital output (DVI or DP), the fan in my
> laptop starts running at the highest speed and never stops even, if the CPU is
> idle (30C on both cores). This does not happen, if I connect my external
> monitor with VGA cable or if I use LVDS display only. I suspect some
> performance critical operations in Intel driver when using digital output
> connectors. Should I open a new bug report for this issue?

Yesterday I upgraded my system to use the following packages:
- xorg-server-1.6.0
- mesa-7.4
- libdrm-2.4.6
and configured video driver to use UXA acceleration. I had to disable "Tilling" option to make this work on my GM45 platform. Otherwise, the display was unusable.

Now, when I use the DisplayPort, I no longer observe the cooling problems I had before. I hope that UXA will work stable on my platform in this configuration.

When do you plan to merge the display-port branch to some release branch? In 2.8?

Thanks,
/Adam
Comment 22 Halim Issa 2009-06-20 04:32:54 UTC
Is there a roadmap available somewhere for when DisplayPort is planned included in the mainline intel driver?

When reading the comments from this bug tracker, it would seem as most issues are cleared, and that DisplayPort might be ready to open for some wider testing by including it in mainline, perhaps by marking it as experimental when enabled, or something like that?

Thanks in advance!
Comment 23 Carlos Salazar 2009-06-23 07:49:37 UTC
Created attachment 27052 [details]
xorg for Q45

Hi guys,

i am still not succesfull with using the DisplayPort of my linux box. 

i attached my xorg.log, maybe somebody can tell me what to do.  By the way i am using the latest xserver-xorg including the latest libdrm too from  Debian Sid. My  intel chipset is Q45/Q43.

I get a black screen, only if i change to the VESA driver i get something, but not  the modeline 1360X768.  

Thanks in advance,

Carlos
Comment 24 Eric Anholt 2009-07-01 14:05:09 UTC
This is now merged into linus master.
Comment 25 Piotr Morgwai Kotarbiński 2009-07-02 16:53:30 UTC
Eric,
You are probably talking about kernel side changes, but there are also X driver changes in Keith's display-port branch (http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/log/?h=display-port) that need to be merged to master.

Cheers

  Morg
Comment 26 Keith Packard 2009-07-03 00:31:49 UTC
I won't be adding user-mode DisplayPort support to the X driver, if you want DisplayPort, you'll need to use kernel mode setting. There are several important features (like suspend/resume and unplug/re-plug) that cannot work reliably from user mode.
Comment 27 Piotr Morgwai Kotarbiński 2009-07-03 08:29:41 UTC
(In reply to comment #26)
> I won't be adding user-mode DisplayPort support to the X driver, if you want
> DisplayPort, you'll need to use kernel mode setting. There are several
> important features (like suspend/resume and unplug/re-plug) that cannot work
> reliably from user mode.
> 

Ah, I thought both sides (kernel and X) are required to make it fully work.
Thanks for the clarification! I'll test kernel support then.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.