diff options
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_suspend.c | 19 |
2 files changed, 13 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index eddabf68e97a..1c8bfb1300d7 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
| @@ -997,8 +997,6 @@ extern unsigned int i915_enable_fbc; | |||
| 997 | 997 | ||
| 998 | extern int i915_suspend(struct drm_device *dev, pm_message_t state); | 998 | extern int i915_suspend(struct drm_device *dev, pm_message_t state); |
| 999 | extern int i915_resume(struct drm_device *dev); | 999 | extern int i915_resume(struct drm_device *dev); |
| 1000 | extern void i915_save_display(struct drm_device *dev); | ||
| 1001 | extern void i915_restore_display(struct drm_device *dev); | ||
| 1002 | extern int i915_master_create(struct drm_device *dev, struct drm_master *master); | 1000 | extern int i915_master_create(struct drm_device *dev, struct drm_master *master); |
| 1003 | extern void i915_master_destroy(struct drm_device *dev, struct drm_master *master); | 1001 | extern void i915_master_destroy(struct drm_device *dev, struct drm_master *master); |
| 1004 | 1002 | ||
diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c index e8152d23d5b6..5257cfc34c35 100644 --- a/drivers/gpu/drm/i915/i915_suspend.c +++ b/drivers/gpu/drm/i915/i915_suspend.c | |||
| @@ -597,7 +597,7 @@ static void i915_restore_modeset_reg(struct drm_device *dev) | |||
| 597 | return; | 597 | return; |
| 598 | } | 598 | } |
| 599 | 599 | ||
| 600 | void i915_save_display(struct drm_device *dev) | 600 | static void i915_save_display(struct drm_device *dev) |
| 601 | { | 601 | { |
| 602 | struct drm_i915_private *dev_priv = dev->dev_private; | 602 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 603 | 603 | ||
| @@ -678,7 +678,6 @@ void i915_save_display(struct drm_device *dev) | |||
| 678 | } | 678 | } |
| 679 | 679 | ||
| 680 | /* VGA state */ | 680 | /* VGA state */ |
| 681 | mutex_lock(&dev->struct_mutex); | ||
| 682 | dev_priv->saveVGA0 = I915_READ(VGA0); | 681 | dev_priv->saveVGA0 = I915_READ(VGA0); |
| 683 | dev_priv->saveVGA1 = I915_READ(VGA1); | 682 | dev_priv->saveVGA1 = I915_READ(VGA1); |
| 684 | dev_priv->saveVGA_PD = I915_READ(VGA_PD); | 683 | dev_priv->saveVGA_PD = I915_READ(VGA_PD); |
| @@ -688,10 +687,9 @@ void i915_save_display(struct drm_device *dev) | |||
| 688 | dev_priv->saveVGACNTRL = I915_READ(VGACNTRL); | 687 | dev_priv->saveVGACNTRL = I915_READ(VGACNTRL); |
| 689 | 688 | ||
| 690 | i915_save_vga(dev); | 689 | i915_save_vga(dev); |
| 691 | mutex_unlock(&dev->struct_mutex); | ||
| 692 | } | 690 | } |
| 693 | 691 | ||
| 694 | void i915_restore_display(struct drm_device *dev) | 692 | static void i915_restore_display(struct drm_device *dev) |
| 695 | { | 693 | { |
| 696 | struct drm_i915_private *dev_priv = dev->dev_private; | 694 | struct drm_i915_private *dev_priv = dev->dev_private; |
| 697 | 695 | ||
| @@ -783,7 +781,6 @@ void i915_restore_display(struct drm_device *dev) | |||
| 783 | else | 781 | else |
| 784 | I915_WRITE(VGACNTRL, dev_priv->saveVGACNTRL); | 782 | I915_WRITE(VGACNTRL, dev_priv->saveVGACNTRL); |
| 785 | 783 | ||
| 786 | mutex_lock(&dev->struct_mutex); | ||
| 787 | I915_WRITE(VGA0, dev_priv->saveVGA0); | 784 | I915_WRITE(VGA0, dev_priv->saveVGA0); |
| 788 | I915_WRITE(VGA1, dev_priv->saveVGA1); | 785 | I915_WRITE(VGA1, dev_priv->saveVGA1); |
| 789 | I915_WRITE(VGA_PD, dev_priv->saveVGA_PD); | 786 | I915_WRITE(VGA_PD, dev_priv->saveVGA_PD); |
| @@ -791,7 +788,6 @@ void i915_restore_display(struct drm_device *dev) | |||
| 791 | udelay(150); | 788 | udelay(150); |
| 792 | 789 | ||
| 793 | i915_restore_vga(dev); | 790 | i915_restore_vga(dev); |
| 794 | mutex_unlock(&dev->struct_mutex); | ||
| 795 | } | 791 | } |
| 796 | 792 | ||
| 797 | int i915_save_state(struct drm_device *dev) | 793 | int i915_save_state(struct drm_device *dev) |
| @@ -801,6 +797,8 @@ int i915_save_state(struct drm_device *dev) | |||
| 801 | 797 | ||
| 802 | pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB); | 798 | pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB); |
| 803 | 799 | ||
| 800 | mutex_lock(&dev->struct_mutex); | ||
| 801 | |||
| 804 | /* Hardware status page */ | 802 | /* Hardware status page */ |
| 805 | dev_priv->saveHWS = I915_READ(HWS_PGA); | 803 | dev_priv->saveHWS = I915_READ(HWS_PGA); |
| 806 | 804 | ||
| @@ -840,6 +838,8 @@ int i915_save_state(struct drm_device *dev) | |||
| 840 | for (i = 0; i < 3; i++) | 838 | for (i = 0; i < 3; i++) |
| 841 | dev_priv->saveSWF2[i] = I915_READ(SWF30 + (i << 2)); | 839 | dev_priv->saveSWF2[i] = I915_READ(SWF30 + (i << 2)); |
| 842 | 840 | ||
| 841 | mutex_unlock(&dev->struct_mutex); | ||
| 842 | |||
| 843 | return 0; | 843 | return 0; |
| 844 | } | 844 | } |
| 845 | 845 | ||
| @@ -850,6 +850,8 @@ int i915_restore_state(struct drm_device *dev) | |||
| 850 | 850 | ||
| 851 | pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB); | 851 | pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB); |
| 852 | 852 | ||
| 853 | mutex_lock(&dev->struct_mutex); | ||
| 854 | |||
| 853 | /* Hardware status page */ | 855 | /* Hardware status page */ |
| 854 | I915_WRITE(HWS_PGA, dev_priv->saveHWS); | 856 | I915_WRITE(HWS_PGA, dev_priv->saveHWS); |
| 855 | 857 | ||
| @@ -867,6 +869,7 @@ int i915_restore_state(struct drm_device *dev) | |||
| 867 | I915_WRITE(IER, dev_priv->saveIER); | 869 | I915_WRITE(IER, dev_priv->saveIER); |
| 868 | I915_WRITE(IMR, dev_priv->saveIMR); | 870 | I915_WRITE(IMR, dev_priv->saveIMR); |
| 869 | } | 871 | } |
| 872 | mutex_unlock(&dev->struct_mutex); | ||
| 870 | 873 | ||
| 871 | intel_init_clock_gating(dev); | 874 | intel_init_clock_gating(dev); |
| 872 | 875 | ||
| @@ -878,6 +881,8 @@ int i915_restore_state(struct drm_device *dev) | |||
| 878 | if (IS_GEN6(dev)) | 881 | if (IS_GEN6(dev)) |
| 879 | gen6_enable_rps(dev_priv); | 882 | gen6_enable_rps(dev_priv); |
| 880 | 883 | ||
| 884 | mutex_lock(&dev->struct_mutex); | ||
| 885 | |||
| 881 | /* Cache mode state */ | 886 | /* Cache mode state */ |
| 882 | I915_WRITE (CACHE_MODE_0, dev_priv->saveCACHE_MODE_0 | 0xffff0000); | 887 | I915_WRITE (CACHE_MODE_0, dev_priv->saveCACHE_MODE_0 | 0xffff0000); |
| 883 | 888 | ||
| @@ -891,6 +896,8 @@ int i915_restore_state(struct drm_device *dev) | |||
| 891 | for (i = 0; i < 3; i++) | 896 | for (i = 0; i < 3; i++) |
| 892 | I915_WRITE(SWF30 + (i << 2), dev_priv->saveSWF2[i]); | 897 | I915_WRITE(SWF30 + (i << 2), dev_priv->saveSWF2[i]); |
| 893 | 898 | ||
| 899 | mutex_unlock(&dev->struct_mutex); | ||
| 900 | |||
| 894 | intel_i2c_reset(dev); | 901 | intel_i2c_reset(dev); |
| 895 | 902 | ||
| 896 | return 0; | 903 | return 0; |
