[Intel-gfx] [PATCH] drm/i915: Ignore TMDS clock limit for DP++ when EDID override is set

Jani Nikula jani.nikula at intel.com
Thu Dec 14 09:19:09 UTC 2017


On Thu, 14 Dec 2017, Abdiel Janulgue <abdiel.janulgue at linux.intel.com> wrote:
> 4K modes testing by using dummy EDID data has never been working
> properly on boxes with DP++ (dual-mode) adaptors. The reason for
> this is that  those modes got pruned during hdmi mode validation.
> intel_hdmi_mode_valid returns CLOCK_HIGH  because the pixel clock
> reported by the 4k mode is higher than dual port TMDS clock limit.
>
> However 4k injection does work properly on machines that don't have
> DP++ adapters because the mode is never validated against the DP++
> TMDS clock limit.
>
> Ignore the limits when we're testing using overriden EDIDs.

What you're actually doing is *not* detecting dual mode adaptors when
you're using an override EDID. Which means, with this patch, you can't
use override EDID with dual mode adaptors, at all. (By proxy this means
you of course ignore the limits too...)

Slightly less damage would be changing the has_edid check above your
change to (has_edid && !connector->override_edid). Still not great, but
better than this. Oh, and deserves a comment in code.

The question is, how do you decide which ports to use for override EDID
testing? Why does the VBT on these machines say those ports presumably
have a dual mode adaptor?

BR,
Jani.

>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101649
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Jani Nikula <jani.nikula at intel.com>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Signed-off-by: Abdiel Janulgue <abdiel.janulgue at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index bced7b9..d133353 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1576,7 +1576,7 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid)
>  		}
>  	}
>  
> -	if (type == DRM_DP_DUAL_MODE_NONE)
> +	if (type == DRM_DP_DUAL_MODE_NONE || connector->override_edid)
>  		return;
>  
>  	hdmi->dp_dual_mode.type = type;

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list