This kernel patch fixes it for me. I'm working with the maintainers upstream to get it merged
--- intel_tv.c.orig 2012-05-19 16:32:21.000000000 +1000 +++ intel_tv.c 2012-05-19 16:33:23.000000000 +1000 @@ -1186,6 +1186,9 @@ intel_tv_detect_type(struct intel_tv *in I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); I915_WRITE(TV_CTL, save_tv_ctl);
+ intel_wait_for_vblank(intel_tv->base.base.dev, + to_intel_crtc(intel_tv->base.base.crtc)->pipe); + /* Restore interrupt config */ if (connector->polled & DRM_CONNECTOR_POLL_HPD) { spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
This kernel patch fixes it for me. I'm working with the maintainers upstream to get it merged
--- intel_tv.c.orig 2012-05-19 16:32:21.000000000 +1000 detect_ type(struct intel_tv *in WRITE(TV_ DAC, save_tv_dac & ~TVDAC_ STATE_CHG_ EN); WRITE(TV_ CTL, save_tv_ctl);
+++ intel_tv.c 2012-05-19 16:33:23.000000000 +1000
@@ -1186,6 +1186,9 @@ intel_tv_
I915_
I915_
+ intel_wait_ for_vblank( intel_tv- >base.base. dev, crtc(intel_ tv->base. base.crtc) ->pipe) ; POLL_HPD) { lock_irqsave( &dev_priv- >irq_lock, irqflags);
+ to_intel_
+
/* Restore interrupt config */
if (connector->polled & DRM_CONNECTOR_
spin_