From patchwork Tue Aug 27 06:29:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nautiyal, Ankit K" X-Patchwork-Id: 11116127 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0E842112C for ; Tue, 27 Aug 2019 06:27:22 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E94AF20828 for ; Tue, 27 Aug 2019 06:27:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E94AF20828 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8B49989996; Tue, 27 Aug 2019 06:27:20 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id F200489996 for ; Tue, 27 Aug 2019 06:27:18 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Aug 2019 23:27:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,436,1559545200"; d="scan'208";a="182685156" Received: from akn-lab.iind.intel.com ([10.223.74.154]) by orsmga003.jf.intel.com with ESMTP; 26 Aug 2019 23:27:17 -0700 From: "Nautiyal, Ankit K" To: intel-gfx@lists.freedesktop.org Date: Tue, 27 Aug 2019 11:59:30 +0530 Message-Id: <1566887370-21780-1-git-send-email-ankit.k.nautiyal@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [Intel-gfx] [PATCH] drm/i915: Prune 2560x2880 mode for 5K tiled dual DP monitors X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" From: Ankit Nautiyal 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 CC: Manasi Navare --- 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; + return MODE_OK; }