Bug 15648

Summary: randr doesn't detect my external LCD's preferred resolution
Product: xorg Reporter: Rafał Miłecki <zajec5>
Component: Driver/RadeonAssignee: xf86-video-ati maintainers <xorg-driver-ati>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: 7.3 (2007.09)   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg.0.log
none
possible fix
none
ddcprobe output without any monitor connected to VGA-0
none
ddcprobe output after next try
none
Xorg.0.log using _fglrx_
none
Xorg.0.log using ati driver from git
none
Xorg.0.log after ddcprobe with -ati from git
none
xrandr verbose: 6.9.0 + patch none

Description Rafał Miłecki 2008-04-22 05:32:24 UTC
Created attachment 16098 [details]
Xorg.0.log

lspci:
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility X700 (PCIE) (prog-if 00 [VGA controller])
        Subsystem: Acer Incorporated [ALI] Aspire 5024WLMi
        Flags: bus master, fast devsel, latency 0, IRQ 18
        Memory at c8000000 (32-bit, prefetchable) [size=128M]
        I/O ports at 9000 [size=256]
        Memory at c0100000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [50] Power Management version 2
        Capabilities: [58] Express Endpoint, MSI 00
        Capabilities: [80] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-


When I connect my Smasung SyncMaster 710N to my notebook's D-SUB port it is detected, but xrandr doesn't offer optimal resolution. This should be 1280x1024 (as you can find in LCD's specs) but I don't see such a mode:


zajec@linux:~> xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 1280 x 1200
VGA-0 connected (normal left inverted right x axis y axis)
   1280x960       60.0
   1280x800       59.8     60.0     58.9
   1152x768       54.8
   1024x768       60.0
   800x600        60.3     56.2
   640x480        59.9
LVDS connected 1280x800+0+0 (normal left inverted right x axis y axis) 330mm x 210mm
   1280x800       60.1*+
   1024x768       60.0
   800x600        60.3
   640x480        59.9
S-video disconnected (normal left inverted right x axis y axis)
DVI-0 disconnected (normal left inverted right x axis y axis)
  1024x768_60 (0x5d)   64.1MHz
        h: width  1024 start 1080 end 1184 total 1344 skew    0 clock   47.7KHz
        v: height  768 start  769 end  772 total  795           clock   60.0Hz


zajec@linux:~> xrandr --output VGA-0 --mode 1280x1024
xrandr: cannot find mode 1280x1024
Comment 1 Alex Deucher 2008-04-23 23:24:09 UTC
The driver is not able to get an edid from the monitor, but it detects the load, so it comes up with the server default modes since the driver doesn't know what modes the monitor supports.

you can either add modelines to the monitor section of your config associated with the VGA port, or add the modelines at runtime using xrandr:

xrandr --newmode "1280x1024R"   90.75  1280 1328 1360 1440  1024 1027 1034 1054 +hsync -vsync
xrandr --newmode "1280x1024"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
xrandr --addmode VGA-0 "1280x1024R"
xrandr --addmode VGA-0 "1280x1024"
xrandr --output VGA-0 --mode 1280x1024
or
xrandr --output VGA-0 --mode 1280x1024R
Comment 2 Rafał Miłecki 2008-04-24 02:05:48 UTC
Alex Deucher: thank you for answer and help. Do you have idea why driver is not able to read edid data? Is there something wrong with my monitor or rather with driver's reader? Can I check this somehow?

I ask as I think it would be nice to have support for every monitor out of box, without manual setting modes.
Comment 3 Alex Deucher 2008-04-24 09:27:37 UTC
Created attachment 16160 [details] [review]
possible fix

(In reply to comment #2)
> Alex Deucher: thank you for answer and help. Do you have idea why driver is not
> able to read edid data? Is there something wrong with my monitor or rather with
> driver's reader? Can I check this somehow?

It could be either but I suspect it's a driver issue.  There are a few cards where the GPIO settings don't quite work right.  Does the following patch help?
Comment 4 Rafał Miłecki 2008-04-28 07:03:46 UTC
Alex Deucher: it didn't help. With your patch applied xrandr --verbose gave:


VGA-0 connected (normal left inverted right x axis y axis)
        Identifier: 0x4c
        Timestamp:  60152
        Subpixel:   no subpixels
        Clones:
        CRTCs:      0 1
        load_detection: 1 (0x00000001) range:  (0,1)
  1280x800 (0x5e)   83.5MHz -HSync +VSync +preferred
        h: width  1280 start 1352 end 1480 total 1680 skew    0 clock   49.7KHz
        v: height  800 start  803 end  809 total  831           clock   59.8Hz
[more modes here...]


I don't have access to 710N temporarily so I connected other LCD, it was GNR MR17-H1A (Hivision) ─ I belive it is still fine? As you can see preferred resolution wasn't detected and EDID also wasn't.
Comment 5 Rafał Miłecki 2008-04-28 07:12:41 UTC
I've also put some additional debugging messages info radeon_output.c to be able to describe what happens:

1) Before your patch
RADEONPortCheckNonDDC is called and this returns 0 (MT_NONE). As my card supports ATOM (accoring to condition info->IsAtomBios) the next step is calling atombios_dac_detect. This function returns 1 (MT_CRT) and according to agd5f it is fine as everyting connected to VGA-0 should be detected as CRT. Unfortunately, as we already know, EDID is not got.

2) With you patch
Function avivo_display_ddc_connected is called first but it returns 0 (MT_NONE). As the whole issue is about my VGA-0 so (radeon_output->type == OUTPUT_LVDS) is false atombios_dac_detect is called. The result is just like before. It returns 1 (MT_CRT) but no EDID info.

