On Tue, 27 Aug 2019, "Nautiyal, Ankit K" <ankit.k.nautiyal@xxxxxxxxx> wrote: > From: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx> > > Currently, the transcoder port sync feature is not available, due to > which the 5K-tiled dual DP monitors experience corruption when > 2560x2880 mode is applied for both of the tiled DP connectors. > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97244 > > There is a patch series to enable transcode port sync feature for > tiled display for ICL+, which is under review: > https://patchwork.kernel.org/project/intel-gfx/list/?series=137339 > > For the older platforms, we need to remove the 2560x2880 mode to avoid > a possibility of userspace choosing 2560x2880 mode for both tiled > displays, resulting in corruption. > > This patch prunes 2560x2880 mode for one of the tiled DP connector. > Since both the tiled DP connectors have different tile_h_loc and > tile_v_loc, the tiled connector with tile_h_loc and tile_v_loc as '0', > is chosen, for which the given resolution is removed. > > Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx> > CC: Manasi Navare <manasi.d.navare@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_dp.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 5c45a3b..aa43a3b 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -564,6 +564,17 @@ intel_dp_mode_valid(struct drm_connector *connector, > if (mode->flags & DRM_MODE_FLAG_DBLCLK) > return MODE_H_ILLEGAL; > > + /* > + * For 5K tiled dual DP monitors, dual-DP sync is not yet supported. > + * This results in display sync issues, when both tiled connectors run > + * on 2560x2880 resolution. Therefore prune the 2560x2880 mode on one > + * of the tiled connector, to avoid such a case. > + */ > + if (connector->has_tile && > + (connector->tile_h_loc == 0 && connector->tile_v_loc == 0) && > + (mode->hdisplay == 2560 && mode->vdisplay == 2880)) > + return MODE_PANEL; > + This assumes all tiled cases with specific resolutions fail. You don't know that. You only know this fails on a specific display. Instead of coming up with various rules on tiles and resolutions that match the display (but might *also* match any number of *other* displays!), you need to actually identify and match that specific display instead. There are two ways to add display specific quirks: based on EDID (edid_quirk_list in drm_edid.c) and based on DPCD (dpcd_quirk_list in drm_dp_helper.c). You identify the display, and then prune the modes that require port sync to work, for *that* display. Blanket filters like this are a no-go. BR, Jani. > return MODE_OK; > } -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx