On Tue, 2010-08-24 at 08:49 +0100, Chris Wilson wrote:
On Tue, 24 Aug 2010 03:00:55 +0200, Ivan Bulatovic combuster@gmx.com wrote:
While in init3, resolution is native, KMS works fine, no problems at all. As soon as gdm starts it seems that TV1 output is recognized as connected even if it isn't so resolution on VGA output is degraded from native 1280x1024 to 1024x768 on startup.
Interesting. I am chasing a spurious TV connection on SDVO that has been present since time immemorial. How certain are you that you've never have a false detection in earlier kernels? It may not have affected the choice of outputs, except sporadically, but it should be recorded in the debug logs with drm.debug=0x6.
Does this make any difference?
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo index ea2f4ab..e7ff378 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -1454,7 +1454,7 @@ intel_sdvo_detect(struct drm_connector *connector, return connector_status_unknown; if (intel_sdvo->is_tv) { /* add 30ms delay when the output type is SDVO-TV */
mdelay(30);
mdelay(100); } if (!intel_sdvo_read_response(intel_sdvo, &response, 2)) return connector_status_unknown;
Or (more likely):
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo index ea2f4ab..77c455b 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -1216,8 +1216,8 @@ static int intel_sdvo_dpms(struct drm_encoder *encoder, in temp = I915_READ(intel_sdvo->sdvo_reg); if ((temp & SDVO_ENABLE) == 0) intel_sdvo_write_sdvox(intel_sdvo, temp | SDVO_ENABLE);
for (i = 0; i < 2; i++)
intel_wait_for_vblank(dev, intel_crtc->pipe);
msleep(100); status = intel_sdvo_get_trained_inputs(intel_sdvo, &input1, &input2);
-- Chris Wilson, Intel Open Source Technology Centre
Hi Chris. Well, I think that I had these problems before, around 2.6.28/2.6.29 but all I remember is that it was fixed relatively fast. Everything worked well untill 2.6.36-rc2 popped up. Not even sporadical events like these. What was strange about this that I wasn't able to kill TV connection with xrandr, so I was stuck with 1024x768 and all of a sudden upon subsequent restarts it somehow remembered that tv is disconnected and VGA resolution is native.
xrandr -q
TV1 disconnected (normal left inverted right x axis y axis) 848x480 (0x55) 14.5MHz h: width 848 start 849 end 912 total 944 skew 0 clock 15.4KHz v: height 480 start 481 end 512 total 513 clock 30.0Hz
cat /var/log/Xorg.0.log | grep TV
[ 27.733] (II) intel(0): Output TV1 has no monitor section [ 27.988] (II) intel(0): EDID for output TV1 [ 27.991] (II) intel(0): Printing probed modes for output TV1 [ 27.991] (II) intel(0): Output TV1 connected [ 27.991] (II) intel(0): Output TV1 using initial mode 1024x768
Above patches didn't help when applied to 2.6.36-rc2.
I'm going to compare dmesg between 2.6.35.3 and 2.6.36-rc2 with drm.debug=0x6. Thanks,
Ivan