diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_dma.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index c3cfafcbfe7d..2a6b5de5ae5d 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -1357,13 +1357,12 @@ static void i915_setup_compression(struct drm_device *dev, int size) | |||
1357 | 1357 | ||
1358 | dev_priv->cfb_size = size; | 1358 | dev_priv->cfb_size = size; |
1359 | 1359 | ||
1360 | intel_disable_fbc(dev); | ||
1360 | dev_priv->compressed_fb = compressed_fb; | 1361 | dev_priv->compressed_fb = compressed_fb; |
1361 | 1362 | ||
1362 | if (IS_GM45(dev)) { | 1363 | if (IS_GM45(dev)) { |
1363 | g4x_disable_fbc(dev); | ||
1364 | I915_WRITE(DPFC_CB_BASE, compressed_fb->start); | 1364 | I915_WRITE(DPFC_CB_BASE, compressed_fb->start); |
1365 | } else { | 1365 | } else { |
1366 | i8xx_disable_fbc(dev); | ||
1367 | I915_WRITE(FBC_CFB_BASE, cfb_base); | 1366 | I915_WRITE(FBC_CFB_BASE, cfb_base); |
1368 | I915_WRITE(FBC_LL_BASE, ll_base); | 1367 | I915_WRITE(FBC_LL_BASE, ll_base); |
1369 | dev_priv->compressed_llb = compressed_llb; | 1368 | dev_priv->compressed_llb = compressed_llb; |
@@ -1504,8 +1503,8 @@ static int i915_load_modeset_init(struct drm_device *dev, | |||
1504 | 1503 | ||
1505 | I915_WRITE(INSTPM, (1 << 5) | (1 << 21)); | 1504 | I915_WRITE(INSTPM, (1 << 5) | (1 << 21)); |
1506 | 1505 | ||
1507 | drm_helper_initial_config(dev); | 1506 | intel_fbdev_init(dev); |
1508 | 1507 | drm_kms_helper_poll_init(dev); | |
1509 | return 0; | 1508 | return 0; |
1510 | 1509 | ||
1511 | destroy_ringbuffer: | 1510 | destroy_ringbuffer: |
@@ -1591,7 +1590,7 @@ static void i915_get_mem_freq(struct drm_device *dev) | |||
1591 | */ | 1590 | */ |
1592 | int i915_driver_load(struct drm_device *dev, unsigned long flags) | 1591 | int i915_driver_load(struct drm_device *dev, unsigned long flags) |
1593 | { | 1592 | { |
1594 | struct drm_i915_private *dev_priv = dev->dev_private; | 1593 | struct drm_i915_private *dev_priv; |
1595 | resource_size_t base, size; | 1594 | resource_size_t base, size; |
1596 | int ret = 0, mmio_bar; | 1595 | int ret = 0, mmio_bar; |
1597 | uint32_t agp_size, prealloc_size, prealloc_start; | 1596 | uint32_t agp_size, prealloc_size, prealloc_start; |
@@ -1723,6 +1722,8 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) | |||
1723 | /* Start out suspended */ | 1722 | /* Start out suspended */ |
1724 | dev_priv->mm.suspended = 1; | 1723 | dev_priv->mm.suspended = 1; |
1725 | 1724 | ||
1725 | intel_detect_pch(dev); | ||
1726 | |||
1726 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { | 1727 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { |
1727 | ret = i915_load_modeset_init(dev, prealloc_start, | 1728 | ret = i915_load_modeset_init(dev, prealloc_start, |
1728 | prealloc_size, agp_size); | 1729 | prealloc_size, agp_size); |
@@ -1769,6 +1770,8 @@ int i915_driver_unload(struct drm_device *dev) | |||
1769 | } | 1770 | } |
1770 | 1771 | ||
1771 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { | 1772 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { |
1773 | intel_modeset_cleanup(dev); | ||
1774 | |||
1772 | /* | 1775 | /* |
1773 | * free the memory space allocated for the child device | 1776 | * free the memory space allocated for the child device |
1774 | * config parsed from VBT | 1777 | * config parsed from VBT |
@@ -1792,8 +1795,6 @@ int i915_driver_unload(struct drm_device *dev) | |||
1792 | intel_opregion_free(dev, 0); | 1795 | intel_opregion_free(dev, 0); |
1793 | 1796 | ||
1794 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { | 1797 | if (drm_core_check_feature(dev, DRIVER_MODESET)) { |
1795 | intel_modeset_cleanup(dev); | ||
1796 | |||
1797 | i915_gem_free_all_phys_object(dev); | 1798 | i915_gem_free_all_phys_object(dev); |
1798 | 1799 | ||
1799 | mutex_lock(&dev->struct_mutex); | 1800 | mutex_lock(&dev->struct_mutex); |