Module Name:    src
Committed By:   riastradh
Date:           Thu Jul 17 17:52:39 UTC 2014

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c

Log Message:
intel_dp_aux_wait_done can run while cold.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.6	Thu Jul 17 17:17:24 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Thu Jul 17 17:52:39 2014
@@ -367,9 +367,8 @@ intel_dp_aux_wait_done(struct intel_dp *
 	bool done;
 
 #define C (((status = I915_READ_NOTRACE(ch_ctl)) & DP_AUX_CH_CTL_SEND_BUSY) == 0)
-	if (has_aux_irq)
 #ifdef __NetBSD__
-	    {
+	if (has_aux_irq && !cold) {
 		int ret;
 		spin_lock(&dev_priv->gmbus_wait_lock);
 		DRM_SPIN_TIMED_WAIT_UNTIL(ret, &dev_priv->gmbus_wait_queue,
@@ -377,13 +376,16 @@ intel_dp_aux_wait_done(struct intel_dp *
 		    C);
 		done = ret;	/* XXX ugh */
 		spin_unlock(&dev_priv->gmbus_wait_lock);
-	    }
+	} else {
+		done = wait_for_atomic(C, 10) == 0;
+	}
 #else
+	if (has_aux_irq)
 		done = wait_event_timeout(dev_priv->gmbus_wait_queue, C,
 					  msecs_to_jiffies_timeout(10));
-#endif
 	else
 		done = wait_for_atomic(C, 10) == 0;
+#endif
 	if (!done)
 		DRM_ERROR("dp aux hw did not signal timeout (has irq: %i)!\n",
 			  has_aux_irq);

Reply via email to