Bug 17215 - Screen resolution issues with Radeon Mobility 7500 unless NoDDC specified
Summary: Screen resolution issues with Radeon Mobility 7500 unless NoDDC specified
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/Radeon (show other bugs)
Version: 7.3 (2007.09)
Hardware: Other Linux (All)
: high normal
Assignee: xf86-video-ati maintainers
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-08-19 19:02 UTC by Bryce Harrington
Modified: 2009-11-11 10:27 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Always add the screen modes to LVDS (1.08 KB, patch)
2008-08-22 07:01 UTC, Alex Deucher
no flags Details | Splinter Review

Description Bryce Harrington 2008-08-19 19:02:25 UTC
Several Ubuntu users are reporting this issue:

https://bugs.edge.launchpad.net/ubuntu/+source/xserver-xorg-video-ati/+bug/160871

With an ATI 7500, the lcd screen shows 1400x1050, but xrandr offers no other resolutions, although several are supported.

http://launchpadlibrarian.net/12221450/xorg.conf
http://launchpadlibrarian.net/12221452/Xorg.0.log



(II) RADEON(0): Printing DDC gathered Modelines:
(II) RADEON(0): Modeline "1400x1050"x0.0 108.00 1400 1448 1560 1688 1050 1051 1054 1068 -hsync -vsync (64.0 kHz)
(II) RADEON(0): DDC Type: 4, Detected Monitor Type: 2
(II) RADEON(0): EDID data from the display on connector: Proprietary/LVDS ----------------------
(II) RADEON(0): Manufacturer: HTC Model: 17b0 Serial#: 420189172
...
(II) RADEON(0): First detailed timing not preferred mode in violation of standard!(II) RADEON(0): redX: 0.590 redY: 0.340 greenX: 0.320 greenY: 0.560

Looks like it's using DDC instead of EDID, and DDC is only returning the one resolution.

Adding Option "NoDDC" to xorg.conf fixes the issue.
Comment 1 Alex Deucher 2008-08-20 07:50:55 UTC
It's using DDC (Display Data Channel) to get the EDID (Extended Display Identification Data).  DDC is the method by which an EDID is obtained.  
The EDID is list of supported modes and features from the monitor.  Generally LVDS panels only support one resolution: the native mode of the panel.  Other modes are supported by scaling a non-native mode to the native mode of the panel using the scaling hardware.  In the cases where a monitor provides an EDID, we use that data since it should contain the monitor's preferred modelines.  In monitors without an EDID, we attempt to add the modes in the display subsection of screen section of the config.

You can add new modes at run time using xrandr:
xrandr --newmode 1024x768   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
xrandr --addmode LVDS 1024x768
Comment 2 Bryce Harrington 2008-08-21 15:46:18 UTC
Ah, thanks for the explanation!

But why does NoDDC make it work for these guys?  I'd have expected the opposite based on this description.

Also, if EDID only gives one resolution and the scaler should be used for the others, why aren't scaled resolutions provided through xrandr in this case?

Comment 3 Alex Deucher 2008-08-22 07:01:35 UTC
Created attachment 18465 [details] [review]
Always add the screen modes to LVDS

(In reply to comment #2)
> Ah, thanks for the explanation!
> 
> But why does NoDDC make it work for these guys?  I'd have expected the opposite
> based on this description.

Because in that case the driver ignores the edid and just adds the modes defined in the screen section which may include non-native modes.

> 
> Also, if EDID only gives one resolution and the scaler should be used for the
> others, why aren't scaled resolutions provided through xrandr in this case?
> 

We rely on the EDID unless it's not available.  The question is which modes should we add by default? 800x600? 1024x768? 1152x864?  I suppose we could always add the screen modes even when an EDID is present (maybe just for LVDS).  I'm not sure what the best solution is.  The attached patch always adds the modes specified in the screen section to LVDS outputs.

Note that users can still add new modes at runtime using xrandr:
xrandr --newmode 800x600   38.25  800 832 912 1024  600 603 607 624 -hsync +vsync
xrandr --addmode LVDS 800x600
Comment 4 Alex Deucher 2009-11-11 10:27:56 UTC
This has been fixed for a while.


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.