]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/intel_uncore.c
Merge remote-tracking branch 'drm-intel/for-linux-next'
[karo-tx-linux.git] / drivers / gpu / drm / i915 / intel_uncore.c
index 27fe2df47d73d3571f7e294d778794b89f00b657..cd0d6e2ae0e2c5649179e2205976fb885a270541 100644 (file)
@@ -978,7 +978,6 @@ static int i965_do_reset(struct drm_device *dev)
        if (ret)
                return ret;
 
-       /* We can't reset render&media without also resetting display ... */
        pci_write_config_byte(dev->pdev, I965_GDRST,
                              GRDOM_MEDIA | GRDOM_RESET_ENABLE);
 
@@ -994,23 +993,25 @@ static int i965_do_reset(struct drm_device *dev)
 static int ironlake_do_reset(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
-       u32 gdrst;
        int ret;
 
-       gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR);
-       gdrst &= ~GRDOM_MASK;
        I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR,
-                  gdrst | GRDOM_RENDER | GRDOM_RESET_ENABLE);
-       ret = wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500);
+                  ILK_GRDOM_RENDER | ILK_GRDOM_RESET_ENABLE);
+       ret = wait_for((I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) &
+                       ILK_GRDOM_RESET_ENABLE) == 0, 500);
        if (ret)
                return ret;
 
-       /* We can't reset render&media without also resetting display ... */
-       gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR);
-       gdrst &= ~GRDOM_MASK;
        I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR,
-                  gdrst | GRDOM_MEDIA | GRDOM_RESET_ENABLE);
-       return wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500);
+                  ILK_GRDOM_MEDIA | ILK_GRDOM_RESET_ENABLE);
+       ret = wait_for((I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) &
+                       ILK_GRDOM_RESET_ENABLE) == 0, 500);
+       if (ret)
+               return ret;
+
+       I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, 0);
+
+       return 0;
 }
 
 static int gen6_do_reset(struct drm_device *dev)