diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 66796bb82d3e..0ad533f06af9 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -46,6 +46,9 @@ module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400); | |||
46 | unsigned int i915_powersave = 1; | 46 | unsigned int i915_powersave = 1; |
47 | module_param_named(powersave, i915_powersave, int, 0600); | 47 | module_param_named(powersave, i915_powersave, int, 0600); |
48 | 48 | ||
49 | unsigned int i915_enable_rc6 = 0; | ||
50 | module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600); | ||
51 | |||
49 | unsigned int i915_lvds_downclock = 0; | 52 | unsigned int i915_lvds_downclock = 0; |
50 | module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); | 53 | module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); |
51 | 54 | ||
@@ -354,12 +357,13 @@ static int i915_drm_thaw(struct drm_device *dev) | |||
354 | error = i915_gem_init_ringbuffer(dev); | 357 | error = i915_gem_init_ringbuffer(dev); |
355 | mutex_unlock(&dev->struct_mutex); | 358 | mutex_unlock(&dev->struct_mutex); |
356 | 359 | ||
360 | drm_mode_config_reset(dev); | ||
357 | drm_irq_install(dev); | 361 | drm_irq_install(dev); |
358 | 362 | ||
359 | /* Resume the modeset for every activated CRTC */ | 363 | /* Resume the modeset for every activated CRTC */ |
360 | drm_helper_resume_force_mode(dev); | 364 | drm_helper_resume_force_mode(dev); |
361 | 365 | ||
362 | if (dev_priv->renderctx && dev_priv->pwrctx) | 366 | if (IS_IRONLAKE_M(dev)) |
363 | ironlake_enable_rc6(dev); | 367 | ironlake_enable_rc6(dev); |
364 | } | 368 | } |
365 | 369 | ||
@@ -542,6 +546,7 @@ int i915_reset(struct drm_device *dev, u8 flags) | |||
542 | 546 | ||
543 | mutex_unlock(&dev->struct_mutex); | 547 | mutex_unlock(&dev->struct_mutex); |
544 | drm_irq_uninstall(dev); | 548 | drm_irq_uninstall(dev); |
549 | drm_mode_config_reset(dev); | ||
545 | drm_irq_install(dev); | 550 | drm_irq_install(dev); |
546 | mutex_lock(&dev->struct_mutex); | 551 | mutex_lock(&dev->struct_mutex); |
547 | } | 552 | } |
@@ -566,6 +571,14 @@ int i915_reset(struct drm_device *dev, u8 flags) | |||
566 | static int __devinit | 571 | static int __devinit |
567 | i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 572 | i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
568 | { | 573 | { |
574 | /* Only bind to function 0 of the device. Early generations | ||
575 | * used function 1 as a placeholder for multi-head. This causes | ||
576 | * us confusion instead, especially on the systems where both | ||
577 | * functions have the same PCI-ID! | ||
578 | */ | ||
579 | if (PCI_FUNC(pdev->devfn)) | ||
580 | return -ENODEV; | ||
581 | |||
569 | return drm_get_pci_dev(pdev, ent, &driver); | 582 | return drm_get_pci_dev(pdev, ent, &driver); |
570 | } | 583 | } |
571 | 584 | ||