diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c index 538e5f27d120..47c5ce9807db 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | |||
@@ -37,6 +37,10 @@ | |||
37 | 37 | ||
38 | #include <linux/pm_runtime.h> | 38 | #include <linux/pm_runtime.h> |
39 | 39 | ||
40 | #ifdef CONFIG_DRM_AMD_DC | ||
41 | #include "amdgpu_dm_irq.h" | ||
42 | #endif | ||
43 | |||
40 | #define AMDGPU_WAIT_IDLE_TIMEOUT 200 | 44 | #define AMDGPU_WAIT_IDLE_TIMEOUT 200 |
41 | 45 | ||
42 | /* | 46 | /* |
@@ -221,15 +225,6 @@ int amdgpu_irq_init(struct amdgpu_device *adev) | |||
221 | 225 | ||
222 | spin_lock_init(&adev->irq.lock); | 226 | spin_lock_init(&adev->irq.lock); |
223 | 227 | ||
224 | if (!adev->enable_virtual_display) | ||
225 | /* Disable vblank irqs aggressively for power-saving */ | ||
226 | adev->ddev->vblank_disable_immediate = true; | ||
227 | |||
228 | r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc); | ||
229 | if (r) { | ||
230 | return r; | ||
231 | } | ||
232 | |||
233 | /* enable msi */ | 228 | /* enable msi */ |
234 | adev->irq.msi_enabled = false; | 229 | adev->irq.msi_enabled = false; |
235 | 230 | ||
@@ -241,7 +236,21 @@ int amdgpu_irq_init(struct amdgpu_device *adev) | |||
241 | } | 236 | } |
242 | } | 237 | } |
243 | 238 | ||
244 | INIT_WORK(&adev->hotplug_work, amdgpu_hotplug_work_func); | 239 | if (!amdgpu_device_has_dc_support(adev)) { |
240 | if (!adev->enable_virtual_display) | ||
241 | /* Disable vblank irqs aggressively for power-saving */ | ||
242 | /* XXX: can this be enabled for DC? */ | ||
243 | adev->ddev->vblank_disable_immediate = true; | ||
244 | |||
245 | r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc); | ||
246 | if (r) | ||
247 | return r; | ||
248 | |||
249 | /* pre DCE11 */ | ||
250 | INIT_WORK(&adev->hotplug_work, | ||
251 | amdgpu_hotplug_work_func); | ||
252 | } | ||
253 | |||
245 | INIT_WORK(&adev->reset_work, amdgpu_irq_reset_work_func); | 254 | INIT_WORK(&adev->reset_work, amdgpu_irq_reset_work_func); |
246 | 255 | ||
247 | adev->irq.installed = true; | 256 | adev->irq.installed = true; |