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,