Skip to content

Commit

Permalink
drm/i915/dp: Wait for PP_CONTROL to take effect.
Browse files Browse the repository at this point in the history
This patch fixes the black screen bug on Dell e6510, by
adding two delays to give the eDP panel time to turn on before we
continue with the next write.

300ms is rather arbitray and a rather long sleep, we need to find a way
of refining this value.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29278
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
  • Loading branch information
Hette Visser authored and Chris Wilson committed Sep 24, 2010
1 parent e61cb0d commit 27d6433
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/gpu/drm/i915/intel_dp.c
Original file line number Diff line number Diff line change
Expand Up @@ -784,6 +784,11 @@ static bool ironlake_edp_panel_on (struct drm_device *dev)
pp |= POWER_TARGET_ON;
I915_WRITE(PCH_PP_CONTROL, pp);

/* Ouch. We need to wait here for some panels, like Dell e6510
* https://bugs.freedesktop.org/show_bug.cgi?id=29278i
*/
msleep(300);

if (wait_for(I915_READ(PCH_PP_STATUS) & PP_ON, 5000))
DRM_ERROR("panel on wait timed out: 0x%08x\n",
I915_READ(PCH_PP_STATUS));
Expand Down Expand Up @@ -819,6 +824,11 @@ static void ironlake_edp_panel_off (struct drm_device *dev)
pp |= PANEL_POWER_RESET; /* restore panel reset bit */
I915_WRITE(PCH_PP_CONTROL, pp);
POSTING_READ(PCH_PP_CONTROL);

/* Ouch. We need to wait here for some panels, like Dell e6510
* https://bugs.freedesktop.org/show_bug.cgi?id=29278i
*/
msleep(300);
}

static void ironlake_edp_panel_vdd_on(struct drm_device *dev)
Expand Down

0 comments on commit 27d6433

Please sign in to comment.