drm/nouveau: Rename acpi_work to hpd_work
authorHans de Goede <hdegoede@redhat.com>
Mon, 21 Nov 2016 16:50:54 +0000 (17:50 +0100)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 28 Nov 2016 05:39:35 +0000 (15:39 +1000)
We need to call drm_helper_hpd_irq_event() on resume to properly detect
monitor connection / disconnection on some laptops. For runtime-resume
(which gets called on resume from normal suspend too) we must call
drm_helper_hpd_irq_event() from a workqueue to avoid a deadlock.

Rename acpi_work to hpd_work, and move it out of the #ifdef CONFIG_ACPI
blocks to make it suitable for generic work.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/nouveau/nouveau_drv.h

index 37839d6afabcecd8f7cce21533b8d7a16b3a3916..d85b56c7074d603408757669c1f1e3f16606de9e 100644 (file)
@@ -349,21 +349,10 @@ static struct nouveau_drm_prop_enum_list dither_depth[] = {
        }                                                                      \
 } while(0)
 
-#ifdef CONFIG_ACPI
-
-/*
- * Hans de Goede: This define belongs in acpi/video.h, I've submitted a patch
- * to the acpi subsys to move it there from drivers/acpi/acpi_video.c .
- * This should be dropped once that is merged.
- */
-#ifndef ACPI_VIDEO_NOTIFY_PROBE
-#define ACPI_VIDEO_NOTIFY_PROBE                        0x81
-#endif
-
 static void
-nouveau_display_acpi_work(struct work_struct *work)
+nouveau_display_hpd_work(struct work_struct *work)
 {
-       struct nouveau_drm *drm = container_of(work, typeof(*drm), acpi_work);
+       struct nouveau_drm *drm = container_of(work, typeof(*drm), hpd_work);
 
        pm_runtime_get_sync(drm->dev->dev);
 
@@ -373,6 +362,17 @@ nouveau_display_acpi_work(struct work_struct *work)
        pm_runtime_put_sync(drm->dev->dev);
 }
 
+#ifdef CONFIG_ACPI
+
+/*
+ * Hans de Goede: This define belongs in acpi/video.h, I've submitted a patch
+ * to the acpi subsys to move it there from drivers/acpi/acpi_video.c .
+ * This should be dropped once that is merged.
+ */
+#ifndef ACPI_VIDEO_NOTIFY_PROBE
+#define ACPI_VIDEO_NOTIFY_PROBE                        0x81
+#endif
+
 static int
 nouveau_display_acpi_ntfy(struct notifier_block *nb, unsigned long val,
                          void *data)
@@ -385,9 +385,9 @@ nouveau_display_acpi_ntfy(struct notifier_block *nb, unsigned long val,
                        /*
                         * This may be the only indication we receive of a
                         * connector hotplug on a runtime suspended GPU,
-                        * schedule acpi_work to check.
+                        * schedule hpd_work to check.
                         */
-                       schedule_work(&drm->acpi_work);
+                       schedule_work(&drm->hpd_work);
 
                        /* acpi-video should not generate keypresses for this */
                        return NOTIFY_BAD;
@@ -582,8 +582,8 @@ nouveau_display_create(struct drm_device *dev)
        }
 
        nouveau_backlight_init(dev);
+       INIT_WORK(&drm->hpd_work, nouveau_display_hpd_work);
 #ifdef CONFIG_ACPI
-       INIT_WORK(&drm->acpi_work, nouveau_display_acpi_work);
        drm->acpi_nb.notifier_call = nouveau_display_acpi_ntfy;
        register_acpi_notifier(&drm->acpi_nb);
 #endif
index ae1fd641c96eb14c4e2517e0865a22c418c6d316..9730c0ef6c6a4a57b2e43be77e90fb834e54bf5c 100644 (file)
@@ -163,9 +163,9 @@ struct nouveau_drm {
        struct nvbios vbios;
        struct nouveau_display *display;
        struct backlight_device *backlight;
+       struct work_struct hpd_work;
 #ifdef CONFIG_ACPI
        struct notifier_block acpi_nb;
-       struct work_struct acpi_work;
 #endif
 
        /* power management */