Description of the problem: When Xorg is started a strange screen resolution is detected and used. Steps to reproduce: 1. Start EeePC . 2. Let the boot finish so xorg starts. Expected result: Screen resolution to be the native panel resolution of 1024x600 (no other inputs are attached). xrandr to return the following: Screen 0: minimum 320 x 200, current 1024 x 600, maximum 4096 x 4096 LVDS1 connected 1024x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x600 59.5*+ 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 VGA1 disconnected (normal left inverted right x axis y axis) TV1 disconnected (normal left inverted right x axis y axis) Actual result: A strange non-native resolution is selected causing black borders. xrandr returns the following: Screen 0: minimum 320 x 200, current 800 x 600, maximum 4096 x 4096 LVDS1 connected 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x600 59.5 + 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 VGA1 connected 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1360x768 59.8 1024x768 60.0 800x600 60.3* 56.2 848x480 60.0 640x480 59.9 59.9 TV1 unknown connection (normal left inverted right x axis y axis) 848x480 30.0 + 640x480 30.0 + 1024x768 30.0 How reproducible is the problem: The problem is reproducible every time. Version information: EeePC 900 Ubuntu 10.04 (so an old xorg) Kernel: 7f58aabc369014fda3a4a33604ba0a1b63b941ac (drm-intel-fixes) Additional information: This problem does not occur on 2.6.38 or below. A bisection narrowed it down to the following commit: commit 7f58aabc369014fda3a4a33604ba0a1b63b941ac Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Wed Mar 30 16:20:43 2011 +0100 drm/i915: Reset GMBUS controller after NAK Once a NAK has been asserted by the slave, we need to reset the GMBUS controller in order to continue. This is done by asserting the Software Clear Interrupt bit and then clearing it again to restore operations. If we don't clear the NAK, then all future GMBUS xfers will fail, including DDC probes and EDID retrieval. v2: Add some comments as suggested by Keith Packard. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=35781 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Keith Packard <keithp@keithp.com> Tested-by: Jesse Barnes <jbarnes@virtuousgeek.org> Tested-by: "Mengmeng Meng" <mengmeng.meng@intel.com> Reverting this makes the problem go away.
Step 1: diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c index 8342259..41e41ad 100644 --- a/drivers/gpu/drm/i915/intel_crt.c +++ b/drivers/gpu/drm/i915/intel_crt.c @@ -293,9 +293,9 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector) if (crt->base.type != INTEL_OUTPUT_ANALOG) return false; - if (intel_crt_ddc_probe(dev_priv, dev_priv->crt_ddc_pin)) { - DRM_DEBUG_KMS("CRT detected via DDC:0xa0\n"); - return true; + if (!intel_crt_ddc_probe(dev_priv, dev_priv->crt_ddc_pin)) { + DRM_DEBUG_KMS("CRT detected not via DDC:0xa0\n"); + return false; } if (intel_ddc_probe(&crt->base, dev_priv->crt_ddc_pin)) {
In fact that a0 probe can simply be removed, since all it does is confirm the existence of the controller not a connection.
Created attachment 45156 [details] drm.debug=0xe output for 7f58aabc369014fda3a4a33604ba0a1b63b941ac I have a feeling this output won't be needed but I had just gathered it before your most recent messages :)
And the unknown TV connection is a knock-on effect since we require a spare pipe to perform load-detection. (Without which the connection status is simply unknown.)
Wham! And the problem's fixed with the patch in comment #1. You're fast Chris! Do you need debug output too? Could "CRT detected not via DDC:0xa0\n" be better worded as "CRT absent via DDC:0xa0\n"? Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
I just need to work out if there is some permutation of the 0xa0 probe that has merit, or whether to simply remove it. I think removing it is simplest and so rely on EDID retrieval.
linus commit 0de009c900e7ebd21097797f723a40813e953879 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Tue Apr 5 16:04:39 2011 +0100 drm/i915/crt: Remove 0xa0 probe for VGA This is a moral revert of 6ec3d0c0e9c0c605696e91048eebaca7b0c36695.
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.