diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 58 | 
1 files changed, 1 insertions, 57 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index 89011bae7588..a6aef488a822 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c @@ -101,41 +101,6 @@ const char *soc15_ih_clientid_name[] = {  };  /** - * amdgpu_hotplug_work_func - work handler for display hotplug event - * - * @work: work struct pointer - * - * This is the hotplug event work handler (all ASICs). - * The work gets scheduled from the IRQ handler if there - * was a hotplug interrupt.  It walks through the connector table - * and calls hotplug handler for each connector. After this, it sends - * a DRM hotplug event to alert userspace. - * - * This design approach is required in order to defer hotplug event handling - * from the IRQ handler to a work handler because hotplug handler has to use - * mutexes which cannot be locked in an IRQ handler (since &mutex_lock may - * sleep). - */ -static void amdgpu_hotplug_work_func(struct work_struct *work) -{ -	struct amdgpu_device *adev = container_of(work, struct amdgpu_device, -						  hotplug_work); -	struct drm_device *dev = adev_to_drm(adev); -	struct drm_mode_config *mode_config = &dev->mode_config; -	struct drm_connector *connector; -	struct drm_connector_list_iter iter; - -	mutex_lock(&mode_config->mutex); -	drm_connector_list_iter_begin(dev, &iter); -	drm_for_each_connector_iter(connector, &iter) -		amdgpu_connector_hotplug(connector); -	drm_connector_list_iter_end(&iter); -	mutex_unlock(&mode_config->mutex); -	/* Just fire off a uevent and let userspace tell us what to do */ -	drm_helper_hpd_irq_event(dev); -} - -/**   * amdgpu_irq_disable_all - disable *all* interrupts   *   * @adev: amdgpu device pointer @@ -317,21 +282,6 @@ int amdgpu_irq_init(struct amdgpu_device *adev)  		}  	} -	if (!amdgpu_device_has_dc_support(adev)) { -		if (!adev->enable_virtual_display) -			/* Disable vblank IRQs aggressively for power-saving */ -			/* XXX: can this be enabled for DC? */ -			adev_to_drm(adev)->vblank_disable_immediate = true; - -		r = drm_vblank_init(adev_to_drm(adev), adev->mode_info.num_crtc); -		if (r) -			return r; - -		/* Pre-DCE11 */ -		INIT_WORK(&adev->hotplug_work, -				amdgpu_hotplug_work_func); -	} -  	INIT_WORK(&adev->irq.ih1_work, amdgpu_irq_handle_ih1);  	INIT_WORK(&adev->irq.ih2_work, amdgpu_irq_handle_ih2);  	INIT_WORK(&adev->irq.ih_soft_work, amdgpu_irq_handle_ih_soft); @@ -345,11 +295,8 @@ int amdgpu_irq_init(struct amdgpu_device *adev)  	/* PCI devices require shared interrupts. */  	r = request_irq(irq, amdgpu_irq_handler, IRQF_SHARED, adev_to_drm(adev)->driver->name,  			adev_to_drm(adev)); -	if (r) { -		if (!amdgpu_device_has_dc_support(adev)) -			flush_work(&adev->hotplug_work); +	if (r)  		return r; -	}  	adev->irq.installed = true;  	adev->irq.irq = irq;  	adev_to_drm(adev)->max_vblank_count = 0x00ffffff; @@ -366,9 +313,6 @@ void amdgpu_irq_fini_hw(struct amdgpu_device *adev)  		adev->irq.installed = false;  		if (adev->irq.msi_enabled)  			pci_free_irq_vectors(adev->pdev); - -		if (!amdgpu_device_has_dc_support(adev)) -			flush_work(&adev->hotplug_work);  	}  	amdgpu_ih_ring_fini(adev, &adev->irq.ih_soft); | 
