diff options
Diffstat (limited to 'drivers/gpu/drm')
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 0007a4d9bf6..9ea545e6f56 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -2042,17 +2042,17 @@ intel_sdvo_select_i2c_bus(struct drm_i915_private *dev_priv,  	else  		mapping = &dev_priv->sdvo_mappings[1]; -	pin = GMBUS_PORT_DPB; -	if (mapping->initialized) +	if (mapping->initialized && intel_gmbus_is_port_valid(mapping->i2c_pin))  		pin = mapping->i2c_pin; +	else +		pin = GMBUS_PORT_DPB; -	if (intel_gmbus_is_port_valid(pin)) { -		sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin); -		intel_gmbus_set_speed(sdvo->i2c, GMBUS_RATE_1MHZ); -		intel_gmbus_force_bit(sdvo->i2c, true); -	} else { -		sdvo->i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); -	} +	sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin); + +	/* With gmbus we should be able to drive sdvo i2c at 2MHz, but somehow +	 * our code totally fails once we start using gmbus. Hence fall back to +	 * bit banging for now. */ +	intel_gmbus_force_bit(sdvo->i2c, true);  }  static bool  |