diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_irq_kms.c')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_irq_kms.c | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c index cc9e8482cf3..16807afab36 100644 --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -32,23 +32,29 @@  #include "radeon.h"  #include "atom.h" +#include <linux/pm_runtime.h> +  #define RADEON_WAIT_IDLE_TIMEOUT 200  /**   * radeon_driver_irq_handler_kms - irq handler for KMS   * - * @DRM_IRQ_ARGS: args + * @int irq, void *arg: args   *   * This is the irq handler for the radeon KMS driver (all asics).   * radeon_irq_process is a macro that points to the per-asic   * irq handler callback.   */ -irqreturn_t radeon_driver_irq_handler_kms(DRM_IRQ_ARGS) +irqreturn_t radeon_driver_irq_handler_kms(int irq, void *arg)  {  	struct drm_device *dev = (struct drm_device *) arg;  	struct radeon_device *rdev = dev->dev_private; +	irqreturn_t ret; -	return radeon_irq_process(rdev); +	ret = radeon_irq_process(rdev); +	if (ret == IRQ_HANDLED) +		pm_runtime_mark_last_busy(dev->dev); +	return ret;  }  /* @@ -281,7 +287,7 @@ int radeon_irq_kms_init(struct radeon_device *rdev)  	INIT_WORK(&rdev->reset_work, radeon_irq_reset_work_func);  	rdev->irq.installed = true; -	r = drm_irq_install(rdev->ddev); +	r = drm_irq_install(rdev->ddev, rdev->ddev->pdev->irq);  	if (r) {  		rdev->irq.installed = false;  		flush_work(&rdev->hotplug_work);  | 
