Bug 21632 - [DVI-I on monitor] EDID data on VGA output ignored unless the output is active
Summary: [DVI-I on monitor] EDID data on VGA output ignored unless the output is active
Status: RESOLVED NOTABUG
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: ykzhao
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-05-08 06:23 UTC by Tomas Janousek
Modified: 2009-12-21 22:03 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
X log (87.48 KB, text/plain)
2009-05-08 06:24 UTC, Tomas Janousek
no flags Details
pleaset try the patch on your machine, thanks. (617 bytes, text/plain)
2009-06-25 02:19 UTC, MaLing
no flags Details

Description Tomas Janousek 2009-05-08 06:23:21 UTC
driver version: 2.7.0
xserver version: 1.6.1
hw: 945GM on HP Compaq nx7300, HP LP2475w LCD monitor

When I connect this monitor to my laptop's VGA port (no DVI, no TVOUT, no HDMI on this laptop) and run xrandr, I get the default modes only (running with --verbose clearly shows that there's no EDID data). If I do `xrandr --output VGA --auto', output works and subsequent calls to xrandr show correct info. After turning the output off again, we return to the erroneous behaviour.

Investigation showed that commit 2f93cfbc7e96acc32efb5e1ca49b817a81cba6e3 caused this. In function i830_get_edid, this line seems wrong:

    if (!edid_mon || DIGITAL(edid_mon->features.input_type)) {

If I comment out the "|| DIGITAL(edid_mon->features.input_type)" part, everything works fine. As I understand it, this code tries to ignore digital monitors on analog outputs. However, my laptop has no digital output, so it gets ignored completely.

I will be attaching logs. EDID data ending with 51 is the monitor connected to a non-active output. EDID data ending with 60 is the monitor connected to an active output. EDID data ending with 3e is the LVDS. Difference between EDID data from active and non-active output is pasted here: http://paste.dqd.cz/849
Comment 1 Tomas Janousek 2009-05-08 06:24:44 UTC
Created attachment 25639 [details]
X log
Comment 2 Gordon Jin 2009-05-10 23:18:52 UTC
So the commit is:
commit 2f93cfbc7e96acc32efb5e1ca49b817a81cba6e3
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date:   Fri Sep 19 15:20:55 2008 +0800

    Fix output detection for DVI-I
    
    For CRT this trys to probe all possible port for EDID and
    detects got confirmed by EDID's d/a type bit.
    For HDMI/DVI, also using EDID d/a type bit to ensure it should
    handle the connect or not.
Comment 3 Wang Zhenyu 2009-05-10 23:31:26 UTC
"EDID data ending with 51 is the monitor connected to a non-active output. EDID data ending with 60 is the monitor connected to an active output." -- what's the meaning of this? why this monitor provides two different EDID data block?
Comment 4 Tomas Janousek 2009-05-10 23:35:03 UTC
I don't know. Shall I look for more monitors doing this? Do you think it's the monitor's bug that it sets the digital bit on a connection using VGA cable?
Comment 5 Wang Zhenyu 2009-05-10 23:46:56 UTC
I'm not sure about that, maybe some monitors just lie about that. But retrieving different EDID data for VGA from same monitor looks weird.

Comment 6 Michael Fu 2009-05-11 01:39:30 UTC
you need to explain what's the meaning of "active" and "non-active" output in your comment...
Comment 7 Tomas Janousek 2009-05-11 04:52:21 UTC
By active I mean currently displaying. That means `xrandr --output VGA --auto' makes the monitor return working EDID data and `xrandr --output VGA --off' makes it return ignored data.
Comment 8 Tomas Janousek 2009-05-11 05:33:03 UTC
I have seen this behaviour with HP LP2465 as well. Both these monitors have two DVI outputs and I used a DVI--VGA cable. I read some stuff about this on Wikipedia and concluded that the DDC wiring in a DVI connector is common for the digital and analog outputs. However, I have no idea whether the monitor may be able to check which of the analog/digital wires are connected.

