On Tue, Aug 06, 2019 at 07:30:21PM +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 > > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Adam Jackson <ajax@xxxxxxxxxx> > Cc: Cooper Chiou <cooper.chiou@xxxxxxxxx> > Signed-off-by: Lee Shawn C <shawn.c.lee@xxxxxxxxx> > --- > drivers/gpu/drm/drm_edid.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 82a4ceed3fcf..f6a3d2d993c7 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -2089,7 +2089,9 @@ static int standard_timing_level(struct edid *edid) > return LEVEL_CVT; > if (drm_gtf2_hbreak(edid)) > return LEVEL_GTF2; > - return LEVEL_GTF; > + if (edid->revision == 3 && (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF)) > + return LEVEL_GTF; While the oldest EDID spec I have is 1.3, sources on the interwebs suggest that older revisions already had the "default GTF" flag here. So I think we can omit the revision check. > + > } > return LEVEL_DMT; > } > -- > 2.17.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Ville Syrjälä Intel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel