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