On Fri, Mar 25, 2022 at 02:25:23PM +0200, Jani Nikula wrote: > We'll want to keep the EDID immutable while parsing. Stop modifying the > EDID because of the quirks. > > In theory, this does have userspace implications, but the userspace is > supposed to use the modes exposed via KMS API, not by parsing the EDID > directly. > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_edid.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index cc7bd58369df..1b552fe54f38 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -2740,9 +2740,9 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev, > return NULL; > > if (quirks & EDID_QUIRK_135_CLOCK_TOO_HIGH) > - timing->pixel_clock = cpu_to_le16(1088); > - > - mode->clock = le16_to_cpu(timing->pixel_clock) * 10; > + mode->clock = 1088 * 10; > + else > + mode->clock = le16_to_cpu(timing->pixel_clock) * 10; > > mode->hdisplay = hactive; > mode->hsync_start = mode->hdisplay + hsync_offset; > @@ -2763,14 +2763,14 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_device *dev, > drm_mode_do_interlace_quirk(mode, pt); > > if (quirks & EDID_QUIRK_DETAILED_SYNC_PP) { > - pt->misc |= DRM_EDID_PT_HSYNC_POSITIVE | DRM_EDID_PT_VSYNC_POSITIVE; > + mode->flags |= DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC; > + } else { > + mode->flags |= (pt->misc & DRM_EDID_PT_HSYNC_POSITIVE) ? > + DRM_MODE_FLAG_PHSYNC : DRM_MODE_FLAG_NHSYNC; > + mode->flags |= (pt->misc & DRM_EDID_PT_VSYNC_POSITIVE) ? > + DRM_MODE_FLAG_PVSYNC : DRM_MODE_FLAG_NVSYNC; > } > > - mode->flags |= (pt->misc & DRM_EDID_PT_HSYNC_POSITIVE) ? > - DRM_MODE_FLAG_PHSYNC : DRM_MODE_FLAG_NHSYNC; > - mode->flags |= (pt->misc & DRM_EDID_PT_VSYNC_POSITIVE) ? > - DRM_MODE_FLAG_PVSYNC : DRM_MODE_FLAG_NVSYNC; > - > set_size: > mode->width_mm = pt->width_mm_lo | (pt->width_height_mm_hi & 0xf0) << 4; > mode->height_mm = pt->height_mm_lo | (pt->width_height_mm_hi & 0xf) << 8; > -- > 2.30.2 -- Ville Syrjälä Intel