From patchwork Mon Feb 17 17:41:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Lee Shawn C X-Patchwork-Id: 11385985 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 BD2AF1395 for ; Mon, 17 Feb 2020 09:45:14 +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 A507A206F4 for ; Mon, 17 Feb 2020 09:45:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A507A206F4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 79AC36E905; Mon, 17 Feb 2020 09:45:12 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1BAE76E905 for ; Mon, 17 Feb 2020 09:45:11 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Feb 2020 01:45:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,452,1574150400"; d="scan'208";a="348465197" Received: from shawnle1-build-machine.itwn.intel.com ([10.5.253.9]) by fmsmga001.fm.intel.com with ESMTP; 17 Feb 2020 01:45:08 -0800 From: Lee Shawn C To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/edid: temporary workaround to pass HDMI 2.0 compliance HF1-13 Date: Tue, 18 Feb 2020 01:41:39 +0800 Message-Id: <20200217174139.3018-1-shawn.c.lee@intel.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jani Nikula , Lee Shawn C , Cooper Chiou Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Test case HF1-13 for HDMI 2.0 compliance would ask DUT to downgrade output resolution to 720x480 or 720x576 (lower than 3.4Gbps). And check scrambling feature was disabled as well. But QD980 report it can support low rate scrambling. The vendor specific data block byte[6] was 0x88. If driver enabled scrambling rely on this info. Then HF1-13 would not get pass because DUT have to disable scrambling to run this case. Cc: Jani Nikula Cc: Ville Syrjälä Cc: Clint Taylor Cc: Cooper Chiou Signed-off-by: Lee Shawn C --- drivers/gpu/drm/drm_edid.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 99769d6c9f84..0b4badc20c35 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -85,6 +85,8 @@ #define EDID_QUIRK_FORCE_10BPC (1 << 11) /* Non desktop display (i.e. HMD) */ #define EDID_QUIRK_NON_DESKTOP (1 << 12) +/* Do not enable low rates scrambling */ +#define EDID_QUIRK_DISABLE_LOW_RATE_SCRAMBLING (1 << 13) struct detailed_mode_closure { struct drm_connector *connector; @@ -214,6 +216,9 @@ static const struct edid_quirk { /* OSVR HDK and HDK2 VR Headsets */ { "SVR", 0x1019, EDID_QUIRK_NON_DESKTOP }, + + /* Quantumdata 980 test platform */ + { "QDI", 0x03D4, EDID_QUIRK_DISABLE_LOW_RATE_SCRAMBLING }, }; /* @@ -4710,10 +4715,11 @@ static void drm_parse_ycbcr420_deep_color_info(struct drm_connector *connector, } static void drm_parse_hdmi_forum_vsdb(struct drm_connector *connector, - const u8 *hf_vsdb) + const u8 *hf_vsdb, const struct edid *edid) { struct drm_display_info *display = &connector->display_info; struct drm_hdmi_info *hdmi = &display->hdmi; + u32 quirks = edid_get_quirks(edid); display->has_hdmi_infoframe = true; @@ -4747,7 +4753,8 @@ static void drm_parse_hdmi_forum_vsdb(struct drm_connector *connector, scdc->scrambling.supported = true; /* Few sinks support scrambling for clocks < 340M */ - if ((hf_vsdb[6] & 0x8)) + if ((hf_vsdb[6] & 0x8) && + !(quirks & EDID_QUIRK_DISABLE_LOW_RATE_SCRAMBLING)) scdc->scrambling.low_rates = true; } } @@ -4870,7 +4877,7 @@ static void drm_parse_cea_ext(struct drm_connector *connector, if (cea_db_is_hdmi_vsdb(db)) drm_parse_hdmi_vsdb_video(connector, db); if (cea_db_is_hdmi_forum_vsdb(db)) - drm_parse_hdmi_forum_vsdb(connector, db); + drm_parse_hdmi_forum_vsdb(connector, db, edid); if (cea_db_is_y420cmdb(db)) drm_parse_y420cmdb_bitmap(connector, db); if (cea_db_is_vcdb(db))