Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/external/bsd/drm2/dist/drm/i915 intel_dp_aux_wait_done c...
details: https://anonhg.NetBSD.org/src/rev/1f7f7973be7d
branches: trunk
changeset: 330677:1f7f7973be7d
user: riastradh <riastradh%NetBSD.org@localhost>
date: Thu Jul 17 17:52:39 2014 +0000
description:
intel_dp_aux_wait_done can run while cold.
diffstat:
sys/external/bsd/drm2/dist/drm/i915/intel_dp.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diffs (33 lines):
diff -r 176d3699eca0 -r 1f7f7973be7d sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
--- a/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Thu Jul 17 17:29:39 2014 +0000
+++ b/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c Thu Jul 17 17:52:39 2014 +0000
@@ -367,9 +367,8 @@
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 @@
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);
Home |
Main Index |
Thread Index |
Old Index