Module Name:    src
Committed By:   riastradh
Date:           Mon Mar  2 23:05:03 UTC 2015

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

Log Message:
Narrow the scope of the gmbus wait lock to where we need it.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.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_i2c.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.11	Mon Mar  2 18:36:49 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c	Mon Mar  2 23:05:03 2015
@@ -285,21 +285,19 @@ gmbus_wait_hw_status(struct drm_i915_pri
 	I915_WRITE(GMBUS4 + reg_offset, gmbus4_irq_en);
 
 #ifdef __NetBSD__
-	spin_lock(&dev_priv->gmbus_wait_lock);
 	if (cold) {
 		i = 50;
 		while (gmbus2 = I915_READ_NOTRACE(GMBUS2 + reg_offset),
 		    !ISSET(gmbus2, (GMBUS_SATOER | gmbus2_status))) {
 			if (i-- == 0)
 				break;
-			spin_unlock(&dev_priv->gmbus_wait_lock);
 			DELAY(1000);
-			spin_lock(&dev_priv->gmbus_wait_lock);
 		}
 	} else {
 		for (i = 0; i < mstohz(50); i++) {
 			int ret;
 
+			spin_lock(&dev_priv->gmbus_wait_lock);
 			DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret,
 			    &dev_priv->gmbus_wait_queue,
 			    &dev_priv->gmbus_wait_lock,
@@ -307,9 +305,9 @@ gmbus_wait_hw_status(struct drm_i915_pri
 			    (gmbus2 = I915_READ_NOTRACE(GMBUS2 + reg_offset),
 				ISSET(gmbus2,
 				    (GMBUS_SATOER | gmbus2_status))));
+			spin_unlock(&dev_priv->gmbus_wait_lock);
 		}
 	}
-	spin_unlock(&dev_priv->gmbus_wait_lock);
 #else
 	for (i = 0; i < msecs_to_jiffies_timeout(50); i++) {
 		prepare_to_wait(&dev_priv->gmbus_wait_queue, &wait,

Reply via email to