aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_drm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_drm.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_drm.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index ccae8c26ae2..8503b2ea570 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -63,8 +63,9 @@ MODULE_PARM_DESC(noaccel, "disable kernel/abi16 acceleration");
63static int nouveau_noaccel = 0; 63static int nouveau_noaccel = 0;
64module_param_named(noaccel, nouveau_noaccel, int, 0400); 64module_param_named(noaccel, nouveau_noaccel, int, 0400);
65 65
66MODULE_PARM_DESC(modeset, "enable driver"); 66MODULE_PARM_DESC(modeset, "enable driver (default: auto, "
67static int nouveau_modeset = -1; 67 "0 = disabled, 1 = enabled, 2 = headless)");
68int nouveau_modeset = -1;
68module_param_named(modeset, nouveau_modeset, int, 0400); 69module_param_named(modeset, nouveau_modeset, int, 0400);
69 70
70static struct drm_driver driver; 71static struct drm_driver driver;
@@ -128,7 +129,8 @@ nouveau_accel_init(struct nouveau_drm *drm)
128 129
129 /* initialise synchronisation routines */ 130 /* initialise synchronisation routines */
130 if (device->card_type < NV_10) ret = nv04_fence_create(drm); 131 if (device->card_type < NV_10) ret = nv04_fence_create(drm);
131 else if (device->chipset < 0x84) ret = nv10_fence_create(drm); 132 else if (device->card_type < NV_50) ret = nv10_fence_create(drm);
133 else if (device->chipset < 0x84) ret = nv50_fence_create(drm);
132 else if (device->card_type < NV_C0) ret = nv84_fence_create(drm); 134 else if (device->card_type < NV_C0) ret = nv84_fence_create(drm);
133 else ret = nvc0_fence_create(drm); 135 else ret = nvc0_fence_create(drm);
134 if (ret) { 136 if (ret) {
@@ -363,7 +365,8 @@ nouveau_drm_unload(struct drm_device *dev)
363 365
364 nouveau_pm_fini(dev); 366 nouveau_pm_fini(dev);
365 367
366 nouveau_display_fini(dev); 368 if (dev->mode_config.num_crtc)
369 nouveau_display_fini(dev);
367 nouveau_display_destroy(dev); 370 nouveau_display_destroy(dev);
368 371
369 nouveau_irq_fini(dev); 372 nouveau_irq_fini(dev);
@@ -403,13 +406,15 @@ nouveau_drm_suspend(struct pci_dev *pdev, pm_message_t pm_state)
403 pm_state.event == PM_EVENT_PRETHAW) 406 pm_state.event == PM_EVENT_PRETHAW)
404 return 0; 407 return 0;
405 408
406 NV_INFO(drm, "suspending fbcon...\n"); 409 if (dev->mode_config.num_crtc) {
407 nouveau_fbcon_set_suspend(dev, 1); 410 NV_INFO(drm, "suspending fbcon...\n");
411 nouveau_fbcon_set_suspend(dev, 1);
408 412
409 NV_INFO(drm, "suspending display...\n"); 413 NV_INFO(drm, "suspending display...\n");
410 ret = nouveau_display_suspend(dev); 414 ret = nouveau_display_suspend(dev);
411 if (ret) 415 if (ret)
412 return ret; 416 return ret;
417 }
413 418
414 NV_INFO(drm, "evicting buffers...\n"); 419 NV_INFO(drm, "evicting buffers...\n");
415 ttm_bo_evict_mm(&drm->ttm.bdev, TTM_PL_VRAM); 420 ttm_bo_evict_mm(&drm->ttm.bdev, TTM_PL_VRAM);
@@ -445,8 +450,10 @@ fail_client:
445 nouveau_client_init(&cli->base); 450 nouveau_client_init(&cli->base);
446 } 451 }
447 452
448 NV_INFO(drm, "resuming display...\n"); 453 if (dev->mode_config.num_crtc) {
449 nouveau_display_resume(dev); 454 NV_INFO(drm, "resuming display...\n");
455 nouveau_display_resume(dev);
456 }
450 return ret; 457 return ret;
451} 458}
452 459
@@ -486,8 +493,10 @@ nouveau_drm_resume(struct pci_dev *pdev)
486 nouveau_irq_postinstall(dev); 493 nouveau_irq_postinstall(dev);
487 nouveau_pm_resume(dev); 494 nouveau_pm_resume(dev);
488 495
489 NV_INFO(drm, "resuming display...\n"); 496 if (dev->mode_config.num_crtc) {
490 nouveau_display_resume(dev); 497 NV_INFO(drm, "resuming display...\n");
498 nouveau_display_resume(dev);
499 }
491 return 0; 500 return 0;
492} 501}
493 502
@@ -662,9 +671,7 @@ nouveau_drm_init(void)
662#ifdef CONFIG_VGA_CONSOLE 671#ifdef CONFIG_VGA_CONSOLE
663 if (vgacon_text_force()) 672 if (vgacon_text_force())
664 nouveau_modeset = 0; 673 nouveau_modeset = 0;
665 else
666#endif 674#endif
667 nouveau_modeset = 1;
668 } 675 }
669 676
670 if (!nouveau_modeset) 677 if (!nouveau_modeset)