drm/i915: Fix DDC bus selection for multifunction SDVO
authorAdam Jackson <ajax@redhat.com>
Fri, 23 Apr 2010 20:07:40 +0000 (16:07 -0400)
committerEric Anholt <eric@anholt.net>
Mon, 10 May 2010 20:38:28 +0000 (13:38 -0700)
commitb1083333de5357577c5ec55df6c7efa17bee41c7
treef02a4075d3f4ee79979d0e3ff532c9a910673c09
parent34dc4d4423dc342848d72be764832cbc0852854a
drm/i915: Fix DDC bus selection for multifunction SDVO

Multifunction SDVO cards stopped working after 14571b4, and would report
something that looked remarkably like an ADD2 SPD ROM instead of EDID.
This appears to be because DDC bus selection was utterly horked by that
commit; controlled_output was no longer always a single bit, so
intel_sdvo_select_ddc_bus would pick bus 0, which is (unsurprisingly)
the SPD ROM bus, not a DDC bus.

So, instead of that, let's just use the DDC bus the child device table
tells us to use.  I'm guessing at the bitmask and shifting from VBIOS
dumps, but it can't possibly be worse.

cf. https://bugzilla.redhat.com/584229

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/intel_bios.c
drivers/gpu/drm/i915/intel_sdvo.c