]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/intel_dvo.c
Merge tag 'v3.10-rc2' into drm-intel-next-queued
[karo-tx-linux.git] / drivers / gpu / drm / i915 / intel_dvo.c
index ee328ce8e9fe8c49b4c5e7b5dd101b713aa6e72c..2c0be924e9a9553f380eb20bb85eea9e4816b653 100644 (file)
@@ -455,6 +455,7 @@ void intel_dvo_init(struct drm_device *dev)
                const struct intel_dvo_device *dvo = &intel_dvo_devices[i];
                struct i2c_adapter *i2c;
                int gpio;
+               bool dvoinit;
 
                /* Allow the I2C driver info to specify the GPIO to be used in
                 * special cases, but otherwise default to what's defined
@@ -474,7 +475,17 @@ void intel_dvo_init(struct drm_device *dev)
                i2c = intel_gmbus_get_adapter(dev_priv, gpio);
 
                intel_dvo->dev = *dvo;
-               if (!dvo->dev_ops->init(&intel_dvo->dev, i2c))
+
+               /* GMBUS NAK handling seems to be unstable, hence let the
+                * transmitter detection run in bit banging mode for now.
+                */
+               intel_gmbus_force_bit(i2c, true);
+
+               dvoinit = dvo->dev_ops->init(&intel_dvo->dev, i2c);
+
+               intel_gmbus_force_bit(i2c, false);
+
+               if (!dvoinit)
                        continue;
 
                intel_encoder->type = INTEL_OUTPUT_DVO;