diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drv.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_drv.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c index 1de974acbc65..c6079e36669d 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drv.c +++ b/drivers/gpu/drm/nouveau/nouveau_drv.c | |||
@@ -153,7 +153,6 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state) | |||
153 | struct nouveau_fifo_engine *pfifo = &dev_priv->engine.fifo; | 153 | struct nouveau_fifo_engine *pfifo = &dev_priv->engine.fifo; |
154 | struct nouveau_channel *chan; | 154 | struct nouveau_channel *chan; |
155 | struct drm_crtc *crtc; | 155 | struct drm_crtc *crtc; |
156 | uint32_t fbdev_flags; | ||
157 | int ret, i; | 156 | int ret, i; |
158 | 157 | ||
159 | if (!drm_core_check_feature(dev, DRIVER_MODESET)) | 158 | if (!drm_core_check_feature(dev, DRIVER_MODESET)) |
@@ -163,8 +162,7 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state) | |||
163 | return 0; | 162 | return 0; |
164 | 163 | ||
165 | NV_INFO(dev, "Disabling fbcon acceleration...\n"); | 164 | NV_INFO(dev, "Disabling fbcon acceleration...\n"); |
166 | fbdev_flags = dev_priv->fbdev_info->flags; | 165 | nouveau_fbcon_save_disable_accel(dev); |
167 | dev_priv->fbdev_info->flags |= FBINFO_HWACCEL_DISABLED; | ||
168 | 166 | ||
169 | NV_INFO(dev, "Unpinning framebuffer(s)...\n"); | 167 | NV_INFO(dev, "Unpinning framebuffer(s)...\n"); |
170 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { | 168 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { |
@@ -230,9 +228,9 @@ nouveau_pci_suspend(struct pci_dev *pdev, pm_message_t pm_state) | |||
230 | } | 228 | } |
231 | 229 | ||
232 | acquire_console_sem(); | 230 | acquire_console_sem(); |
233 | fb_set_suspend(dev_priv->fbdev_info, 1); | 231 | nouveau_fbcon_set_suspend(dev, 1); |
234 | release_console_sem(); | 232 | release_console_sem(); |
235 | dev_priv->fbdev_info->flags = fbdev_flags; | 233 | nouveau_fbcon_restore_accel(dev); |
236 | return 0; | 234 | return 0; |
237 | 235 | ||
238 | out_abort: | 236 | out_abort: |
@@ -250,14 +248,12 @@ nouveau_pci_resume(struct pci_dev *pdev) | |||
250 | struct drm_nouveau_private *dev_priv = dev->dev_private; | 248 | struct drm_nouveau_private *dev_priv = dev->dev_private; |
251 | struct nouveau_engine *engine = &dev_priv->engine; | 249 | struct nouveau_engine *engine = &dev_priv->engine; |
252 | struct drm_crtc *crtc; | 250 | struct drm_crtc *crtc; |
253 | uint32_t fbdev_flags; | ||
254 | int ret, i; | 251 | int ret, i; |
255 | 252 | ||
256 | if (!drm_core_check_feature(dev, DRIVER_MODESET)) | 253 | if (!drm_core_check_feature(dev, DRIVER_MODESET)) |
257 | return -ENODEV; | 254 | return -ENODEV; |
258 | 255 | ||
259 | fbdev_flags = dev_priv->fbdev_info->flags; | 256 | nouveau_fbcon_save_disable_accel(dev); |
260 | dev_priv->fbdev_info->flags |= FBINFO_HWACCEL_DISABLED; | ||
261 | 257 | ||
262 | NV_INFO(dev, "We're back, enabling device...\n"); | 258 | NV_INFO(dev, "We're back, enabling device...\n"); |
263 | pci_set_power_state(pdev, PCI_D0); | 259 | pci_set_power_state(pdev, PCI_D0); |
@@ -332,13 +328,14 @@ nouveau_pci_resume(struct pci_dev *pdev) | |||
332 | } | 328 | } |
333 | 329 | ||
334 | acquire_console_sem(); | 330 | acquire_console_sem(); |
335 | fb_set_suspend(dev_priv->fbdev_info, 0); | 331 | nouveau_fbcon_set_suspend(dev, 0); |
336 | release_console_sem(); | 332 | release_console_sem(); |
337 | 333 | ||
338 | nouveau_fbcon_zfill(dev); | 334 | nouveau_fbcon_zfill_all(dev); |
339 | 335 | ||
340 | drm_helper_resume_force_mode(dev); | 336 | drm_helper_resume_force_mode(dev); |
341 | dev_priv->fbdev_info->flags = fbdev_flags; | 337 | |
338 | nouveau_fbcon_restore_accel(dev); | ||
342 | return 0; | 339 | return 0; |
343 | } | 340 | } |
344 | 341 | ||