"DVI-0 Disconnceted" with DVI-to-VGA on analog CRT [Fixed]

Coadey coadey at gmail.com
Sat Jul 25 18:48:40 PDT 2009


Coadey wrote:
> Alex Deucher wrote:
>> On Sat, Jul 25, 2009 at 3:05 PM, Coadey<coadey at gmail.com> wrote:
>>  
>>> A Radeon X1550 (RV505) with one DVI port works great with a VGA
>>> multisync CRT and DVI-to-VGA adapter. Custom modelines, vsync and 
>>> direct
>>> render are perfect, with xrandr reporting "DVI-0 connected".
>>>
>>> However with a different monitor (an analog arcade CRT), xrandr reports
>>> "DVI-0 disconnected" and lists only a single defined mode, which does
>>> display properly. I've tried several different cables and DVI-to-VGA
>>> adapters.
>>>
>>> I'm confident the problem is software, as it worked under the last
>>> radeon driver I used (most likely current git in early March).  I'm now
>>> on Debian Sid, 2.6.30-1-686-bigmem, and up-to yesterdays git of
>>> xf86-video-ati (2009-07-24).
>>>
>>> xrandr --verbose:   http://pastebin.com/f2d18e989
>>> xorg.conf:   http://pastebin.com/f1ed6090a
>>> Xorg.0.log:   http://pastebin.com/f180397bd
>>> lspci -v:   http://pastebin.com/f77fe0021
>>> dmesg:   http://pastebin.com/f53a7facf
>>> dpkg -l:   http://pastebin.com/m7b7f4fca
>>>
>>> Besides xorg.conf changes, I've tried "nomodeset" under the kernel, and
>>>
>>> xrandr --output DVI-0 --set load_detection 0
>>> xrandr --output DVI-0 --set dvi_monitor_type analog
>>>
>>> (Both produce: X Error of failed request: BadMatch (invalid parameter
>>> attributes)).
>>>
>>> It seems similar to the following problem, yet I am using the latest
>>> ati/radeon git:
>>>
>>> http://lists.freedesktop.org/archives/xorg/2009-March/044571.html
>>>
>>> Whenever "xrandr -q" is called in this scenario, this is printed to
>>> Xorg.0.log:
>>>
>>> (II) RADEON(0): Output: DVI-0, Detected Monitor Type: 0
>>> Dac detection success
>>> Unhandled monitor type 0
>>> (II) RADEON(0): EDID for output DVI-0
>>>
>>> I can manually add modes with "xrandr --newmode " and then "xrandr
>>> --addmode", however the modes can't actually be used (the video signal
>>> has no sync, and this error is displayed):
>>>
>>> (EE) RADEON(0): No encoder assigned to output!
>>>
>>> Can anyone please tell me how the xserver can correctly report (e.g. to
>>> xrandr) that a display is connected (and therefore use the rest of the
>>> xorg.conf modelines)?  Is this a bug in xorg?
>>>     
>>
>> Load detection is enabled by default on the avivo cards so there's no
>> need to force it on.
>> If the driver is not able to detect anything attached (either via edid
>> or load detection) it falls back to enabling a default output.
>> Nothing is reported as connected because nothing is actually detected
>> as attached.  You can force it to be enabled via your xorg.conf.  Add:
>> Option "Enable" "true"
>> to your monitor section.  see this page for more info:
>> http://wiki.debian.org/XStrikeForce/HowToRandR12
>>
>>  
>>> Again this all works simply by physically changing to a different CRT
>>> monitor on the same DVI-to-VGA adapter, or by reverting to an older (3
>>> months or so) radeon driver.
>>>     
>>
>> Can you use git bisect to find out what commit broke it?
>>
>> Alex
>>   
> OK the bug was introduced by the following commit.  However on 
> revisions prior to this, a different bug existed;  "xrandr -q" would 
> toggle between showing "DVI-0 connected" and "DVI-0 disconnected" 
> every time it was called.  Guess it's time for me to file a bug report?:
>
> 6ae54d3ea023968887bf0cb0ec1be2115621d554 is first bad commit
> commit 6ae54d3ea023968887bf0cb0ec1be2115621d554
> Author: Alex Deucher <alexdeucher at gmail.com>
> Date:   Wed Mar 18 11:50:22 2009 -0400
>
>    AVIVO: Fix dac load detection
>
> :040000 040000 562616a69c3bddb67e77d9e8484857e1833b06fa 
> 48df781751de5a6288f28cd7afce952403f358cd M    src
>
I cloned the latest git and fixed the issue by changing line 1621 of 
atombios_output.c from:

        if (info->ChipFamily >= CHIP_FAMILY_R600)
            bios_0_scratch = INREG(R600_BIOS_0_SCRATCH);

To:

        if (info->ChipFamily >= CHIP_FAMILY_RV515)
            bios_0_scratch = INREG(R600_BIOS_0_SCRATCH);

The monitor is now always seen as connected properly every time "xrandr 
-q" is called, and all custom modelines are loaded and switchable.

Hope this helps,

Coadey


More information about the xorg-driver-ati mailing list