Is there anything more I can test? Maybe I could try use some EDID checked and if it is fine, we could check why EDID checker in radeon driver doesn't work? It's just my little idea, if anything else can be done, please tell me.
Comment 6 Alex Deucher 2008-04-28 07:28:54 UTC
The gpios must be in some weird state.  does ddcprobe work?  does the driver work after running ddcprobe?
Comment 7 Rafał Miłecki 2008-04-28 09:19:52 UTC
Created attachment 16219 [details]
ddcprobe output without any monitor connected to VGA-0
Comment 8 Rafał Miłecki 2008-04-28 09:27:02 UTC
Created attachment 16220 [details]
ddcprobe output after next try

This is quite weird. Randomly, I get two different ddcprobe outputs. Sometimes it is "edidfail" and sometimes it's OK (it's about 50%-50%).
Comment 9 Rafał Miłecki 2008-04-28 09:29:19 UTC
Ah and after plugging in external LCD (it is detected by driver and turned on) output of ddcprobe doesn't change (but it's still randomly as before).
Comment 10 Rafał Miłecki 2008-05-05 13:55:25 UTC
I've used manual setting modeline in "xrandr" as in comment #1 and it works fine. Unfortunately still it's hard to make that every time I want to plug in new monitor.

I tried ddcprobe and xrandr --verbose with my 710N and effect it the same as with MR17-H1A. EDID is not detected.

Anything more I can test for you?
Comment 11 Rafał Miłecki 2008-05-26 05:09:22 UTC
Created attachment 16736 [details]
Xorg.0.log using _fglrx_

I started X, plugged in my LCD to VGA-0 and then using amdcccle I enabled it (LCD). This file is Xorg.0.log after doing these actions.
Comment 12 Rafał Miłecki 2008-05-26 14:54:08 UTC
Created attachment 16747 [details]
Xorg.0.log using ati driver from git

I cloned git, compiled driver, started X using and plugged in my LCD 710N. There is my Xorg.0.log after above actions.
Comment 13 Rafał Miłecki 2008-05-27 01:32:58 UTC
Created attachment 16758 [details]
Xorg.0.log after ddcprobe with -ati from git

Another tip received from airlied. I booted into init 3, then used ddcprobe (nothing interesing, it didn't detect my external LCD) and after that "init 5". This is Xorg.0.log after doing so.

When starting X (init 5) external LCD was enabled by driver but with this not proper 1280x800. Alos xrandr --verbose still can't read EDID from VGA-0.
Comment 14 Rafał Miłecki 2008-06-07 03:15:55 UTC
Thanks to z3ro (!) I have now installed valgrind 3.3.1 with mmt patch (http://pastebin.ca/raw/1041115). Can someone explain me how can I use this patched version of valgring to detect difference between fglrx and radeon in EDID reader?
Comment 15 Rafał Miłecki 2008-07-10 08:57:00 UTC
Created attachment 17620 [details]
xrandr verbose: 6.9.0 + patch

I was asked to try 6.9.0 with http://www.botchco.com/alex/xorg/hz_rv410_fix.diff. There is output from xrandr verbose with this patch applied.

LVDS port is empty (my notebook's LCD is dead and not connected)
VGA-0 has SyncMaster 931c connected (1280x1024 is preferred)
Comment 16 Alex Deucher 2008-12-03 01:34:40 UTC
this should be fixed in ati git master:
f9826a5694b7adb6920eb5bdf45d840d8fb14d53

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.