From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A2974CC6B1A for ; Tue, 13 Oct 2026 17:49:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Bk2x82OfVzEX8vQFg5r5k8G6Ahg8Yo7o0Nce1j8gVcc=; b=SoeGKR/EOZJP06JM59k07Jt4vf wGLI1g0tWJPDjiEmQrsDQddqg3gPN5KtncseFdvkUqu2ZzLHQ3wfnD7261piN5H2N/IzlvuR3ra+3 HdcloZiBH4vVe+iWZV+8MLR9Io7oE78dM7jacdS73PUIeBVaYLY3soI2EBxalXQj5eD+I7raBr44w teQfoYXlyPlSirL3DJDkAmy1OPcjnq/bcgKVnDoKyhsWRs7LfT/eJjcB8UPiH7+izUS6WopDCbTg0 vax+3X/Bv76qz0vvQfp2y4KKAg4424r0uIgrBTAmbJmXHFpsG506ozflKA5q86DCnVsPXPQmeP4uu 9J4HfNaA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGgcj-0000000Dko9-46Ej; Tue, 13 Oct 2026 17:49:13 +0000 Received: from smtpout-04.galae.net ([185.171.202.116]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xGgcc-0000000Dkm6-39El for linux-mediatek@lists.infradead.org; Tue, 13 Oct 2026 17:49:11 +0000 Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-04.galae.net (Postfix) with ESMTPS id A3690C653F9 for ; Tue, 13 Oct 2026 17:50:00 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 072A160362 for ; Tue, 13 Oct 2026 17:49:05 +0000 (UTC) Received: by mail.galae.net (Postcow, from userid 0) id 820BC11D71873; Tue, 13 Oct 2026 19:47:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1791913744; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=Bk2x82OfVzEX8vQFg5r5k8G6Ahg8Yo7o0Nce1j8gVcc=; b=QXXs85u6ycGE1ouUFenek34b7h+iEs8ViGHQ5hhd8bgX5zbFC/KTIBR+ZQ7JJTmAU7Gg9H pHBqTjZFdJfOtpHL4/27zkCSW3jVtkzyQ0RJKAS7VujHBdGVqwM3hivvsYJL6moygKHz6N qr6gUXSxbtULPCf590MVhc7fJqL5XuEJsphnRkzRszI4JZ9nkon0bPZq/2XfSCm3tGWRgN CJ5XMizyhWAfH1A3s90qz5mIaXH5ELisMfPpE/mLfuvWbYEWdqeuhhdCgP7Uj9rARQ+aJX uwTz7dLYz8Q0v5rvUiWsVWdnrVzZkSzgYI57732m1ctZHnjSHtBb/rCJsSthYg== Authentication-Results: mail.galae.net; none Received: from mail.galae.net ([172.22.1.253]) by 9e7fea892943 with LMTP id kLxNELL4zGoogBEAtaWaaQ (envelope-from ) for ; Mon, 12 Oct 2026 17:11:46 +0200 Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id A117911D7012D; Mon, 12 Oct 2026 17:11:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1791817900; h=from:subject:date:message-id:to:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:references; bh=Bk2x82OfVzEX8vQFg5r5k8G6Ahg8Yo7o0Nce1j8gVcc=; b=MSu2ML6c1w653SFQ6BnfRaoqijHfRCycjnFvgpioFNeDI5rHTcfGoA1H3VQFtOqqy2iJCI mkTya1N4+QcXVSQ46ka2NJp7OyGdIHni8M1wW8JHNGcpYhzqLd6ew6ymAqwuwtPBT7Sn9o BGd7kQUUuRQGr2wm+rlRNmSVcnChy4LodeQQq7IkFdejdSPlijT7EexmD4UOz27rcBQAI8 fke1xnFH0582bVkdNCoq79f6OKUFndSZuGA6mNrTN3Fj/sPryTktSnfSPYSbKaUxl2TZ+N BnsQbVWO8D5kjgVQiid31iX9sA7bXPISW++lraYHUlgzyqqDzLD5w/kA9bYvmA== From: Kory Maincent Date: Mon, 12 Oct 2026 17:10:57 +0200 Subject: [PATCH RFC v3 2/8] drm: Move DSC capability reading helper out of i915 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261012-feat_link_cap-v3-2-7517f4aba0f3@bootlin.com> References: <20261012-feat_link_cap-v3-0-7517f4aba0f3@bootlin.com> In-Reply-To: <20261012-feat_link_cap-v3-0-7517f4aba0f3@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 X-Last-TLS-Session-Version: None X-Rspamd-Queue-Id: 820BC11D71873 X-Spamd-Result: default: False [2.50 / 30.00]; SUSPICIOUS_RECIPS(1.50)[]; DATE_IN_PAST(1.00)[26]; RCVD_NO_TLS_LAST(0.10)[]; MIME_GOOD(-0.10)[text/plain]; BAYES_HAM(-0.00)[29.80%]; BCC(0.00)[]; TAGGED_RCPT(0.00)[]; DKIM_SIGNED(0.00)[bootlin.com:s=dkim]; RCVD_VIA_SMTP_AUTH(0.00)[]; FORWARDED(0.00)[kory.maincent@bootlin.com]; ARC_NA(0.00)[]; RCPT_COUNT_TWELVE(0.00)[35]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; FREEMAIL_TO(0.00)[linux.intel.com,kernel.org,suse.de,gmail.com,ffwll.ch,intel.com,ursulin.net,linaro.org,ideasonboard.com,kwiboo.se,bootlin.com,pengutronix.de,collabora.com]; MID_RHS_MATCH_FROM(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[kory.maincent@bootlin.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; TO_DN_SOME(0.00)[]; URIBL_BLOCKED(0.00)[bootlin.com:mid,bootlin.com:email,localhost:rdns,localhost:helo]; MAILCOW_DOMAIN_HEADER_FROM(0.00)[bootlin.com]; RECEIVED_HELO_LOCALHOST(0.00)[]; NEURAL_HAM(-0.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261013_104908_255751_6908DA92 X-CRM114-Status: GOOD ( 14.69 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org 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 8ef096a0138e4..93cf43d166c6e 100644 --- a/drivers/gpu/drm/display/drm_dp_helper.c +++ b/drivers/gpu/drm/display/drm_dp_helper.c @@ -5149,3 +5149,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 da73ad11e9cac..830fe6eda17d7 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -4430,26 +4430,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]; @@ -4498,8 +4478,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, @@ -4530,8 +4510,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