diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 5 |
4 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 183eaac8980a..51c2257b11e6 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
| @@ -1065,6 +1065,9 @@ static int i915_fbc_status(struct seq_file *m, void *unused) | |||
| 1065 | case FBC_MULTIPLE_PIPES: | 1065 | case FBC_MULTIPLE_PIPES: |
| 1066 | seq_printf(m, "multiple pipes are enabled"); | 1066 | seq_printf(m, "multiple pipes are enabled"); |
| 1067 | break; | 1067 | break; |
| 1068 | case FBC_MODULE_PARAM: | ||
| 1069 | seq_printf(m, "disabled per module param (default off)"); | ||
| 1070 | break; | ||
| 1068 | default: | 1071 | default: |
| 1069 | seq_printf(m, "unknown reason"); | 1072 | seq_printf(m, "unknown reason"); |
| 1070 | } | 1073 | } |
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 8c4fcbb8a4cb..4c9e92f8abc2 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
| @@ -55,6 +55,9 @@ module_param_named(semaphores, i915_semaphores, int, 0600); | |||
| 55 | unsigned int i915_enable_rc6 = 0; | 55 | unsigned int i915_enable_rc6 = 0; |
| 56 | module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600); | 56 | module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600); |
| 57 | 57 | ||
| 58 | unsigned int i915_enable_fbc = 0; | ||
| 59 | module_param_named(i915_enable_fbc, i915_enable_fbc, int, 0600); | ||
| 60 | |||
| 58 | unsigned int i915_lvds_downclock = 0; | 61 | unsigned int i915_lvds_downclock = 0; |
| 59 | module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); | 62 | module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); |
| 60 | 63 | ||
| @@ -169,7 +172,7 @@ static const struct intel_device_info intel_ironlake_d_info = { | |||
| 169 | static const struct intel_device_info intel_ironlake_m_info = { | 172 | static const struct intel_device_info intel_ironlake_m_info = { |
| 170 | .gen = 5, .is_mobile = 1, | 173 | .gen = 5, .is_mobile = 1, |
| 171 | .need_gfx_hws = 1, .has_hotplug = 1, | 174 | .need_gfx_hws = 1, .has_hotplug = 1, |
| 172 | .has_fbc = 0, /* disabled due to buggy hardware */ | 175 | .has_fbc = 1, |
| 173 | .has_bsd_ring = 1, | 176 | .has_bsd_ring = 1, |
| 174 | }; | 177 | }; |
| 175 | 178 | ||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 3a1c27718065..ee660355ae68 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -250,6 +250,7 @@ enum no_fbc_reason { | |||
| 250 | FBC_BAD_PLANE, /* fbc not supported on plane */ | 250 | FBC_BAD_PLANE, /* fbc not supported on plane */ |
| 251 | FBC_NOT_TILED, /* buffer not tiled */ | 251 | FBC_NOT_TILED, /* buffer not tiled */ |
| 252 | FBC_MULTIPLE_PIPES, /* more than one pipe active */ | 252 | FBC_MULTIPLE_PIPES, /* more than one pipe active */ |
| 253 | FBC_MODULE_PARAM, | ||
| 253 | }; | 254 | }; |
| 254 | 255 | ||
| 255 | enum intel_pch { | 256 | enum intel_pch { |
| @@ -995,6 +996,7 @@ extern unsigned int i915_lvds_downclock; | |||
| 995 | extern unsigned int i915_panel_use_ssc; | 996 | extern unsigned int i915_panel_use_ssc; |
| 996 | extern int i915_vbt_sdvo_panel_type; | 997 | extern int i915_vbt_sdvo_panel_type; |
| 997 | extern unsigned int i915_enable_rc6; | 998 | extern unsigned int i915_enable_rc6; |
| 999 | extern unsigned int i915_enable_fbc; | ||
| 998 | 1000 | ||
| 999 | extern int i915_suspend(struct drm_device *dev, pm_message_t state); | 1001 | extern int i915_suspend(struct drm_device *dev, pm_message_t state); |
| 1000 | extern int i915_resume(struct drm_device *dev); | 1002 | extern int i915_resume(struct drm_device *dev); |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 5ec74df2627e..81ad654f3544 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -1731,6 +1731,11 @@ static void intel_update_fbc(struct drm_device *dev) | |||
| 1731 | intel_fb = to_intel_framebuffer(fb); | 1731 | intel_fb = to_intel_framebuffer(fb); |
| 1732 | obj = intel_fb->obj; | 1732 | obj = intel_fb->obj; |
| 1733 | 1733 | ||
| 1734 | if (!i915_enable_fbc) { | ||
| 1735 | DRM_DEBUG_KMS("fbc disabled per module param (default off)\n"); | ||
| 1736 | dev_priv->no_fbc_reason = FBC_MODULE_PARAM; | ||
| 1737 | goto out_disable; | ||
| 1738 | } | ||
| 1734 | if (intel_fb->obj->base.size > dev_priv->cfb_size) { | 1739 | if (intel_fb->obj->base.size > dev_priv->cfb_size) { |
| 1735 | DRM_DEBUG_KMS("framebuffer too large, disabling " | 1740 | DRM_DEBUG_KMS("framebuffer too large, disabling " |
| 1736 | "compression\n"); | 1741 | "compression\n"); |
