aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2009-09-19 02:54:09 -0400
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-09-17 17:31:10 -0400
commit8dd81a381e8886129c0923f1fe22ff5ca36ae8da (patch)
tree6b0616a3e01f13789aaaf077585c6b3a82149603 /drivers/gpu/drm/i915/intel_display.c
parent730915d65f9e763de9dc26c5f1b8abaae775b243 (diff)
drm/i915: Fix LVDS panel fitting on Arrandale
Arrandale has new window based method for panel fitting. This one enables full screen aspect scaling on LVDS. It fixes standard mode display failure on LVDS for Arrandale. Cc: Stable Team <stable@kernel.org> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index d2f3692be8eb..42cd68da74ab 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1391,6 +1391,7 @@ static void igdng_crtc_dpms(struct drm_crtc *crtc, int mode)
1391 int transconf_reg = (pipe == 0) ? TRANSACONF : TRANSBCONF; 1391 int transconf_reg = (pipe == 0) ? TRANSACONF : TRANSBCONF;
1392 int pf_ctl_reg = (pipe == 0) ? PFA_CTL_1 : PFB_CTL_1; 1392 int pf_ctl_reg = (pipe == 0) ? PFA_CTL_1 : PFB_CTL_1;
1393 int pf_win_size = (pipe == 0) ? PFA_WIN_SZ : PFB_WIN_SZ; 1393 int pf_win_size = (pipe == 0) ? PFA_WIN_SZ : PFB_WIN_SZ;
1394 int pf_win_pos = (pipe == 0) ? PFA_WIN_POS : PFB_WIN_POS;
1394 int cpu_htot_reg = (pipe == 0) ? HTOTAL_A : HTOTAL_B; 1395 int cpu_htot_reg = (pipe == 0) ? HTOTAL_A : HTOTAL_B;
1395 int cpu_hblank_reg = (pipe == 0) ? HBLANK_A : HBLANK_B; 1396 int cpu_hblank_reg = (pipe == 0) ? HBLANK_A : HBLANK_B;
1396 int cpu_hsync_reg = (pipe == 0) ? HSYNC_A : HSYNC_B; 1397 int cpu_hsync_reg = (pipe == 0) ? HSYNC_A : HSYNC_B;
@@ -1442,6 +1443,19 @@ static void igdng_crtc_dpms(struct drm_crtc *crtc, int mode)
1442 } 1443 }
1443 } 1444 }
1444 1445
1446 /* Enable panel fitting for LVDS */
1447 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
1448 temp = I915_READ(pf_ctl_reg);
1449 I915_WRITE(pf_ctl_reg, temp | PF_ENABLE);
1450
1451 /* currently full aspect */
1452 I915_WRITE(pf_win_pos, 0);
1453
1454 I915_WRITE(pf_win_size,
1455 (dev_priv->panel_fixed_mode->hdisplay << 16) |
1456 (dev_priv->panel_fixed_mode->vdisplay));
1457 }
1458
1445 /* Enable CPU pipe */ 1459 /* Enable CPU pipe */
1446 temp = I915_READ(pipeconf_reg); 1460 temp = I915_READ(pipeconf_reg);
1447 if ((temp & PIPEACONF_ENABLE) == 0) { 1461 if ((temp & PIPEACONF_ENABLE) == 0) {