[Intel-gfx] [PATCH 4/6] drm/i915: Try harder on multifunction SDVO DDC

Daniel Vetter daniel at ffwll.ch
Mon Apr 16 01:10:52 CEST 2012


On Thu, Jun 16, 2011 at 04:36:26PM -0400, Adam Jackson wrote:
> The comment was wrong, bus 0 is the SPD ROM, as we discovered in
> 14571b4 and b108333.
> 
> Signed-off-by: Adam Jackson <ajax at redhat.com>

I've checked with the SDVO spec and the ddc bus switch command uses a
bitflag array, and bit 0 (i.e. 1) is used for the spd rom. So the code
seems to be correct.

But while looking through the git history I've noticed that this code got
added before we've figured out the vbios sdvo ddc pin mappings game, so
I'm inclined to just rip this out. Especially since we start at the ddc
that does _not_ read our edid and don't unconditionally test all 3 ddc
buses, potentially leaving out bus 3&2. Does anyone know why we've needed
this or maybe even have the hw?

For reference, the commit that added this code originally is

commit 7c3f0a2726fed78e0e0afe3b6fc3c1f5b298e447
Author: Zhao Yakui <yakui.zhao at intel.com>
Date:   Fri Jan 8 10:58:20 2010 +0800

    drm/i915: try another possible DDC bus for the SDVO device with
    multiple outputs

Cheers, Daniel

> ---
>  drivers/gpu/drm/i915/intel_sdvo.c |    7 ++-----
>  1 files changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index 6d3dd09..193919e 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1313,11 +1313,8 @@ intel_sdvo_tmds_sink_detect(struct drm_connector *connector)
>  	if (edid == NULL && intel_sdvo_multifunc_encoder(intel_sdvo)) {
>  		u8 ddc, saved_ddc = intel_sdvo->ddc_bus;
>  
> -		/*
> -		 * Don't use the 1 as the argument of DDC bus switch to get
> -		 * the EDID. It is used for SDVO SPD ROM.
> -		 */
> -		for (ddc = intel_sdvo->ddc_bus >> 1; ddc > 1; ddc >>= 1) {
> +		/* Skip bus 0, it's the SDVO SPD ROM */
> +		for (ddc = intel_sdvo->ddc_bus >> 1; ddc > 0; ddc >>= 1) {
>  			intel_sdvo->ddc_bus = ddc;
>  			edid = intel_sdvo_get_edid(connector);
>  			if (edid)
> -- 
> 1.7.5.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Mail: daniel at ffwll.ch
Mobile: +41 (0)79 365 57 48



More information about the Intel-gfx mailing list