From nobody Fri Dec 19 20:53:42 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 55B232877C2 for ; Fri, 17 Oct 2025 16:28:20 +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=1760718503; cv=none; b=Jmk1qSjuduB4yRtOLyYj6XBvhUwGQ9fM+9v3m2Gu08mLUyp6C3pDmqJKUhLJ8G6kRVhiU1OYbaq2XK/WLKA7p4YHt0K6GaVb9HHtpT9nM+LwiFmoINzYi5GiVNNsdXT+dVNWkzZiZNKgR2cg3pnOzsp8t+6CxMEydjzeYtvegEM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718503; c=relaxed/simple; bh=JO+zCEoLR5+AqKWtcuvPiErpr3/jceX5afNZook+voo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FINmyMoXpv4+rTx8toXJ5bWEl2+06YgaGtBB+26YFEGQ9EVvEgcZ6+ByxFiG49f1U5WfEU/cJOOyu9xzj1DYfGWGFuquxF0f/mAX8Q6ld2uvcIL+iZTyfXygDV8/Kt4QvM8j11xDQpyuOgEpF0wj+BZ1/LDfvKwntxBiR4Uf2pw= 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=Zsy8CkoL; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=/wCOTQlk; 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="Zsy8CkoL"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="/wCOTQlk" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718480; bh=FySvhxgkGPeEce3SsSP+zgs Qe5XpsgsiK22GvDAXT0k=; b=Zsy8CkoLpRzeAbXtMsK6wQjVizDFWmG3thi/0CONQLus7t9j5U JThsjA9WaEZeoVWq1xKeEGOVhDV+EP834vWlBnPDDMeASDoQGcFPUPmFZsW5Ot+cfz5UJ4xgBGT iBXETSCf3duhdBMqmjT17cNKBHv/KuycDTBSiDBOyHirN2hOIGs4jAm5m15D817PI00wBEAGQHP 80Ol+PaCpbh6ewQbXZpJdXWk+72G8mwmcPh1j3x9ks46pR3pLC065KNb2q8uWdKgH2KWCQDm4RP +S3/DM+hmsrnXm2JJQlCaNCl8AE43Px6Qo/x4XGSFHXyQIqSWJASjeNInD8FKrMOtuw==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718480; bh=FySvhxgkGPeEce3SsSP+zgs Qe5XpsgsiK22GvDAXT0k=; b=/wCOTQlktcCTumqs5csZjjrMi5y+59YiUCTusdRmhNkAAAb09t eGt75Fe5zYX/qe1hgFPI4uSLjhXSU+2ddmDQ==; 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 v5 1/7] drm/edid: rename VESA block parsing functions to more generic name Date: Fri, 17 Oct 2025 18:27:30 +0200 Message-ID: <20251017162736.45368-2-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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 --- 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 e2e85345aa9a..4fcde52291ce 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6524,8 +6524,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; @@ -6584,8 +6584,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; @@ -6593,7 +6593,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); } @@ -6753,7 +6753,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.0 From nobody Fri Dec 19 20:53:42 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 7257E29AB00 for ; Fri, 17 Oct 2025 16:28:05 +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=1760718487; cv=none; b=gPuzjwKuQdv2DNh7PPbbc4EP7cXMpJnCMazk5yR18HSf+pINWtt35EPbBrZM0TOZcd5jTkMtSE+gs8kMIm8ws9hRSSgLdgAcEXHE85QqiMOi/+1Pt8UTDqchL09PjOXBCyaIVFKCfeS1wp5Q0YvsbLbOJUGKsmO40ekZ+aAxCJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718487; c=relaxed/simple; bh=J8nATLSpNDCuuYPy8nc9Jh3EjXH/HS2salyTmzYCVU4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kq/tG6NwXBevmHart9GwxWyI9EwJXrz5y5dfZ2l8pROqNi1A804NTwVmNWgYLAxpPYvAQUL4J25nBS9xOqxGgsAKsmOMZ/rs3eJCA8odBr80K6ecAdrCT5KBAxv/upVDK4A2nWFQVr3OpDArRWqUEZbMBrfHM/GdcbP9e6W2GwE= 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=BZAmcj42; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=7tnaCM6o; 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="BZAmcj42"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="7tnaCM6o" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718482; bh=G0cUjhPXLsNiRSzg25M5MDh tPLRayvef22yIVqM4pgw=; b=BZAmcj42Tx4KgCUm7gwuhiu23+4lWTXljxM1DgM5pw0lUo1shr bjUuMdS5qphyFhTX5yv4heg1KbfxDnAgaGg6W50ALBuvtS4/E81Fu0LFYmWpvJbIDrkHf0qvRtl KkJUq52WvtFp9HXDG8u/WGM06P1yavQjyalNZvqWlTvxGgXmRRhzgqlDINnCE5UciHKIwGDbifc EEt4U5tF9R/vrZsPCeCYb+xfw8Bj02isOXPJzUwCPXuAFLuXklN7o9MN7S8RjAolzlQsEzktJ+g q5fCLpajAB67CwXhXY1UdOpf2xFONTp3as+dBGn2ZRD2RuaXuAJkCWHfCVZMNO1Cjdg==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718482; bh=G0cUjhPXLsNiRSzg25M5MDh tPLRayvef22yIVqM4pgw=; b=7tnaCM6oVQtil/Mg0gF5n7TynT9nM1uOFUikgWxSpjww/vsIHr ux0+oXF2ALeUBjyvUXnwNF3JkdiE+mzUdsDA==; 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 v5 2/7] drm/edid: prepare for VESA vendor-specific data block extension Date: Fri, 17 Oct 2025 18:27:31 +0200 Message-ID: <20251017162736.45368-3-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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 --- 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 4fcde52291ce..725ae5f9d160 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6541,7 +6541,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); @@ -6564,24 +6564,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.0 From nobody Fri Dec 19 20:53:42 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 B284D29B8E8 for ; Fri, 17 Oct 2025 16:28:12 +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=1760718494; cv=none; b=UtggMARlNrcOjWHv8nraxZozsrDmahVMhkIk+Y06xvz0lyXIPGgN6RT6CN3kAM+aL1EEEXD4BhqWqxyBVYg5AxzcxQIPpC1BxowH7KYB1+x9eheuxTbpI5lvphNZJrNNjh2CV/T5xuMPmUmDYi5B2cnqWBtknum/Pl1XxPlQPV8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718494; c=relaxed/simple; bh=YF3l1u3PmsBLwR+UNxnmRGZzzb51b3VcECXyD5/IGF8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cMYnFPlxoFEteJ0IwS8xqBkG2PbZNRkcEJozS+Z+XS/SQoqfCdlWpavhkFkkmJCDI7Fylq8qavq1+9rfg0RD61cv1XdpLakv3xFad6awTkXFKCJSPl7pNUMVz6TEydRr9P1MMq4w4gYE+l90lSMQLEZVB3y0RWtFfazCpxrXETc= 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=SdZ8/Tg6; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=pwafDzmi; 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="SdZ8/Tg6"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="pwafDzmi" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718484; bh=tkZaVmRUXdPAjuJv58gTfdS fvXH8Wk5tCy/l7rSz2E4=; b=SdZ8/Tg6ZhrAMckZVyASP1JREdO7KvYPiSNbVktIDgwkryrAhb ks7Ex/wcg5RbW/seWTgMf6sxwN/g+NgdQ39UtVn0tE8k7TLVlAYBZOA/nEWSRRM3vchc/9S3afQ CE7WFG9ID258nHZKQFDyoGWrnposCZpb0xDqIrxAvvfOUqgHHyH13IPmkbdmze3l/+FNhl9+nVJ EKRSqOxZWctPm5BsdsQxRuPIwe2bJZA90t2U+WghfGXI3C1DW5psbwPXCkkP2dT/m8By6mDgIGg C1a9J1+KUHBG3zKKX5LUNHw9w8DgXs9w+Ca4K6ilGyCaudw9Pp5ZEOk9+OAlbRpn3YQ==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718484; bh=tkZaVmRUXdPAjuJv58gTfdS fvXH8Wk5tCy/l7rSz2E4=; b=pwafDzmip/JEI2Frv5sDrI2Jrclax1j2N8a9zBdLUYSDopSNoD +AVcbiYg31S5N0vO9Xto9x/J3ag+6WUWNQBQ==; 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 v5 3/7] drm/edid: MSO should only be used for non-eDP displays Date: Fri, 17 Oct 2025 18:27:32 +0200 Message-ID: <20251017162736.45368-4-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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= shallbe cleared to 00b (Not supported). Ref: 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 957dd0619f5c..cf02647b41b4 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 725ae5f9d160..13df2854617c 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6530,6 +6530,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, @@ -6548,20 +6549,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.0 From nobody Fri Dec 19 20:53:42 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 D34062BE636 for ; Fri, 17 Oct 2025 16:28:21 +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=1760718503; cv=none; b=WhtZlHxGnTuAh7xrMo64QDL92ZERa03w21mDPT0EiqwjHDMvqo8EqYfvEXGYZKLvPoNV3dCe5iTbpAAJyKC5pPaQUC9xYHtNSGo1Y7xpqIgSoMuvIgJSgjKFOfPv1VCEEWU49aemugED8ET9hmDie2PZUVFQBcLPlIxMeCq27dc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718503; c=relaxed/simple; bh=dhxuSs0Eg5RXPqvRYpiWUe7SGMSPIhsS7k2YjYyD3PU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=huN8nn0cwFq/xCAgfr5/+cSv6RXSiJskW/dpyOjCr8LIid51/JqFnl46PuOGE4oWlT6ZzsgNS0OzprXD6OadFyMtuzQM9sbIn1CBVlV+yuhloF4jU7g5soDzKzvcY4GW3v2B/ztMoc2H3faDydfuqEMJJWZeAJcrN+kqW/KbLeI= 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=dFqX/jqh; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=cSUrRgf+; 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="dFqX/jqh"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="cSUrRgf+" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718485; bh=NufhvGOUoGO8cO2DoILbVLI HbV3cGuMJ3y4xsqaQ+zo=; b=dFqX/jqhjM2Xic9smDGCkjeuDc9Rf7mmSsYfpZBYY5W+Fnqqse VHepF+REDFoxAmbSDPtLHxio1J3BmmQGT9P917MeIuuBeSR7p9vIXS5nHwSqLpdrO35IAzqcign +5FeB+82hCjfaWP0IdW5TCh1KD6LMGH5s1PEAm/300EhUOkisGTWh+R5Y3zvM48ts7EChiLuVCL TkcB8L8gnWcg5ONYl4zyAwVjgi25+pjF1y9Ww1dsl2AnIuXkmanabF1kW+AVSSh/+bpxmyCYaqo 1Dn/ZGPHAl9b81DWOptY+XF1qycYsoILCqCNFIUWVZTfUABLj0kz77Vx4BiDRqFo5dQ==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718485; bh=NufhvGOUoGO8cO2DoILbVLI HbV3cGuMJ3y4xsqaQ+zo=; b=cSUrRgf+C4c+M0zvyGZzi1FYQXF0KiF0sYpJbqGQSvgBBSUwo8 fZjf9qMETL1SzE2KXDdo3XSwdCem61esjZCg==; 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 v5 4/7] drm/edid: parse DSC DPP passthru support flag for mode VII timings Date: Fri, 17 Oct 2025 18:27:33 +0200 Message-ID: <20251017162736.45368-5-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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 cf02647b41b4..8ea20b1c6921 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 13df2854617c..a1dc4331c4cb 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6789,8 +6789,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] | @@ -6806,11 +6806,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; @@ -6843,7 +6848,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; @@ -6852,7 +6856,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.0 From nobody Fri Dec 19 20:53:42 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 4E11C29ACFC for ; Fri, 17 Oct 2025 16:28:08 +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=1760718491; cv=none; b=ZmDMjxtb9S4LAKQOKlBDywX7qXvt5GtkAknKvYL3uplvWjW2ngxmdoQIs66EdWi42f7XGQjeb5QxD6T+18B+MwmiFfS4crIQqKkyMAuog1fg3AUNmKviDAdmuyLfBdQSiKTvMLYbayCd4NxfKeRqsce0cUzcVjz/hfbE/UjjdSI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718491; c=relaxed/simple; bh=XlyX9KmI/7XEg1SE673Vd3+JhEoYiltwfGu9yc/mFYQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YFeFyHRuFhe13GBOWvRHnMKdMj7FcJk1XXlPzp3peYYv3UiqH/2uO5tr1k64sU1BCtAllN7yifA4Q8pqg+0n6rDK4yUFwLaoBBakML28fIIU/AjEF2ZqEtulwQtDmsxO9bV3k6lJnIrb0olFCvsNE8DRo8yYkBgoRfTsTS3MM3Q= 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=hQXiHEHg; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=lj1oZQFj; 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="hQXiHEHg"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="lj1oZQFj" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718487; bh=poaIqRqvW/uM6YSuZpkgeWn 8oXL5zJSPHa0GURysBWg=; b=hQXiHEHgbNGumN4uXpV4/QfOhrrJYnQTiZYptd3kmnbwfH21NV gTg+0dehgMMYuRAaaOSxv6zstyW2s4vxzy6bT9Nbgi7r9L4LoHPM4NIjYmP12a/nj1RoXm3kYJJ +u+Gr3YqyhkO4cLk8BvVMMhOOzMMJViBphul/+9WLRYkyd+3/HqXHVlRqoIn3tMq/Jgv7R0FTD6 VZfPM6vYOgZ2bgSzzIOgb+U6x01xPKf0z/CfYWGFxFGNtcW/r78KYt8u+gQhAx5gzB0X02HODpR ICpFifwURi85sz8Jnwn2WODzWHugEWQc70p7Y70mXOGK+/2+jq0/7gPea7VKKwRKl/A==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718487; bh=poaIqRqvW/uM6YSuZpkgeWn 8oXL5zJSPHa0GURysBWg=; b=lj1oZQFjZZbnx7CmhOCMZqlySVx9AnTa8jFvbWHCJ+IetpHg0F rwQ4t8cbVg1AUpFWpoBUHuDkKCAHdCovqiCA==; 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 v5 5/7] drm/edid: for consistency, use mask everywhere for block rev parsing Date: Fri, 17 Oct 2025 18:27:34 +0200 Message-ID: <20251017162736.45368-6-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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 8ea20b1c6921..38f9d628e2d6 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 a1dc4331c4cb..4fa39989e446 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6903,7 +6903,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.0 From nobody Fri Dec 19 20:53:42 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 CBB25299AB4 for ; Fri, 17 Oct 2025 16:28:17 +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=1760718499; cv=none; b=dvF0ItDH69PEvgnUyO8jzPxPrf64a2ZZfixvYczagOCC8iTRAiIUiSmQj43sHcRo9Xvbh0lqCMtOvLCsGrJoN8BXYcjEg9i3iryrc6hLemuLUmJoueNH4Jf+OHjdpAR73/E86uhvZDxhQD7IciqzmARrQqrUbCczWiWDKmThLqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718499; c=relaxed/simple; bh=TGgNbmie2d2l+C4DMiHoryTY1ekn3hrtWDQmEiYx2F0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iVkys1k5l2IrXPm5hZxuXTPvAdO1b3xRI7MkAcLTdI2e3IKCtdtvVrHZrhCt+hy5DgHA4PNQGH4enkPcGUZrgl8U9X/j9FhrMXx0efAvQvHWtGQrsKmbR5nc9obSkYl8mVig2wqR0FrMWwTBDC8Lg8HBIiImQ98WO8a1HMI6YTQ= 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=a78LpD75; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=40Cjxs8R; 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="a78LpD75"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="40Cjxs8R" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718488; bh=JSILuT7pxts1tl7Z9YYelL4 TmLbyDJQ7KE/9p1BUbKg=; b=a78LpD75Oy+5RSAYuG1Ad3igqSxkA/aaYy1kl/Lres7H1uLFY9 Y8+bfivC3peLK1X/6ztDKt20/G6lePd8va/o84E0fnUP/vze9e9w5B1a6VI2xWA0L5FFmXISTFz Qoo09/JrRhWyp3Fgtv7J/V1tPZryXpzKsBVvv08cYzL8CEvhjGidrwNUCGSkx8DdS5hB78GNK8k OQ0IxX1zcbBwzr9pXg3YNQwuk2efL/JLLDpTO+lEpPFEEhxX73c+Ll73z0NUx5g4V08J5l7O4tP fItkk+we9a6m1uoEyeWzA/ixzZRqC5v5SObL2uoRiMxIGNTRpg4vqb7QcgpCptjmBzg==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718488; bh=JSILuT7pxts1tl7Z9YYelL4 TmLbyDJQ7KE/9p1BUbKg=; b=40Cjxs8RtzhDNUVM89j9X11MTt2BAGg6c5VL3Q0FsquerniJaE BW+ra851ecf2mDHc3m9w1Kf/YqiFapW8RTBQ==; 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 v5 6/7] drm/edid: parse DRM VESA dsc bpp target Date: Fri, 17 Oct 2025 18:27:35 +0200 Message-ID: <20251017162736.45368-7-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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 38f9d628e2d6..7246ffdcd908 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 4fa39989e446..1c51158fa3a3 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -6588,6 +6588,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, @@ -6636,6 +6651,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.0 From nobody Fri Dec 19 20:53:42 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 E7C2E29BDBA for ; Fri, 17 Oct 2025 16:28:14 +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=1760718496; cv=none; b=MKQOp2c/JBRkETeWzMUzzvPBZF0V1811LPFWaybikclY5TdfeRr4R69fLkegsPK1p47AyfXLTcZj8Of9q56GCueEysipyWHDNSrZJNajYuFcoRSRr5pdnNvDSwRSIINO47dq4FoYVKhLMVxDWn0p6NG/8XoQU+xgsT/EVdg3p4s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760718496; c=relaxed/simple; bh=4oAEoeB1mFtG0XtyAa/+4j5yC1oh80L70QHYtqE4Fm4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bdDVoB3I49pG7GquPi6iWwHqIeBQ2QX2BTvFiwIbrISrZOwjmDyChAdaD7C6ObkXPZq8yJAU5ccAkrfECRBpeQ9JPeBw7Fnq8wED5j/qAMayIq7rltVY85rWjCtV1U5Urstu3Un60MZjqvS7PxiGkc3qc4noEJVSGGZr1Wphwsk= 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=EFplJfyJ; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b=U5669QGm; 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="EFplJfyJ"; dkim=permerror (0-bit key) header.d=lach.pw header.i=@lach.pw header.b="U5669QGm" DKIM-Signature: v=1; a=rsa-sha256; s=202502r; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718490; bh=i9hlKm1uSeiiZmxzIePKHJs FghgJVFB5WZw8+mDTUPw=; b=EFplJfyJJoitcPwcsbwdy5k+puBP4RaTYvZTqH9xG370gTOVM7 XtE8rWdlfVFMjmFRtdOsP/VLtK66hH9TnLelszHq2b/+CT+8h0QZ/ONMvu5rpfYscdYeIigU9lu 1MBXlw5nsHTjjbpr+v6RoZddAkCvP8gZN9Z41Rc4y/kjvS9Plzi8v+k5TfjEgCt2Wg3c6e872wh HnIHrCdnUv2mdd+9Bo2uG21vDYxnRsbM2qgNXWTYFfaHeWNitMSDU3VM5JziYPnxVNLp3TFXIKI jLxh28X/CsPgY/RS6d+PiKNGplYVecmPZWjVIZsrX0V+/iR6shghgbvHRmGGniXSaDQ==; DKIM-Signature: v=1; a=ed25519-sha256; s=202502e; d=lach.pw; c=relaxed/relaxed; h=Message-ID:Date:Subject:To:From; t=1760718490; bh=i9hlKm1uSeiiZmxzIePKHJs FghgJVFB5WZw8+mDTUPw=; b=U5669QGmRWqlZWa8ap/q7ljLN8cyBMgPlOdCAOoNMt4IoTM9TD 6K8Lm8Rqi+8ozJiDsbA0M3nmpAFHyPl2q3Dg==; 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 v5 7/7] drm/amd: use fixed dsc bits-per-pixel from edid Date: Fri, 17 Oct 2025 18:27:36 +0200 Message-ID: <20251017162736.45368-8-iam@lach.pw> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017162736.45368-1-iam@lach.pw> References: <20251017162736.45368-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. It is however unclear how to deal with the modes created from userspace. Current implementation assumes that fixed bits per pixel value should always be used if the preferred display mode has this flag set, which is the case for all the known hardware. Signed-off-by: Yaroslav Bolyukin --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++++++++++++ 1 file changed, 12 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 0d03e324d5b9..739d5dabcf41 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6521,6 +6521,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, @@ -7067,6 +7072,13 @@ create_stream_for_sink(struct drm_connector *connect= or, &mode, preferred_mode, scale); =20 preferred_refresh =3D drm_mode_vrefresh(preferred_mode); + + /* + * HACK: In case of multiple supported modes, we should look at the mat= ching mode to decide this flag. + * But what is matching mode, how should it be decided? + * Assuming that only preferred mode would have this flag. + */ + mode.dsc_passthrough_timings_support =3D preferred_mode->dsc_passthroug= h_timings_support; } } =20 --=20 2.51.0