Skip to content

Commit

Permalink
drm/i915: don't wait for vblank while writing InfoFrames
Browse files Browse the repository at this point in the history
This function is called when the pipe is disabled, so it always gets
the 50ms timeout.

This function is called once for each InfoFrame, so we actually get a
100ms timeout. Will be more if we add more InfoFrames.

Also, the spec says we need to "wait for a VSync to ensure completion
of any pending DIP transmissions", not for a VBlank. OTOH, the
register documentation suggests that the DIPs are sent *during* the
VSync, so shouldn't we be waiting until *after* the VSync to ensure
all DIPs are sent?

So this wait_for_vblank seems, besides useless, totally wrong.

If we ever want to change some specific InfoFrame on-the-fly (outside
of the modeset code), the code that changes the InfoFrame will have to
do the waiting itself, and properly.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Paulo Zanoni authored and Daniel Vetter committed May 30, 2012
1 parent 822974a commit 5cde2a6
Showing 1 changed file with 0 additions and 8 deletions.
8 changes: 0 additions & 8 deletions drivers/gpu/drm/i915/intel_hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,6 @@ static void ibx_write_infoframe(struct drm_encoder *encoder,

WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n");

intel_wait_for_vblank(dev, intel_crtc->pipe);

val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */
val |= g4x_infoframe_index(frame);

Expand Down Expand Up @@ -192,8 +190,6 @@ static void cpt_write_infoframe(struct drm_encoder *encoder,

WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n");

intel_wait_for_vblank(dev, intel_crtc->pipe);

val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */
val |= g4x_infoframe_index(frame);

Expand Down Expand Up @@ -229,8 +225,6 @@ static void vlv_write_infoframe(struct drm_encoder *encoder,

WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n");

intel_wait_for_vblank(dev, intel_crtc->pipe);

val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */
val |= g4x_infoframe_index(frame);

Expand Down Expand Up @@ -265,8 +259,6 @@ static void hsw_write_infoframe(struct drm_encoder *encoder,
if (data_reg == 0)
return;

intel_wait_for_vblank(dev, intel_crtc->pipe);

val &= ~hsw_infoframe_enable(frame);
I915_WRITE(ctl_reg, val);

Expand Down

0 comments on commit 5cde2a6

Please sign in to comment.