diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-01-10 07:06:45 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-01-10 12:03:17 -0500 |
commit | dc9e7decf13d49ff80fa690455ad89379b6b01aa (patch) | |
tree | 872d94174fa055fa860d816826ee4aecdf2920d4 | |
parent | 669ab5aaeb3bedaae758c938d0efafe8aad07ed0 (diff) |
drm/i915: No panel fitter on 830M or non-mobile gen2/3 platforms
PFIT_CONTROL doesn't exist on 830M, so avoid reading it in
i9xx_get_pfit_config().
Also assume that only mobile gen2/3 chipsets have a panel fitter. This
matches the documentation, but I didn't have real hardware to verify.
Gen4 docmentation is a bit inconsistent, but experimenetation on my
LPT machine suggests that the panel fitter is available on non-mobile
gen4 platforms. At least on this machine panel fitter appears works
just fine even on VGA output.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_overlay.c | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index fe2d71a1c39e..db1e0a4eb359 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -5439,6 +5439,9 @@ static void i9xx_get_pfit_config(struct intel_crtc *crtc, | |||
5439 | struct drm_i915_private *dev_priv = dev->dev_private; | 5439 | struct drm_i915_private *dev_priv = dev->dev_private; |
5440 | uint32_t tmp; | 5440 | uint32_t tmp; |
5441 | 5441 | ||
5442 | if (INTEL_INFO(dev)->gen <= 3 && (IS_I830(dev) || !IS_MOBILE(dev))) | ||
5443 | return; | ||
5444 | |||
5442 | tmp = I915_READ(PFIT_CONTROL); | 5445 | tmp = I915_READ(PFIT_CONTROL); |
5443 | if (!(tmp & PFIT_ENABLE)) | 5446 | if (!(tmp & PFIT_ENABLE)) |
5444 | return; | 5447 | return; |
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c index a98a990fbab3..a759ecdb7a6e 100644 --- a/drivers/gpu/drm/i915/intel_overlay.c +++ b/drivers/gpu/drm/i915/intel_overlay.c | |||
@@ -1005,7 +1005,7 @@ static int intel_panel_fitter_pipe(struct drm_device *dev) | |||
1005 | u32 pfit_control; | 1005 | u32 pfit_control; |
1006 | 1006 | ||
1007 | /* i830 doesn't have a panel fitter */ | 1007 | /* i830 doesn't have a panel fitter */ |
1008 | if (IS_I830(dev)) | 1008 | if (INTEL_INFO(dev)->gen <= 3 && (IS_I830(dev) || !IS_MOBILE(dev))) |
1009 | return -1; | 1009 | return -1; |
1010 | 1010 | ||
1011 | pfit_control = I915_READ(PFIT_CONTROL); | 1011 | pfit_control = I915_READ(PFIT_CONTROL); |