]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
Merge tag 'powerpc-4.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_irq.c
index 538e5f27d1205809ec293dee0aae8da5b5711e8b..56bcd59c3399a0a912ea1fa8f869c105b8827327 100644 (file)
 
 #include <linux/pm_runtime.h>
 
+#ifdef CONFIG_DRM_AMD_DC
+#include "amdgpu_dm_irq.h"
+#endif
+
 #define AMDGPU_WAIT_IDLE_TIMEOUT 200
 
 /*
@@ -84,7 +88,7 @@ static void amdgpu_irq_reset_work_func(struct work_struct *work)
                                                  reset_work);
 
        if (!amdgpu_sriov_vf(adev))
-               amdgpu_gpu_reset(adev);
+               amdgpu_device_gpu_recover(adev, NULL, false);
 }
 
 /* Disable *all* interrupts */
@@ -221,15 +225,6 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
 
        spin_lock_init(&adev->irq.lock);
 
-       if (!adev->enable_virtual_display)
-               /* Disable vblank irqs aggressively for power-saving */
-               adev->ddev->vblank_disable_immediate = true;
-
-       r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc);
-       if (r) {
-               return r;
-       }
-
        /* enable msi */
        adev->irq.msi_enabled = false;
 
@@ -237,11 +232,25 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
                int ret = pci_enable_msi(adev->pdev);
                if (!ret) {
                        adev->irq.msi_enabled = true;
-                       dev_info(adev->dev, "amdgpu: using MSI.\n");
+                       dev_dbg(adev->dev, "amdgpu: using MSI.\n");
                }
        }
 
-       INIT_WORK(&adev->hotplug_work, amdgpu_hotplug_work_func);
+       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->ddev->vblank_disable_immediate = true;
+
+               r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc);
+               if (r)
+                       return r;
+
+               /* pre DCE11 */
+               INIT_WORK(&adev->hotplug_work,
+                               amdgpu_hotplug_work_func);
+       }
+
        INIT_WORK(&adev->reset_work, amdgpu_irq_reset_work_func);
 
        adev->irq.installed = true;
@@ -253,7 +262,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
                return r;
        }
 
-       DRM_INFO("amdgpu: irq initialized.\n");
+       DRM_DEBUG("amdgpu: irq initialized.\n");
        return 0;
 }
 
This page took 0.037974 seconds and 4 git commands to generate.