drm/amdgpu/atif: Send a hotplug event when we get dgpu display request
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 14 Sep 2016 18:04:29 +0000 (14:04 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 22 Sep 2016 14:30:36 +0000 (10:30 -0400)
On PX systems, if the platform supports hotplug events ATIF while the
dGPU is powered down, handle the event and alert userspace.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c

index 5cd7b736a9de7196bf40fbba354402f799e3beba..5796539a0bcb9c50a20871a0b822817fd4dc5265 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/acpi.h>
 #include <linux/slab.h>
 #include <linux/power_supply.h>
+#include <linux/pm_runtime.h>
 #include <acpi/video.h>
 #include <drm/drmP.h>
 #include <drm/drm_crtc_helper.h>
@@ -333,6 +334,16 @@ int amdgpu_atif_handler(struct amdgpu_device *adev,
 #endif
                }
        }
+       if (req.pending & ATIF_DGPU_DISPLAY_EVENT) {
+               if ((adev->flags & AMD_IS_PX) &&
+                   amdgpu_atpx_dgpu_req_power_for_displays()) {
+                       pm_runtime_get_sync(adev->ddev->dev);
+                       /* Just fire off a uevent and let userspace tell us what to do */
+                       drm_helper_hpd_irq_event(adev->ddev);
+                       pm_runtime_mark_last_busy(adev->ddev->dev);
+                       pm_runtime_put_autosuspend(adev->ddev->dev);
+               }
+       }
        /* TODO: check other events */
 
        /* We've handled the event, stop the notifier chain. The ACPI interface