drm/i915: Use an I2C algo to do the flip to SDVO DDC bus.
authorMa Ling <ling.ma@intel.com>
Mon, 18 May 2009 08:12:46 +0000 (16:12 +0800)
committerEric Anholt <eric@anholt.net>
Fri, 22 May 2009 20:21:31 +0000 (13:21 -0700)
commit619ac3b75a1e9b2df66857f6a0fb466f1da5fa9e
tree2a67e21c57157bae694c1cc780fbbf36830144ca
parentad5b2a6db3eddc41358d8a73f5cfe1c38e7e3a19
drm/i915: Use an I2C algo to do the flip to SDVO DDC bus.

Previously, we would set the control bus switch before calls were made
to request EDID information over DDC.  But recently the DDC code started
doing multiple I2C transfers to get the EDID extensions as well.  This
tripped up SDVO, because the control bus switch is only in effect until
the next STOP after a START.  By doing our own algo, we can wrap each i2c
transaction on the DDC I2C bus with the control bus switch it requires.

freedesktop.org bug #21042

Signed-off-by: Ma Ling <ling.ma@intel.com>
[anholt: Hand application for conflict, fixed error path]
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/intel_sdvo.c