From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=185.171.202.116 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1792687137; b=Y+lf8cG7L4bJdLYlXO7qizGsRCXG6O243iSmI818j+2famch9084iu0Q8bnfzc4HDRsX BlTQeiJcyVoXj/VeLbzVi4hOre6WJgXrcJMSJ79E99zs6h9kIERmzR5skgYgpimk9JFVP p9kJ5llK5sTVdelDEUlSGylBfSGJKb6dY427olBOgduq/ftPAf9NtUDFIbuxyw68x1Emf 27LTMPyACMflWaxhnJrvkPbkeDdAQwkLSAJwAbYYLDzCYUkXYrs5bCL9sH61tmi5QO6r4 mcW5YhYnJaUcpyZ/oWmrKO2HmCH0OAVQ78ObJv2srpBLoUBKGE2wcae+tEWIlxXlxSg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1792687137; h=DMARC-Filter:Received:Received:Received:DKIM-Signature:From:Date: Subject:MIME-Version:Content-Type:Content-Transfer-Encoding: Message-Id:References:In-Reply-To:To:Cc:X-Mailer: X-Last-TLS-Session-Version; bh=aLnxQe0t6sB76CvRXIDzrDWIY/E+K/QEFm3Rehma14M=; b=E226ifJPRcsYUvBp1ikNia4FRCkokpZFSmLILGltbUsPwRO8cg1cqYKo6rUC6mRP+VV+ hdMTdiFM59oKoPVibVRsYn/ngwUP9l+FtTn0BuZd5QS+SjOHqML4fhmPXx7f2H3tSITyO KowxNg+IjVl9tsVXdUU4b6jxLWUBHnJtOFLg9mbGmhGtyFEcbYiK82YV/f94D8erL16YO 2CdhaX70eHt/EATOUclwCqRcaEXBZV/wYbuOE8bGVNGu6wCt2frDXlF3w01DXZqa5xx9o H/UJjgeOINmSNeEo0jw6nwGXGOufsLnYGqm+H6UYkPAEQIavXCXLJ2sB2cW67rE8a1g== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=dkim header.b=gg4WcNUb; arc=none smtp.remote-ip=185.171.202.116 Received: from smtpout-04.galae.net (smtpout-04.galae.net [185.171.202.116]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87E4C606A31D for ; Thu, 22 Oct 2026 16:38:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 87E4C606A31D Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=bootlin.com header.i=@bootlin.com header.a=rsa-sha256 header.s=dkim header.b=gg4WcNUb Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id CC875C5847B; Thu, 22 Oct 2026 16:39:48 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 5F0DA60763; Thu, 22 Oct 2026 16:38:49 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 5A66A10328F94; Thu, 22 Oct 2026 18:38:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1792687123; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=aLnxQe0t6sB76CvRXIDzrDWIY/E+K/QEFm3Rehma14M=; b=gg4WcNUbW4hlk4/nbzNubX6LJYNCTI4HLbAi5uChzGwtzVP5tqPvhMMjomE+LRaVFsCuxJ vBXK81VvopK2OOfl5M42ySn9ChqfBeGSx/4efvu/IDwlxE11LJAf0Og228RIYQ7j2yW5yy 2aFiAy3gJRjLEpi5u8HHYmLc/DYVuz45EArTboC00oYIZZ3LQg9r/7vMdeVmEm9B7LIn5c DNfMwdhiaSCsps36QW3hlUnqJCn03BVJ0TXhsSvNab565lJWYzDPAu7hCCNZQjf6XumcRZ J0WR5jFaZ5ZCr07a6l6HmMwYvWuW0738D3JYlKtIZXcrkmiktSru1sjCVCafQg== From: Kory Maincent Date: Thu, 22 Oct 2026 18:37:58 +0200 Subject: [PATCH v4 2/8] drm: Move DSC capability reading helper out of i915 X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261022-feat_link_cap-v4-2-a4f3f6e8cad9@bootlin.com> References: <20261022-feat_link_cap-v4-0-a4f3f6e8cad9@bootlin.com> In-Reply-To: <20261022-feat_link_cap-v4-0-a4f3f6e8cad9@bootlin.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Rodrigo Vivi , Joonas Lahtinen , Tvrtko Ursulin , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno , Dmitry Baryshkov , Daniel Stone Cc: Thomas Petazzoni , Mark Yacoub , Sean Paul , Manasi Navare , Drew Davenport , Louis Chauvet , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Kory Maincent X-Mailer: b4 0.16.1-dev-17221 X-Last-TLS-Session-Version: TLSv1.3 In preparation for adding generic DRM properties to report source and sink capabilities, move the DSC capability reading helper out of the i915 driver into the generic DRM helpers. No functional change intended. Signed-off-by: Kory Maincent --- Change in v3: - New patch --- drivers/gpu/drm/display/drm_dp_helper.c | 30 ++++++++++++++++++++++++++++++ drivers/gpu/drm/i915/display/intel_dp.c | 28 ++++------------------------ include/drm/display/drm_dp_helper.h | 2 ++ 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c index 3988da0a01fac..8473dbcd8808a 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -5166,3 +5166,33 @@ int drm_dp_read_edp_sink_rates(struct drm_dp_aux *aux, u8 edp_dpcd_rev, return num_sink_rates; } EXPORT_SYMBOL_GPL(drm_dp_read_edp_sink_rates); + +/** + * drm_dp_read_dsc_dpcd() - read the DSC capabilities from the DPCD + * @aux: DisplayPort AUX channel + * @dsc_dpcd: Buffer to store the DSC capabilities read from the DPCD + * + * Attempts to read the sink DSC capabilities from the DPCD of @aux. + * + * Returns: 0 on success or a negative error code on failure. + */ +int drm_dp_read_dsc_dpcd(struct drm_dp_aux *aux, + u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]) +{ + int ret; + + ret = drm_dp_dpcd_read_data(aux, DP_DSC_SUPPORT, dsc_dpcd, + DP_DSC_RECEIVER_CAP_SIZE); + if (ret) { + drm_dbg_kms(aux->drm_dev, + "Could not read DSC DPCD register 0x%x Error: %pe\n", + DP_DSC_SUPPORT, ERR_PTR(ret)); + return ret; + } + + drm_dbg_kms(aux->drm_dev, "DSC DPCD: %*ph\n", + DP_DSC_RECEIVER_CAP_SIZE, + dsc_dpcd); + return 0; +} +EXPORT_SYMBOL_GPL(drm_dp_read_dsc_dpcd); diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 087afcea5395f..89d4b3d348fa8 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -4382,26 +4382,6 @@ static bool intel_dp_get_sst_split_sdp_status(u8 dprx) return dprx & DP_SST_SPLIT_SDP_CAP; } -static int intel_dp_read_dsc_dpcd(struct drm_dp_aux *aux, - u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]) -{ - int ret; - - ret = drm_dp_dpcd_read_data(aux, DP_DSC_SUPPORT, dsc_dpcd, - DP_DSC_RECEIVER_CAP_SIZE); - if (ret) { - drm_dbg_kms(aux->drm_dev, - "Could not read DSC DPCD register 0x%x Error: %pe\n", - DP_DSC_SUPPORT, ERR_PTR(ret)); - return ret; - } - - drm_dbg_kms(aux->drm_dev, "DSC DPCD: %*ph\n", - DP_DSC_RECEIVER_CAP_SIZE, - dsc_dpcd); - return 0; -} - static void init_dsc_overall_throughput_limits(struct intel_connector *connector, bool is_branch) { u8 branch_caps[DP_DSC_BRANCH_CAP_SIZE]; @@ -4450,8 +4430,8 @@ void intel_dp_get_dsc_sink_cap(u8 dpcd_rev, if (dpcd_rev < DP_DPCD_REV_14) return; - if (intel_dp_read_dsc_dpcd(connector->dp.dsc_decompression_aux, - connector->dp.dsc_dpcd) < 0) + if (drm_dp_read_dsc_dpcd(connector->dp.dsc_decompression_aux, + connector->dp.dsc_dpcd) < 0) return; if (drm_dp_dpcd_readb(connector->dp.dsc_decompression_aux, DP_FEC_CAPABILITY, @@ -4482,8 +4462,8 @@ static void intel_edp_get_dsc_sink_cap(u8 edp_dpcd_rev, struct intel_connector * if (edp_dpcd_rev < DP_EDP_14) return; - if (intel_dp_read_dsc_dpcd(connector->dp.dsc_decompression_aux, - connector->dp.dsc_dpcd) < 0) + if (drm_dp_read_dsc_dpcd(connector->dp.dsc_decompression_aux, + connector->dp.dsc_dpcd) < 0) return; if (connector->dp.dsc_dpcd[0] & DP_DSC_DECOMPRESSION_IS_SUPPORTED) diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h index d7f4c6f2ba4c7..7bc3b36f38b82 100644 --- a/include/drm/display/drm_dp_helper.h +++ b/include/drm/display/drm_dp_helper.h @@ -215,6 +215,8 @@ drm_dp_is_branch(const u8 dpcd[DP_RECEIVER_CAP_SIZE]) } /* DP/eDP DSC support */ +int drm_dp_read_dsc_dpcd(struct drm_dp_aux *aux, + u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]); u8 drm_dp_dsc_sink_bpp_incr(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]); u32 drm_dp_dsc_slice_count_to_mask(int slice_count); u32 drm_dp_dsc_sink_slice_count_mask(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], -- 2.43.0