* [PATCH] drm/i915: Wait for vblank before enabling the TV encoder
@ 2014-09-08 14:43 ville.syrjala
2014-09-08 15:18 ` [Intel-gfx] " Jani Nikula
0 siblings, 1 reply; 2+ messages in thread
From: ville.syrjala @ 2014-09-08 14:43 UTC (permalink / raw)
To: intel-gfx; +Cc: stable, Alan Bartlett
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The vblank waits in intel_tv_detect_type() are timing out for some
reason. This is a regression caused removing seemingly useless vblank
waits from the modeset seqeuence in:
commit 56ef52cad5e37fca89638e4bad598a994ecc3d9f
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date: Thu May 8 19:23:15 2014 +0300
drm/i915: Kill vblank waits after pipe enable on gmch platforms
So it turns out they weren't all entirely useless. Apparently the pipe
has to go through one full frame before we enable the TV port. Add a
vblank wait to intel_enable_tv() to make sure that happens.
Another approach was attempted by placing the vblank wait just after
enabling the port. The theory behind that attempt was that we need to
let the port stay enabled for one full frame before disabling it again
during load detection. But that didn't work, and we definitely must
have the vblank wait before enabling the port.
Cc: stable@vger.kernel.org
Cc: Alan Bartlett <ajb@elrepo.org>
Tested-by: Alan Bartlett <ajb@elrepo.org>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=79311
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_tv.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index c69d3ce..c14341c 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -854,6 +854,10 @@ intel_enable_tv(struct intel_encoder *encoder)
struct drm_device *dev = encoder->base.dev;
struct drm_i915_private *dev_priv = dev->dev_private;
+ /* Prevents vblank waits from timing out in intel_tv_detect_type() */
+ intel_wait_for_vblank(encoder->base.dev,
+ to_intel_crtc(encoder->base.crtc)->pipe);
+
I915_WRITE(TV_CTL, I915_READ(TV_CTL) | TV_ENC_ENABLE);
}
--
1.8.5.5
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [Intel-gfx] [PATCH] drm/i915: Wait for vblank before enabling the TV encoder
2014-09-08 14:43 [PATCH] drm/i915: Wait for vblank before enabling the TV encoder ville.syrjala
@ 2014-09-08 15:18 ` Jani Nikula
0 siblings, 0 replies; 2+ messages in thread
From: Jani Nikula @ 2014-09-08 15:18 UTC (permalink / raw)
To: ville.syrjala, intel-gfx; +Cc: Alan Bartlett, stable
On Mon, 08 Sep 2014, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The vblank waits in intel_tv_detect_type() are timing out for some
> reason. This is a regression caused removing seemingly useless vblank
> waits from the modeset seqeuence in:
>
> commit 56ef52cad5e37fca89638e4bad598a994ecc3d9f
> Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Date: Thu May 8 19:23:15 2014 +0300
>
> drm/i915: Kill vblank waits after pipe enable on gmch platforms
>
> So it turns out they weren't all entirely useless. Apparently the pipe
> has to go through one full frame before we enable the TV port. Add a
> vblank wait to intel_enable_tv() to make sure that happens.
>
> Another approach was attempted by placing the vblank wait just after
> enabling the port. The theory behind that attempt was that we need to
> let the port stay enabled for one full frame before disabling it again
> during load detection. But that didn't work, and we definitely must
> have the vblank wait before enabling the port.
>
> Cc: stable@vger.kernel.org
> Cc: Alan Bartlett <ajb@elrepo.org>
> Tested-by: Alan Bartlett <ajb@elrepo.org>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=79311
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Pushed to drm-intel-fixes with Daniel's IRC r-b. Thanks for the patch
and review.
BR,
Jani.
> ---
> drivers/gpu/drm/i915/intel_tv.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
> index c69d3ce..c14341c 100644
> --- a/drivers/gpu/drm/i915/intel_tv.c
> +++ b/drivers/gpu/drm/i915/intel_tv.c
> @@ -854,6 +854,10 @@ intel_enable_tv(struct intel_encoder *encoder)
> struct drm_device *dev = encoder->base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
>
> + /* Prevents vblank waits from timing out in intel_tv_detect_type() */
> + intel_wait_for_vblank(encoder->base.dev,
> + to_intel_crtc(encoder->base.crtc)->pipe);
> +
> I915_WRITE(TV_CTL, I915_READ(TV_CTL) | TV_ENC_ENABLE);
> }
>
> --
> 1.8.5.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-09-08 15:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-08 14:43 [PATCH] drm/i915: Wait for vblank before enabling the TV encoder ville.syrjala
2014-09-08 15:18 ` [Intel-gfx] " Jani Nikula
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox