diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-08-17 09:56:50 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-08-17 09:56:50 -0700 |
| commit | 1e5fc21703adb4343626c7585ccd3592b965bc19 (patch) | |
| tree | 2d1dd3367b6e834dda76a6a14ec19bf39019598b | |
| parent | 4b2ab6e679a9e64503afe074d36a06cba0b99ff1 (diff) | |
| download | patches-1e5fc21703adb4343626c7585ccd3592b965bc19.tar.gz | |
graphics is now fixed
| -rw-r--r-- | 770c12312ad617172b1a65b911d3e6564fc5aca8.patch | 57 | ||||
| -rw-r--r-- | fix_greg_graphics.patch | 146 | ||||
| -rw-r--r-- | series | 2 |
3 files changed, 0 insertions, 205 deletions
diff --git a/770c12312ad617172b1a65b911d3e6564fc5aca8.patch b/770c12312ad617172b1a65b911d3e6564fc5aca8.patch deleted file mode 100644 index 76a63f9a63f248..00000000000000 --- a/770c12312ad617172b1a65b911d3e6564fc5aca8.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 770c12312ad617172b1a65b911d3e6564fc5aca8 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai <tiwai@suse.de> -Date: Sat, 11 Aug 2012 06:56:42 +0000 -Subject: drm/i915: Fix blank panel at reopening lid - -When you reopen the lid on a laptop with PCH, the panel suddenly goes -blank sometimes. It seems because BLC_PWM_CPU_CTL register is cleared -to zero when BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1 registers are -enabled. - -This patch fixes the problem by moving the call of the function setting -BLC_PWM_CPU_CTL after enabling other two registers. - -Reported-and-tested-by: Hugh Dickins <hughd@google.com> -Signed-off-by: Takashi Iwai <tiwai@suse.de> -Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> ---- -diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c -index 9474488..3df4f5f 100644 ---- a/drivers/gpu/drm/i915/intel_panel.c -+++ b/drivers/gpu/drm/i915/intel_panel.c -@@ -311,9 +311,6 @@ void intel_panel_enable_backlight(struct drm_device *dev, - if (dev_priv->backlight_level == 0) - dev_priv->backlight_level = intel_panel_get_max_backlight(dev); - -- dev_priv->backlight_enabled = true; -- intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); -- - if (INTEL_INFO(dev)->gen >= 4) { - uint32_t reg, tmp; - -@@ -326,7 +323,7 @@ void intel_panel_enable_backlight(struct drm_device *dev, - * we don't track the backlight dpms state, hence check whether - * we have to do anything first. */ - if (tmp & BLM_PWM_ENABLE) -- return; -+ goto set_level; - - if (dev_priv->num_pipe == 3) - tmp &= ~BLM_PIPE_SELECT_IVB; -@@ -347,6 +344,14 @@ void intel_panel_enable_backlight(struct drm_device *dev, - I915_WRITE(BLC_PWM_PCH_CTL1, tmp); - } - } -+ -+set_level: -+ /* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1. -+ * BLC_PWM_CPU_CTL may be cleared to zero automatically when these -+ * registers are set. -+ */ -+ dev_priv->backlight_enabled = true; -+ intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); - } - - static void intel_panel_init_backlight(struct drm_device *dev) --- -cgit v0.9.0.2-2-gbebe diff --git a/fix_greg_graphics.patch b/fix_greg_graphics.patch deleted file mode 100644 index 074a48c8c13909..00000000000000 --- a/fix_greg_graphics.patch +++ /dev/null @@ -1,146 +0,0 @@ ---- - drivers/gpu/drm/i915/intel_drv.h | 3 -- - drivers/gpu/drm/i915/intel_lvds.c | 32 ++++++++++++++++++----- - drivers/gpu/drm/i915/intel_panel.c | 51 ------------------------------------- - 3 files changed, 28 insertions(+), 58 deletions(-) - ---- a/drivers/gpu/drm/i915/intel_drv.h -+++ b/drivers/gpu/drm/i915/intel_drv.h -@@ -383,8 +383,7 @@ extern u32 intel_panel_get_max_backlight - extern u32 intel_panel_get_backlight(struct drm_device *dev); - extern void intel_panel_set_backlight(struct drm_device *dev, u32 level); - extern int intel_panel_setup_backlight(struct drm_device *dev); --extern void intel_panel_enable_backlight(struct drm_device *dev, -- enum pipe pipe); -+extern void intel_panel_enable_backlight(struct drm_device *dev); - extern void intel_panel_disable_backlight(struct drm_device *dev); - extern void intel_panel_destroy_backlight(struct drm_device *dev); - extern enum drm_connector_status intel_panel_detect(struct drm_device *dev); ---- a/drivers/gpu/drm/i915/intel_lvds.c -+++ b/drivers/gpu/drm/i915/intel_lvds.c -@@ -71,7 +71,6 @@ static struct intel_lvds *intel_attached - static void intel_lvds_enable(struct intel_lvds *intel_lvds) - { - struct drm_device *dev = intel_lvds->base.base.dev; -- struct intel_crtc *intel_crtc = to_intel_crtc(intel_lvds->base.base.crtc); - struct drm_i915_private *dev_priv = dev->dev_private; - u32 ctl_reg, lvds_reg, stat_reg; - -@@ -108,7 +107,7 @@ static void intel_lvds_enable(struct int - if (wait_for((I915_READ(stat_reg) & PP_ON) != 0, 1000)) - DRM_ERROR("timed out waiting for panel to power on\n"); - -- intel_panel_enable_backlight(dev, intel_crtc->pipe); -+ intel_panel_enable_backlight(dev); - } - - static void intel_lvds_disable(struct intel_lvds *intel_lvds) -@@ -1079,14 +1078,35 @@ bool intel_lvds_init(struct drm_device * - goto failed; - - out: -- /* -- * Unlock registers and just -- * leave them unlocked -- */ - if (HAS_PCH_SPLIT(dev)) { -+ u32 pwm; -+ -+ pipe = (I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT) ? 1 : 0; -+ -+ /* make sure PWM is enabled and locked to the LVDS pipe */ -+ pwm = I915_READ(BLC_PWM_CPU_CTL2); -+ if (pipe == 0 && (pwm & BLM_PIPE_B)) -+ I915_WRITE(BLC_PWM_CPU_CTL2, pwm & ~BLM_PWM_ENABLE); -+ if (pipe) -+ pwm |= BLM_PIPE_B; -+ else -+ pwm &= ~BLM_PIPE_B; -+ I915_WRITE(BLC_PWM_CPU_CTL2, pwm | BLM_PWM_ENABLE); -+ -+ pwm = I915_READ(BLC_PWM_PCH_CTL1); -+ pwm |= BLM_PCH_PWM_ENABLE; -+ I915_WRITE(BLC_PWM_PCH_CTL1, pwm); -+ /* -+ * Unlock registers and just -+ * leave them unlocked -+ */ - I915_WRITE(PCH_PP_CONTROL, - I915_READ(PCH_PP_CONTROL) | PANEL_UNLOCK_REGS); - } else { -+ /* -+ * Unlock registers and just -+ * leave them unlocked -+ */ - I915_WRITE(PP_CONTROL, - I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS); - } ---- a/drivers/gpu/drm/i915/intel_panel.c -+++ b/drivers/gpu/drm/i915/intel_panel.c -@@ -287,24 +287,9 @@ void intel_panel_disable_backlight(struc - - dev_priv->backlight_enabled = false; - intel_panel_actually_set_backlight(dev, 0); -- -- if (INTEL_INFO(dev)->gen >= 4) { -- uint32_t reg, tmp; -- -- reg = HAS_PCH_SPLIT(dev) ? BLC_PWM_CPU_CTL2 : BLC_PWM_CTL2; -- -- I915_WRITE(reg, I915_READ(reg) & ~BLM_PWM_ENABLE); -- -- if (HAS_PCH_SPLIT(dev)) { -- tmp = I915_READ(BLC_PWM_PCH_CTL1); -- tmp &= ~BLM_PCH_PWM_ENABLE; -- I915_WRITE(BLC_PWM_PCH_CTL1, tmp); -- } -- } - } - --void intel_panel_enable_backlight(struct drm_device *dev, -- enum pipe pipe) -+void intel_panel_enable_backlight(struct drm_device *dev) - { - struct drm_i915_private *dev_priv = dev->dev_private; - -@@ -313,40 +298,6 @@ void intel_panel_enable_backlight(struct - - dev_priv->backlight_enabled = true; - intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); -- -- if (INTEL_INFO(dev)->gen >= 4) { -- uint32_t reg, tmp; -- -- reg = HAS_PCH_SPLIT(dev) ? BLC_PWM_CPU_CTL2 : BLC_PWM_CTL2; -- -- -- tmp = I915_READ(reg); -- -- /* Note that this can also get called through dpms changes. And -- * we don't track the backlight dpms state, hence check whether -- * we have to do anything first. */ -- if (tmp & BLM_PWM_ENABLE) -- return; -- -- if (dev_priv->num_pipe == 3) -- tmp &= ~BLM_PIPE_SELECT_IVB; -- else -- tmp &= ~BLM_PIPE_SELECT; -- -- tmp |= BLM_PIPE(pipe); -- tmp &= ~BLM_PWM_ENABLE; -- -- I915_WRITE(reg, tmp); -- POSTING_READ(reg); -- I915_WRITE(reg, tmp | BLM_PWM_ENABLE); -- -- if (HAS_PCH_SPLIT(dev)) { -- tmp = I915_READ(BLC_PWM_PCH_CTL1); -- tmp |= BLM_PCH_PWM_ENABLE; -- tmp &= ~BLM_PCH_OVERRIDE_ENABLE; -- I915_WRITE(BLC_PWM_PCH_CTL1, tmp); -- } -- } - } - - static void intel_panel_init_backlight(struct drm_device *dev) @@ -1,6 +1,4 @@ # My specific stuff, at the top to make it easier to work stuff below. -770c12312ad617172b1a65b911d3e6564fc5aca8.patch -fix_greg_graphics.patch time-don-t-inline-export_symbol-functions.patch gregkh/gkh-version.patch |
