From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 052463176EB for ; Wed, 26 Nov 2025 06:52:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139945; cv=none; b=o0wBpPYfg+3UfoMdg6PcYkvhISo1HMB/Nrc3na4XNxQUmxVFcyRhChbCcDK/XGubuJwEDSjIbwhaOKgJpf9ngOrMWhg3gY/4GbMkXqVBOH9uqwnXT0xj45UYGALBKzVAHZNkX/nCdJP1jidUIvQ8lhQ3jh8oIPvnNdv1nsE6YkU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139945; c=relaxed/simple; bh=o3ex1dmu/vH99O+Ve0CKrvYJPId3XTzff1XmZGGhQGQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u4EdRA6fclExX/N3bfD8F5zqjyiXnOz+cKsaUWfZ54+f7LL/GLd+51zqhzPrBydfTgYd2cvCnbuJni9TMK3+mDSeNYl0/N3fZw/aGFCD3H2oJ5uGPQSAfhUEtsgSYS7O3WQUCfO4XxU424j1/+NFgRCo/85ADZsyLwKuJPo4+BA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=Ki0m+5Xt; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=mg9k26IA; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="Ki0m+5Xt"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="mg9k26IA" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139911; bh=5Ao5gy0hMIHL+AsB3ZJORlb QMMgBYYxMmt3et4768b4=; b=Ki0m+5XtnzIbZ0sELp2tITGj+7NxiwJEPauqtxa4ISv9AUgskI mK/ijCqV/FK/pZ3DP6ivmrpgk0tJywR+K8oVZSQhYdCSJmMhE5RdNmbQnAvGHNS+akgWSJwTtT3 v0mPXnAjoBHlIFCJljXFdxSw+5sm0g/FLpo6uAouGCoEWD2NwomswI+JOC1rE/ZBd5sWBgyIsH8 qsVl6BFHlBmYBgrDDnGT6WHEidRQjvnbuwhcMg4Suuz/orm/JsCvyjuRbQJTFW5Fe1azfxwv9tN YeMIU/bwahnR+8R/+ybJ9CPaQysaZB0UtLmIgrD15N6XOuRqFJDnT20HACn3q2BKo4A==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139911; bh=5Ao5gy0hMIHL+AsB3ZJORlb QMMgBYYxMmt3et4768b4=; b=mg9k26IA6ASuQUujRSIAV9Ue5+/c99mYHxlH9SgUpAAy1ZPGW4 bVBElm9kLCSppoQLH2flH98YKY8WanhzOsDg==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 1/7] drm/edid: rename VESA block parsing functions to more generic name Date: Wed, 26 Nov 2025 07:51:20 +0100 Message-ID: <20251126065126.54016-2-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Those functions would also parse DSC Bits Per Pixel value in the future commits. Signed-off-by: Yaroslav Bolyukin Reviewed-by: Jani Nikula --- drivers/gpu/drm/drm_edid.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 26bb7710a462..64f7a94dd9e4 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6527,8 +6527,8 @@ static void drm_get_monitor_range(struct drm_connecto= r *connector, info->monitor_range.min_vfreq, info->monitor_range.max_vfreq); } =20 -static void drm_parse_vesa_mso_data(struct drm_connector *connector, - const struct displayid_block *block) +static void drm_parse_vesa_specific_block(struct drm_connector *connector, + const struct displayid_block *block) { struct displayid_vesa_vendor_specific_block *vesa =3D (struct displayid_vesa_vendor_specific_block *)block; @@ -6587,8 +6587,8 @@ static void drm_parse_vesa_mso_data(struct drm_connec= tor *connector, info->mso_stream_count, info->mso_pixel_overlap); } =20 -static void drm_update_mso(struct drm_connector *connector, - const struct drm_edid *drm_edid) +static void drm_update_vesa_specific_block(struct drm_connector *connector, + const struct drm_edid *drm_edid) { const struct displayid_block *block; struct displayid_iter iter; @@ -6596,7 +6596,7 @@ static void drm_update_mso(struct drm_connector *conn= ector, displayid_iter_edid_begin(drm_edid, &iter); displayid_iter_for_each(block, &iter) { if (block->tag =3D=3D DATA_BLOCK_2_VENDOR_SPECIFIC) - drm_parse_vesa_mso_data(connector, block); + drm_parse_vesa_specific_block(connector, block); } displayid_iter_end(&iter); } @@ -6756,7 +6756,7 @@ static void update_display_info(struct drm_connector = *connector, if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422) info->color_formats |=3D DRM_COLOR_FORMAT_YCBCR422; =20 - drm_update_mso(connector, drm_edid); + drm_update_vesa_specific_block(connector, drm_edid); =20 out: if (drm_edid_has_internal_quirk(connector, EDID_QUIRK_NON_DESKTOP)) { --=20 2.51.2 From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0B9AE2F6593 for ; Wed, 26 Nov 2025 06:52:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139932; cv=none; b=TNYB0QSKKrTL5vJW/UWgWhhW3ZMDMiCQRMeNXoewjoLfhigZhbYM1NVOMR7SXEJGmiLxwKleGvDAkVhC5xx+EcpyDJuVG/AvByqbvk1JA46k7I1MkMfErJ2WkTVYY7MLL1ySVdziA6cZIhyozkwKawJTiiRLcGLBIXENIi6s0ok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139932; c=relaxed/simple; bh=TEWFE/XggMM1N+N/MEbjHHwTMuM/7sh3TbPdPyHHRSc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FnJrUu0pMpyG/eG2iO/wMu5zg8COw9ilKQdPBvcJGjkuHCXzLghXAEZGVTvgaJFkZL+Wh07anEuKIYjB10vclLpfChbf94vbZEYQwGvfAFa4LkRsgopL0WzbdA/EdJJ40jMLFGnHAzsnLFC14CNY0YMPjRjaEbh2T/wIqtSYTdQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=pPp79NPZ; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=ar1sT3n4; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="pPp79NPZ"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="ar1sT3n4" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139911; bh=UZ017X1htm+rMcGR4tOux+d jQ8/TyvYII9ENisiXiXY=; b=pPp79NPZutNKi+mXSY1VCS6cgNJqElFjXge5eggSpNoOH8Gerr tgLSWeJotsdz5f60r+92oY3j5eK+08la0aGqb9PsYRFbFqxOlmNwmrfiabF0Keh+dpBqEr/UNER Rs9ucdzSDZ8LHt3Lthb31+3+LZbfTV49LB5IxUiqQVtBYIptIYm+cc/tdKKiFxk3gwqYLxeqiJo /YY00t3rUGaU+ZZBsikf3NTCHqegxQIaRWEpG72wtZdHfFh+RWghn1bUSQNpH+1zQlGBU8d6E9C 0qq+CIzio3cDFF5lpjJ7Eg0FQDWSLq7EDwG38RlBKALh3i5MKe6cH+FssCG8RnHmHxg==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139911; bh=UZ017X1htm+rMcGR4tOux+d jQ8/TyvYII9ENisiXiXY=; b=ar1sT3n4NkP2FnsyFv8MAlOEozOTjnlEvlTAH2Ge0nwncAeHQ+ mRrlzQHU6nIoxee8/j5rdOdXqmSa//deudDw==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 2/7] drm/edid: prepare for VESA vendor-specific data block extension Date: Wed, 26 Nov 2025 07:51:21 +0100 Message-ID: <20251126065126.54016-3-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Current VESA vendor-specific block parsing expects real block size to be the same as the defined struct size, use real offsets in conditionals instead to add struct fields in future commits. Signed-off-by: Yaroslav Bolyukin Reviewed-by: Jani Nikula --- drivers/gpu/drm/drm_edid.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 64f7a94dd9e4..a52fd6de9327 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6544,7 +6544,7 @@ static void drm_parse_vesa_specific_block(struct drm_= connector *connector, if (oui(vesa->oui[0], vesa->oui[1], vesa->oui[2]) !=3D VESA_IEEE_OUI) return; =20 - if (sizeof(*vesa) !=3D sizeof(*block) + block->num_bytes) { + if (block->num_bytes < 5) { drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] Unexpected VESA vendor block size\n", connector->base.id, connector->name); @@ -6567,24 +6567,20 @@ static void drm_parse_vesa_specific_block(struct dr= m_connector *connector, break; } =20 - if (!info->mso_stream_count) { - info->mso_pixel_overlap =3D 0; - return; - } - - info->mso_pixel_overlap =3D FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->m= so); - if (info->mso_pixel_overlap > 8) { + if (info->mso_stream_count) { + info->mso_pixel_overlap =3D FIELD_GET(DISPLAYID_VESA_MSO_OVERLAP, vesa->= mso); + if (info->mso_pixel_overlap > 8) { + drm_dbg_kms(connector->dev, + "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n", + connector->base.id, connector->name, + info->mso_pixel_overlap); + info->mso_pixel_overlap =3D 8; + } drm_dbg_kms(connector->dev, - "[CONNECTOR:%d:%s] Reserved MSO pixel overlap value %u\n", + "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n", connector->base.id, connector->name, - info->mso_pixel_overlap); - info->mso_pixel_overlap =3D 8; + info->mso_stream_count, info->mso_pixel_overlap); } - - drm_dbg_kms(connector->dev, - "[CONNECTOR:%d:%s] MSO stream count %u, pixel overlap %u\n", - connector->base.id, connector->name, - info->mso_stream_count, info->mso_pixel_overlap); } =20 static void drm_update_vesa_specific_block(struct drm_connector *connector, --=20 2.51.2 From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E33A2877FC for ; Wed, 26 Nov 2025 06:54:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764140070; cv=none; b=BM4vBXmtijSMX8OnmBAM8xLn+bu4fVgz6Q4t+M4FwoXy/TA8WFX2TmTqCd/wpYGLmCJVjWer91IIJYwnmMmUj3g/nCjTW3r6Sed2rAGug+beP2VSVrywo1mtkmUeeWMi4fzrIRS3zL59kBFKdNR0CgHYoCOvWwBu05RO7B4zLv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764140070; c=relaxed/simple; bh=wpqeicRH4J7UBZ43wid91weo9Qfjz2n+Nug+NaKzW6c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Wkje2+Rqz8IrDTph0fHn2fz8FzZMzSx6h4FCWw2pWhgvrAA7s2kvU2rqDhXpUcf9kmpFKv3MlcB9jjoESIujwt8pSxmiRuvNkxoWa+a4cEUyNsletBWT5+05N3gjR4/Z700AHjEuHeoMKl+SwqA0DNuzSVrOq5Oq3T+erRneiwM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=YJE1fSsI; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=z+CS2b+F; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="YJE1fSsI"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="z+CS2b+F" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139912; bh=AvKT6oJijpCEbMgflv6462W DrB/s3kB+K5PshE5hKtY=; b=YJE1fSsI6tntFWIBjjfAE2ySxNfLnfQjdYdInz1vfwPbmIxYk0 cRlcnOyxGuF0Pq2zoFjNBIcGSpYllnwFujk0ZWqDFfwBeLxdEDphM0P4Ct15brG/yhItL19wuxl m1wMzuVVuN26NXaE464RQkw1F8mdKu6BVnkt7CkdXcPLzBxVEkCrIBp5FmSgU/aJ+lQlfVjbUFG US5HQYmFYLcub0NE284FyZRFz7TSnab88svCFhpx6vn0ytsHdseykI2gL7LE3jxsQJyhUv0mqoF 1ZYvk+Jyvr4EspFEWxfgn/n7QFwZU0XqU0buaon2ms2rNBS1T/DTc9zExrdKwfxVEVg==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139912; bh=AvKT6oJijpCEbMgflv6462W DrB/s3kB+K5PshE5hKtY=; b=z+CS2b+FYOWCUDjpMGs7LvAPYwy9aMoZYja3EZDOD3806E3XqM Q8S5KjMAPvDoHZp0glpipwpMmte78KNFuSBQ==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 3/7] drm/edid: MSO should only be used for non-eDP displays Date: Wed, 26 Nov 2025 07:51:22 +0100 Message-ID: <20251126065126.54016-4-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" As per DisplayID v2.1a spec: If Offset 06h[2:0] is programmed to 001b (External DisplayPort), this field shall be cleared to 00b (Not supported). Link: https://lore.kernel.org/lkml/3abc1087618c822e5676e67a3ec2e64e506dc5ec= @intel.com/ Signed-off-by: Yaroslav Bolyukin --- drivers/gpu/drm/drm_displayid_internal.h | 4 +++ drivers/gpu/drm/drm_edid.c | 36 +++++++++++++++--------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm= _displayid_internal.h index 5b1b32f73516..72f107ae832f 100644 --- a/drivers/gpu/drm/drm_displayid_internal.h +++ b/drivers/gpu/drm/drm_displayid_internal.h @@ -142,9 +142,13 @@ struct displayid_formula_timing_block { struct displayid_formula_timings_9 timings[]; } __packed; =20 +#define DISPLAYID_VESA_DP_TYPE GENMASK(2, 0) #define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0) #define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5) =20 +#define DISPLAYID_VESA_DP_TYPE_EDP 0 +#define DISPLAYID_VESA_DP_TYPE_DP 1 + struct displayid_vesa_vendor_specific_block { struct displayid_block base; u8 oui[3]; diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index a52fd6de9327..348aa31aea1b 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6533,6 +6533,7 @@ static void drm_parse_vesa_specific_block(struct drm_= connector *connector, struct displayid_vesa_vendor_specific_block *vesa =3D (struct displayid_vesa_vendor_specific_block *)block; struct drm_display_info *info =3D &connector->display_info; + int dp_type; =20 if (block->num_bytes < 3) { drm_dbg_kms(connector->dev, @@ -6551,20 +6552,29 @@ static void drm_parse_vesa_specific_block(struct dr= m_connector *connector, return; } =20 - switch (FIELD_GET(DISPLAYID_VESA_MSO_MODE, vesa->mso)) { - default: - drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] Reserved MSO mode value\n= ", + dp_type =3D FIELD_GET(DISPLAYID_VESA_DP_TYPE, vesa->data_structure_type); + if (dp_type > 1) { + drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] Reserved dp type value\n", connector->base.id, connector->name); - fallthrough; - case 0: - info->mso_stream_count =3D 0; - break; - case 1: - info->mso_stream_count =3D 2; /* 2 or 4 links */ - break; - case 2: - info->mso_stream_count =3D 4; /* 4 links */ - break; + } + + /* MSO is not supported for eDP */ + if (dp_type !=3D DISPLAYID_VESA_DP_TYPE_EDP) { + switch (FIELD_GET(DISPLAYID_VESA_MSO_MODE, vesa->mso)) { + default: + drm_dbg_kms(connector->dev, "[CONNECTOR:%d:%s] Reserved MSO mode value\= n", + connector->base.id, connector->name); + fallthrough; + case 0: + info->mso_stream_count =3D 0; + break; + case 1: + info->mso_stream_count =3D 2; /* 2 or 4 links */ + break; + case 2: + info->mso_stream_count =3D 4; /* 4 links */ + break; + } } =20 if (info->mso_stream_count) { --=20 2.51.2 From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7AE71F584C for ; Wed, 26 Nov 2025 06:54:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764140061; cv=none; b=oh94IIGgnJfglVBwWJAiCY+orq/Y23rv1mGzAS+9835rB6HVBY4hd793R90ZriLm6wiGK3iJ9CFW6mFxmiIpz0zNwJkGIRMbqC/uVDGBVSU0JfMwqaYTL/JtxnNxo19/8Ihmj50OiVXyG1m+BuTot7GLEOD8bChNi8J4ZBw94kM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764140061; c=relaxed/simple; bh=KFWXGfmi2VZlA9afnAnRHedV9RSiv6UUzXer7Dxp1O8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=V8j7d/0exuOGaHarMvObpG1Rj1D2xSwfby093woVj5qAO/IWF/OTcdiLyeJcTMmcXZ/Yn7URoqbohbN4X+aG/0ohbysLrYjdQpAAIpIA7NMaypQVjo8OuL27XyJPhdnEF4VHaQ3bjnN0jhNKQhfjjkZma2k7IXN3wSyLBLmQ+js= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=SMiVNYlV; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=oK2LcBfG; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="SMiVNYlV"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="oK2LcBfG" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139912; bh=qXRzwbpBEelV+7gq1ImfvH+ 6+TteQii+3ZvIXTpjkPE=; b=SMiVNYlVdMYtV0nXXRtPkyT+wiTITqsVI/3PMtg7ILihIVQIXW XtBFZQZxVnKsKtWCyqRPXW4ToD/UZDL9vpUYYOg1nETP5uRmHuSGkipigJBVvi+IigR9Q+457EU 3NWcefSO5+KgQW52ybHFtele5F+LoorN3k1yBAQeMc+Susa2NP7GrjX8dxLhsoMN8y/+M1R12uQ Xo5LKfTa0wQzKgzALie2H7WoPOnY1i//sm3wVBHEilsYFlcjzAbBsbR9lV0sXXFZNjFju7MxTuo xqBg+KqQEJjxACm8pYYKVGShJJeLGolsajCQtNf7uNR6lfbuOwgTI1pHAAoKFTYXfiA==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139912; bh=qXRzwbpBEelV+7gq1ImfvH+ 6+TteQii+3ZvIXTpjkPE=; b=oK2LcBfGVOWeW0tVPFpbsAiiCkwaajze3NnYTvW5hGm3l36amg l3C2UemXaYjz5c/fWeV0HfGLZW0H/wHDUVCA==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 4/7] drm/edid: parse DSC DPP passthru support flag for mode VII timings Date: Wed, 26 Nov 2025 07:51:23 +0100 Message-ID: <20251126065126.54016-5-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Yaroslav Bolyukin --- drivers/gpu/drm/drm_displayid_internal.h | 2 ++ drivers/gpu/drm/drm_edid.c | 12 ++++++++---- include/drm/drm_modes.h | 10 ++++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm= _displayid_internal.h index 72f107ae832f..724174b429f2 100644 --- a/drivers/gpu/drm/drm_displayid_internal.h +++ b/drivers/gpu/drm/drm_displayid_internal.h @@ -97,6 +97,7 @@ struct displayid_header { u8 ext_count; } __packed; =20 +#define DISPLAYID_BLOCK_REV GENMASK(2, 0) struct displayid_block { u8 tag; u8 rev; @@ -125,6 +126,7 @@ struct displayid_detailed_timings_1 { __le16 vsw; } __packed; =20 +#define DISPLAYID_BLOCK_PASSTHROUGH_TIMINGS_SUPPORT BIT(3) struct displayid_detailed_timing_block { struct displayid_block base; struct displayid_detailed_timings_1 timings[]; diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 348aa31aea1b..72a94b1713e2 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6792,8 +6792,8 @@ static void update_display_info(struct drm_connector = *connector, } =20 static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_dev= ice *dev, - const struct displayid_detailed_timings_1 *timings, - bool type_7) + const struct displayid_block *block, + const struct displayid_detailed_timings_1 *timings) { struct drm_display_mode *mode; unsigned int pixel_clock =3D (timings->pixel_clock[0] | @@ -6809,11 +6809,16 @@ static struct drm_display_mode *drm_mode_displayid_= detailed(struct drm_device *d unsigned int vsync_width =3D le16_to_cpu(timings->vsw) + 1; bool hsync_positive =3D le16_to_cpu(timings->hsync) & (1 << 15); bool vsync_positive =3D le16_to_cpu(timings->vsync) & (1 << 15); + bool type_7 =3D block->tag =3D=3D DATA_BLOCK_2_TYPE_7_DETAILED_TIMING; =20 mode =3D drm_mode_create(dev); if (!mode) return NULL; =20 + if (type_7 && FIELD_GET(DISPLAYID_BLOCK_REV, block->rev) >=3D 1) + mode->dsc_passthrough_timings_support =3D + !!(block->rev & DISPLAYID_BLOCK_PASSTHROUGH_TIMINGS_SUPPORT); + /* resolution is kHz for type VII, and 10 kHz for type I */ mode->clock =3D type_7 ? pixel_clock : pixel_clock * 10; mode->hdisplay =3D hactive; @@ -6846,7 +6851,6 @@ static int add_displayid_detailed_1_modes(struct drm_= connector *connector, int num_timings; struct drm_display_mode *newmode; int num_modes =3D 0; - bool type_7 =3D block->tag =3D=3D DATA_BLOCK_2_TYPE_7_DETAILED_TIMING; /* blocks must be multiple of 20 bytes length */ if (block->num_bytes % 20) return 0; @@ -6855,7 +6859,7 @@ static int add_displayid_detailed_1_modes(struct drm_= connector *connector, for (i =3D 0; i < num_timings; i++) { struct displayid_detailed_timings_1 *timings =3D &det->timings[i]; =20 - newmode =3D drm_mode_displayid_detailed(connector->dev, timings, type_7); + newmode =3D drm_mode_displayid_detailed(connector->dev, block, timings); if (!newmode) continue; =20 diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h index b9bb92e4b029..312e5c03af9a 100644 --- a/include/drm/drm_modes.h +++ b/include/drm/drm_modes.h @@ -417,6 +417,16 @@ struct drm_display_mode { */ enum hdmi_picture_aspect picture_aspect_ratio; =20 + /** + * @dsc_passthrough_timing_support: + * + * Indicates whether this mode timing descriptor is supported + * with specific target DSC bits per pixel only. + * + * VESA vendor-specific data block shall exist with the relevant + * DSC bits per pixel declaration when this flag is set to true. + */ + bool dsc_passthrough_timings_support; }; =20 /** --=20 2.51.2 From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F37853168EB for ; Wed, 26 Nov 2025 06:52:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139945; cv=none; b=cgM0Ss1Lvnk56PRfSsmAk39dVQL1PN2pkNvR8heRCQsjpiJpYXCXrA4qvcGHedBpliT/XuOdT+gktQoXQW6Tbsj2nFiJMMF1NQoutbi4qU92JHgv52ucmM6BHNx+ta3Sh1GjXDQkMDojnlVoBpMKVfhiKR1hqXr/elH5gmso5vo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139945; c=relaxed/simple; bh=ZBQq7HcEdi40D+o58hd5pkIr7j4Is9Ke1LtnpWpj+HU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ev2dqNvEUQPCRRbKwbmmfA92LFlYhkzbd1UHQYDkzMC3RkhPs9fGCQsJ8yPEcRxqC96dtE+KT+7MUoWvjGhyfuzP0rtGAbrEbkhqo/+YfgTRPEHY+H/amLUEaNyN4L1PK3YvDVHniGAF83vpKqiTuU2mXMv0zp3rd5cjJpJUiss= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=Z/tPye09; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=TJOxnYEW; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="Z/tPye09"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="TJOxnYEW" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139913; bh=BssbELFqqiAfaHRY+tK0FRe AvQAlEWMvvRZcrNJOO/A=; b=Z/tPye09Uc9EH7Lib5u6kSEPCZpVILgwZbfqXjJFIHv3pDQhhn pY2gCHVDoNbYSYL0IKG8lD0xEzYeWymuZhOcDGfGTE5ExfPT835qodmLOboT8Vfats26vD+yoRn tgAwwTcHBSSwND9T3SYTfJTxJxNJT+r+UBiPTmamlRshw6Xrim7/mYCflHJa5+WJ+Qhatl20mjp Ep5Iv/QCdkU2EpPCATgBMyyDzC505olTbpsK50tIOAF7aUuMzhBQ/V/d9HRyPJIeekG/LnjLZDP R3TSFrT5EepiStoyw+gVfIIBO5lj/+1a/StTUAptGGJHyXJGxl9kKNx6Q4Y51MUa6Ww==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139913; bh=BssbELFqqiAfaHRY+tK0FRe AvQAlEWMvvRZcrNJOO/A=; b=TJOxnYEWp93zdebRIUqEa9TnTyOEFQk6uaoVm2xA8yXzFwDmmE BF4/X5i3NbEh+BLhoEQCr+mjEEcQmPR8AdCg==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 5/7] drm/edid: for consistency, use mask everywhere for block rev parsing Date: Wed, 26 Nov 2025 07:51:24 +0100 Message-ID: <20251126065126.54016-6-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Yaroslav Bolyukin --- drivers/gpu/drm/drm_displayid_internal.h | 1 + drivers/gpu/drm/drm_edid.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm= _displayid_internal.h index 724174b429f2..55f972d32847 100644 --- a/drivers/gpu/drm/drm_displayid_internal.h +++ b/drivers/gpu/drm/drm_displayid_internal.h @@ -139,6 +139,7 @@ struct displayid_formula_timings_9 { u8 vrefresh; } __packed; =20 +#define DISPLAYID_BLOCK_DESCRIPTOR_PAYLOAD_BYTES GENMASK(6, 4) struct displayid_formula_timing_block { struct displayid_block base; struct displayid_formula_timings_9 timings[]; diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 72a94b1713e2..7bdc99d5084a 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6906,7 +6906,8 @@ static int add_displayid_formula_modes(struct drm_con= nector *connector, struct drm_display_mode *newmode; int num_modes =3D 0; bool type_10 =3D block->tag =3D=3D DATA_BLOCK_2_TYPE_10_FORMULA_TIMING; - int timing_size =3D 6 + ((formula_block->base.rev & 0x70) >> 4); + int timing_size =3D 6 + + FIELD_GET(DISPLAYID_BLOCK_DESCRIPTOR_PAYLOAD_BYTES, formula_block->base.= rev); =20 /* extended blocks are not supported yet */ if (timing_size !=3D 6) --=20 2.51.2 From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF5E31F584C for ; Wed, 26 Nov 2025 06:54:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764140068; cv=none; b=UNvfV7yRD4PKaGg17TOHWK6b0qt1TYnfMt3sfQoaiNO2MmLrMIoUq9LNnf6Cp3fM+Xh0k5IKebxz95j5NRSIrXYlbSnkmq5KCtVaKWgdTCpDGMVSqj/lgb/njQ4I+Ea6RHwXMIa3qYGUK5pkxaZjRARLHPMFNSdtil7GhsbXS68= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764140068; c=relaxed/simple; bh=Owe17a7iourd5sgLfM6x+Y6JwD1zHJd/mvIEzj0rEwE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EgvOnDcg8ig/gSKchWLu/v4iF4GmEz8ZdvMoSFW/rH0pEeGRJUUEgR/Vz9dYJKZPrKhf2o7DvfT/dc+bHd2IEpZbXOf4gQktpRHEmy4jiAJfiw6oR05skJHeznd8nsJRdvBqHgrGtvz/DftKkdaoxsHsG+mo5VcO8Q/g7VjemqE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=mOIkQpnd; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=XHLTXA3J; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="mOIkQpnd"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="XHLTXA3J" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139914; bh=iaxEEdgH2YAVL2ApCrS8e3i bBCzX6SObbdVb4noOHbQ=; b=mOIkQpndX5Yx99dLSnVXh3hNhyRyM/r0WZUVWeEAxGXLpYOgnv guzST+oRkrfsz1/jfk8SRLgx3djz7m2Oa7I9+XYyL1V43KTsG7m2qgM45IaJGi8i8iwX2p5qYge 1xfOnTojc+LBqZ15mxKui9ht3eJ4NtR1MZMCkUHjLN/TraAOuC9tr/+1c8M0wx7pUaeBXXSx1oC yOveni6TF6gfnosun8fYmHNHSvpS7cXjNdBQ08puVxaHV3CFruYvByr0/LR9dflbTE8iPXHCRn/ QC8J3PgyXhgK6nw2H2syjf9PYE49SvbhVfNpFnyd7pH07NhG8lBGVp5OtwUKLZhObeQ==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139914; bh=iaxEEdgH2YAVL2ApCrS8e3i bBCzX6SObbdVb4noOHbQ=; b=XHLTXA3JyZOZCArz6PYp+hulL5tLt7RMDAzOn3dgrAH0MFahl1 6cKA16i2qFDk8WnJ4mOr81y4DN+Da26Z3YCQ==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 6/7] drm/edid: parse DRM VESA dsc bpp target Date: Wed, 26 Nov 2025 07:51:25 +0100 Message-ID: <20251126065126.54016-7-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" As per DisplayID v2.1a spec "DSC pass-through timing support", VESA vendor-specific data block may contain target DSC bits per pixel fields, that should be always used for the VII modes that declare they only support working with this value (Pass-through Timing Support for Target DSC Bits per Pixel). Signed-off-by: Yaroslav Bolyukin --- drivers/gpu/drm/drm_displayid_internal.h | 4 ++++ drivers/gpu/drm/drm_edid.c | 16 ++++++++++++++++ include/drm/drm_connector.h | 6 ++++++ 3 files changed, 26 insertions(+) diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm= _displayid_internal.h index 55f972d32847..8f1a2f33ca1a 100644 --- a/drivers/gpu/drm/drm_displayid_internal.h +++ b/drivers/gpu/drm/drm_displayid_internal.h @@ -148,6 +148,8 @@ struct displayid_formula_timing_block { #define DISPLAYID_VESA_DP_TYPE GENMASK(2, 0) #define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0) #define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5) +#define DISPLAYID_VESA_DSC_BPP_INT GENMASK(5, 0) +#define DISPLAYID_VESA_DSC_BPP_FRACT GENMASK(3, 0) =20 #define DISPLAYID_VESA_DP_TYPE_EDP 0 #define DISPLAYID_VESA_DP_TYPE_DP 1 @@ -157,6 +159,8 @@ struct displayid_vesa_vendor_specific_block { u8 oui[3]; u8 data_structure_type; u8 mso; + u8 dsc_bpp_int; + u8 dsc_bpp_fract; } __packed; =20 /* diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 7bdc99d5084a..b2502be2e807 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6591,6 +6591,21 @@ static void drm_parse_vesa_specific_block(struct drm= _connector *connector, connector->base.id, connector->name, info->mso_stream_count, info->mso_pixel_overlap); } + + if (block->num_bytes < 7) { + /* DSC bpp is optional */ + return; + } + + info->dp_dsc_bpp_x16 =3D FIELD_GET(DISPLAYID_VESA_DSC_BPP_INT, vesa->dsc_= bpp_int) << 4 | + FIELD_GET(DISPLAYID_VESA_DSC_BPP_FRACT, vesa->dsc_bpp_fract); + + if (info->dp_dsc_bpp_x16 > 0) { + drm_dbg_kms(connector->dev, + "[CONNECTOR:%d:%s] DSC bits per pixel x16 %u\n", + connector->base.id, connector->name, + info->dp_dsc_bpp_x16); + } } =20 static void drm_update_vesa_specific_block(struct drm_connector *connector, @@ -6639,6 +6654,7 @@ static void drm_reset_display_info(struct drm_connect= or *connector) info->mso_stream_count =3D 0; info->mso_pixel_overlap =3D 0; info->max_dsc_bpp =3D 0; + info->dp_dsc_bpp_x16 =3D 0; =20 kfree(info->vics); info->vics =3D NULL; diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 8f34f4b8183d..7decfc288aa3 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -837,6 +837,12 @@ struct drm_display_info { */ u32 max_dsc_bpp; =20 + /** + * @dp_dsc_bpp: DP Display-Stream-Compression (DSC) timing's target + * DSC bits per pixel in 6.4 fixed point format. 0 means undefined. + */ + u16 dp_dsc_bpp_x16; + /** * @vics: Array of vics_len VICs. Internal to EDID parsing. */ --=20 2.51.2 From nobody Mon Dec 1 23:33:43 2025 Received: from mail.0la.ch (mail.0la.ch [78.47.82.197]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA90423EA81 for ; Wed, 26 Nov 2025 06:52:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=78.47.82.197 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139940; cv=none; b=C7ymTuk42RBz9C+WkD5K0dmJvuOTS7bnUC3RtHH/Ft5RGj++mH+d4ateesTKq9RsGMkeTGxEyjkyVYSVcvqGnopRc/b07BwPCY2K+i5Hvo8mp51j+3syWloSN0crg4Es9FoJp+99lT8y6Lf61u0+2zdtdeioUypBc7dZKEq23Ho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764139940; c=relaxed/simple; bh=JWWSnSEw8EvlR881rgFPO4eJCsGEdz9Mw2l8vrOzV60=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=akzyjK1Vs/99hYgQnGDP32cJDFFMgErRjpJPWiLBuPChGm0fq6XO/V1dH31B86kicJWCDXhjlP8neCn3veWUTrxd9/li4JITvJYx70bY0JSISCAOccpaiv3Z+yGltdvHtNE/YRFBS9LdoFTG/9g1TcvV7WqBH55+9Y76MbdmumA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw; spf=pass smtp.mailfrom=lach.pw; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b=PDKZMoa8; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=iP0Uvxxy; arc=none smtp.client-ip=78.47.82.197 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=lach.pw Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=lach.pw Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lach.pw header.i=@lach.pw header.b="PDKZMoa8"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="iP0Uvxxy" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139914; bh=xBHAbfvs3M52TAGHXMuwouD KJD5Hy5FqWvdsrTLN97w=; b=PDKZMoa8q/NuKWDviDdRo682mMMyHRWY/WMZVJvoUcsgiBbDmf XiR3qt5APE2cAfU/V/tezlVM+VYEBgNRMKvGo0JMyQcF5Mk9dWTaeOkIZ28n0dPnaVTJ4mNQsff ZmlYsL4M2BWs8MK5NFYbbxkT7BmOwj17HFNyxWnEukffBL/dRGv3cXTnuHBwo1Z5PLWlLuEtNXb qdTUJ0GTR574atCJ87wziLgdCNUbUsAEfnxcV7mLVFKPLRCqIloPixV6pDqF24dOTpwJD6yHBr9 f5RLf6QvIsBCioYDZo38wx+PXniTuRDwHv2XjClNlOUDcA2+9CuAVU7mtN5gXMwZMTg==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1764139914; bh=xBHAbfvs3M52TAGHXMuwouD KJD5Hy5FqWvdsrTLN97w=; b=iP0UvxxyHoAGWMnLEAT4DoO+3yOQ3OEc98OJ39jeXI/cPFpSZv +YZab2VhY79iH5MkpRlWYKJuKUd1LCRk57AQ==; From: Yaroslav Bolyukin To: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Wayne Lin , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Yaroslav Bolyukin Subject: [PATCH v6 7/7] drm/amd: use fixed dsc bits-per-pixel from edid Date: Wed, 26 Nov 2025 07:51:26 +0100 Message-ID: <20251126065126.54016-8-iam@lach.pw> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251126065126.54016-1-iam@lach.pw> References: <20251126065126.54016-1-iam@lach.pw> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" VESA vendor header from DisplayID spec may contain fixed bit per pixel rate, it should be used by drm driver for the modes that declare they are only supported with the declared fixed bits per pixel value. Signed-off-by: Yaroslav Bolyukin --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index e6728fd12eeb..32370279283f 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6613,6 +6613,11 @@ static void fill_stream_properties_from_drm_display_= mode( =20 stream->output_color_space =3D get_output_color_space(timing_out, connect= or_state); stream->content_type =3D get_output_content_type(connector_state); + + /* DisplayID Type VII pass-through timings. */ + if (mode_in->dsc_passthrough_timings_support && info->dp_dsc_bpp_x16 !=3D= 0) { + stream->timing.dsc_fixed_bits_per_pixel_x16 =3D info->dp_dsc_bpp_x16; + } } =20 static void fill_audio_info(struct audio_info *audio_info, @@ -7071,6 +7076,7 @@ create_stream_for_sink(struct drm_connector *connecto= r, struct drm_display_mode mode; struct drm_display_mode saved_mode; struct drm_display_mode *freesync_mode =3D NULL; + struct drm_display_mode *dsc_passthru_mode =3D NULL; bool native_mode_found =3D false; bool recalculate_timing =3D false; bool scale =3D dm_state->scaling !=3D RMX_OFF; @@ -7162,6 +7168,16 @@ create_stream_for_sink(struct drm_connector *connect= or, } } =20 + list_for_each_entry(dsc_passthru_mode, &connector->modes, head) { + if (dsc_passthru_mode->hdisplay =3D=3D mode.hdisplay && + dsc_passthru_mode->vdisplay =3D=3D mode.vdisplay && + drm_mode_vrefresh(dsc_passthru_mode) =3D=3D mode_refresh) { + mode.dsc_passthrough_timings_support =3D + dsc_passthru_mode->dsc_passthrough_timings_support; + break; + } + } + if (recalculate_timing) drm_mode_set_crtcinfo(&saved_mode, 0); =20 --=20 2.51.2