Merge branch 'for-linus' of git://git.kernel.dk/linux-block
[pandora-kernel.git] / drivers / gpu / drm / i915 / intel_opregion.c
index d2c7104..b7c5ddb 100644 (file)
@@ -297,19 +297,26 @@ static int intel_opregion_video_event(struct notifier_block *nb,
        /* The only video events relevant to opregion are 0x80. These indicate
           either a docking event, lid switch or display switch request. In
           Linux, these are handled by the dock, button and video drivers.
-          We might want to fix the video driver to be opregion-aware in
-          future, but right now we just indicate to the firmware that the
-          request has been handled */
+       */
 
        struct opregion_acpi *acpi;
+       struct acpi_bus_event *event = data;
+       int ret = NOTIFY_OK;
+
+       if (strcmp(event->device_class, ACPI_VIDEO_CLASS) != 0)
+               return NOTIFY_DONE;
 
        if (!system_opregion)
                return NOTIFY_DONE;
 
        acpi = system_opregion->acpi;
+
+       if (event->type == 0x80 && !(acpi->cevt & 0x1))
+               ret = NOTIFY_BAD;
+
        acpi->csts = 0;
 
-       return NOTIFY_OK;
+       return ret;
 }
 
 static struct notifier_block intel_opregion_notifier = {