Merge branch 'drm-radeon-evergreen-accel' into drm-core-next
[pandora-kernel.git] / drivers / gpu / drm / i915 / i915_irq.c
index 49c458b..e357ccd 100644 (file)
@@ -169,9 +169,13 @@ void intel_enable_asle (struct drm_device *dev)
 
        if (HAS_PCH_SPLIT(dev))
                ironlake_enable_display_irq(dev_priv, DE_GSE);
-       else
+       else {
                i915_enable_pipestat(dev_priv, 1,
                                     I915_LEGACY_BLC_EVENT_ENABLE);
+               if (IS_I965G(dev))
+                       i915_enable_pipestat(dev_priv, 0,
+                                            I915_LEGACY_BLC_EVENT_ENABLE);
+       }
 }
 
 /**
@@ -256,17 +260,18 @@ static void i915_hotplug_work_func(struct work_struct *work)
                                                    hotplug_work);
        struct drm_device *dev = dev_priv->dev;
        struct drm_mode_config *mode_config = &dev->mode_config;
-       struct drm_connector *connector;
+       struct drm_encoder *encoder;
 
-       if (mode_config->num_connector) {
-               list_for_each_entry(connector, &mode_config->connector_list, head) {
-                       struct intel_output *intel_output = to_intel_output(connector);
+       if (mode_config->num_encoder) {
+               list_for_each_entry(encoder, &mode_config->encoder_list, head) {
+                       struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);
        
-                       if (intel_output->hot_plug)
-                               (*intel_output->hot_plug) (intel_output);
+                       if (intel_encoder->hot_plug)
+                               (*intel_encoder->hot_plug) (intel_encoder);
                }
        }
        /* Just fire off a uevent and let userspace tell us what to do */
+       intelfb_hotplug(dev, false);
        drm_sysfs_hotplug_event(dev);
 }
 
@@ -444,7 +449,7 @@ i915_error_object_create(struct drm_device *dev,
        if (src == NULL)
                return NULL;
 
-       src_priv = src->driver_private;
+       src_priv = to_intel_bo(src);
        if (src_priv->pages == NULL)
                return NULL;
 
@@ -946,7 +951,8 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
                        intel_finish_page_flip(dev, 1);
                }
 
-               if ((pipeb_stats & I915_LEGACY_BLC_EVENT_STATUS) ||
+               if ((pipea_stats & I915_LEGACY_BLC_EVENT_STATUS) ||
+                   (pipeb_stats & I915_LEGACY_BLC_EVENT_STATUS) ||
                    (iir & I915_ASLE_INTERRUPT))
                        opregion_asle_intr(dev);