I can confirm that with a cheap LCD with VGA input only this problem does not happen.
Comment 9 Michael Fu 2009-05-19 09:59:39 UTC
(In reply to comment #8)
> I have seen this behaviour with HP LP2465 as well. Both these monitors have two
> DVI outputs and I used a DVI--VGA cable. I read some stuff about this on
> Wikipedia and concluded that the DDC wiring in a DVI connector is common for
> the digital and analog outputs. However, I have no idea whether the monitor may
> be able to check which of the analog/digital wires are connected.
> 
> I can confirm that with a cheap LCD with VGA input only this problem does not
> happen.
> 

Hmm... I want to know more about your DVI-VGA cable... do you mean you connect the VGA end to your computer and the DVI end to your monitor?
Comment 10 Tomas Janousek 2009-05-19 10:00:36 UTC
Yes. My computer has no DVI output.
Comment 11 Michael Fu 2009-05-19 18:02:29 UTC
would you please let us know more about your cable? Does it come with your laptop or your monitor? I've seen DVI-I->VGA cable, but havn't seen a VGA->DVI cable. The reason you can connect DVI-I to VGA is because it has pins that transfer analog RGB signal. 

I google and find http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/382087-382087-64283-72270-444767-3648442.html about the monitor. It's the first time I see a monitor has DVI-I connector in it... I have to say your monitor is pretty unique.

The code isn't wrong. if the monitor producer provide its own version of VGA->DVI cable, it should make sure VGA can get EDID saying it's analog device.

I'm suspecting you probably pick an ordinary DVI-VGA cable that was designed to connect DVI output on computer to VGA input on monitor. 

After confirm this, pls provide us xorg.log with Modedebug turns on. Please refer to http://www.intellinuxgraphics.org/how_to_report_bug.html for HOWTO.
Comment 12 Tomas Janousek 2009-05-20 02:59:55 UTC
I think that the cable came with the monitor. I'm sure it didn't come with the laptop, but I'm not 100% sure that it is the exact cable that came with this particular monitor, since I got it from a box full of cables in our lab — but I suppose all of them came with these LP2475w/LP2465 monitors.

I'm not sure I can agree with your claim that the monitor vendor should provide a _cable_ that itself makes the monitor send analog EDID. From what I read on the internet (links will follow) I understood that this isn't a cable issue and that there's no wiring in the cable that can tell the monitor that the _cable_ is analog only.

For example, the DDWG Digital Display Dual-EDID Implementation Guide [1, pages 5 and 11] suggests that the computer would transmit analog test signal before reading EDID data and I observed and described in the bug description that indeed, when I activate the VGA output with some mode like 640x480 the monitor sends analog EDID afterwards. I also found this patent [2] which suggests that the logic deciding whether to send digital or analog EDID has nothing to do with the cable.

[1] http://www.ddwg.org/lib/Dual_EDID_guide10.pdf
[2] http://www.patentstorm.us/patents/6943753/description.html

I will attach the output you ask for later.
Comment 13 Michael Fu 2009-05-20 04:51:20 UTC
ok. it sounds like the exact document we need to address the issue. Thanks for the pointer, Tomas. We will see how to add this support to the driver.
Comment 14 Tomas Janousek 2009-05-20 06:40:34 UTC
Okay, thanks. I suppose you don't really need that Modeinfo log anymore, but if you do or you need some other info, tell me, I'll be happy to help.
Comment 15 MaLing 2009-06-25 02:19:23 UTC
Created attachment 27120 [details]
pleaset try the patch on your machine, thanks.

The patch only simulate to send some analog signal to monitor. 
However I prefer to appending property to do sending-signal work because the operation is not efficient for all monitor, what's your openion?
Comment 16 MaLing 2009-07-06 00:30:16 UTC
(In reply to comment #15)
> Created an attachment (id=27120) [details]
> pleaset try the patch on your machine, thanks.
> The patch only simulate to send some analog signal to monitor. 
> However I prefer to appending property to do sending-signal work because the
> operation is not efficient for all monitor, what's your openion?

ping ~
Comment 17 Tomas Janousek 2009-07-07 04:54:54 UTC
Pong (I was on holiday and I will be on another 8th–13th).

I have tested the patch, but it didn't make any difference. I still receive the digital EDID. I even tried moving i830ReleaseLoadDetectPipe after the series of get_edids, but nothing changed. Is there anything else I should try?
Comment 18 Tomas Janousek 2009-10-26 12:38:55 UTC
It's worth noting that with 2.9.0-1 (Debian) and Linux v2.6.32-rc5-81-g964fe08 and KMS I can't reproduce this bug (is it KMS' "fault"?).
Comment 19 ykzhao 2009-12-21 22:03:24 UTC
(In reply to comment #18)
> It's worth noting that with 2.9.0-1 (Debian) and Linux v2.6.32-rc5-81-g964fe08
> and KMS I can't reproduce this bug (is it KMS' "fault"?).
> 
thanks for the confirm.
It seems that you can't reproduce this bug.

In fact I also have a HP2475W monitor in my hand. And when I connect the monitor by using VGA cable, it can get the correct EDID. And the EDID type is analog.

So this bug will be rejected.

thanks.



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.