[PATCH v2] drm/edid: Select DMT timing if EDID's display feature not support GTF

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Oct 9 12:40:16 UTC 2019


On Mon, Oct 07, 2019 at 09:51:27PM +0800, Lee Shawn C wrote:
> Refer to EDID 1.3 spec, display FEATURE (byte 18h) bit #0 said
> "If this bit is set to 1, the display supports timings based on the
> GTF standard using default GTF parameter values".
> 
> And EDID 1.4 spec shows "If bit 0 is set to 0, then the display
> is noncontinuous frequency (multi-mode) and is only specified to accept
> the video timing formats that are listed in BASE EDID and certain
> EXTENSION Blocks.
> 
> When display feature did not support CVT or GFT2 and monitor's EDID version
> greater than or equal to "1.2". DRM driver would select GTF as default
> for standard timing calculation. It may generated some video timing
> that can't display properly by external monitor.
> 
> For example. When driver retrieved "0xD1 0xFC" (FHD, 120Hz) and
> "0xD1 0xE8" (FHD, 100Hz) from "Standard Timings". GTF formula
> would generate video timing like below. It already over monitor's
> spec to cause black screen issue.
> "1920x1080" 120 368881 1920 2072 2288 2656 1080 1081 1084 1157 0x0 0x6
> "1920x1080" 100 301992 1920 2072 2280 2640 1080 1081 1084 1144 0x0 0x6
> 
> v2: Just confirm GTF flag and omit the revision check.
> 
> Cc: Jani Nikula <jani.nikula at intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Adam Jackson <ajax at redhat.com>
> Cc: Cooper Chiou <cooper.chiou at intel.com>
> Signed-off-by: Lee Shawn C <shawn.c.lee at intel.com>
> ---
>  drivers/gpu/drm/drm_edid.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 5aee0ebc200e..26eb04820b52 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -2193,7 +2193,8 @@ static int standard_timing_level(struct edid *edid)
>  			return LEVEL_CVT;
>  		if (drm_gtf2_hbreak(edid))
>  			return LEVEL_GTF2;
> -		return LEVEL_GTF;
> +		if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF)
> +			return LEVEL_GTF;

lgtm. Thanks. Pushed to drm-misc-next.

>  	}
>  	return LEVEL_DMT;
>  }
> -- 
> 2.17.1

-- 
Ville Syrjälä
Intel


More information about the dri-devel mailing list