From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 966951A8405 for ; Wed, 26 Mar 2025 10:20:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984402; cv=none; b=fHxVjjZiERtthIYBHuvQbmDoHEP9+flC201ZUkso01Kp3VB75D8R7D+sNMi/DAesUKt6puCfUh0MAEdfUCjxmwkQwB37HGTAaQQZ9KwDvc/MlW1RtN5PJxXzzMbpG63izdml0KZjPb3tPqlHP6FPOHl9tG9okhETVKL+dQSv5WI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984402; c=relaxed/simple; bh=qBaZDed68HeBsS9t3oVt6nXAnHVorfDW+JQBpJqRRE4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SYbFX8z/Vdbjeg22w0mtpNOYqXVO7FgcHOMeUCez6lqwCickZ3PGwgDbGzaBY4tc39xz3y9juxn9oESfTiZz4IEWn+dTaSZg4trFy/7JqffVPYsQDFwY24iR37NxiBoGHjKA4zsoIMtvMXQumEEXD18R255eafIh4GuY3swVDHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=KSz9Fdi1; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="KSz9Fdi1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984398; bh=qBaZDed68HeBsS9t3oVt6nXAnHVorfDW+JQBpJqRRE4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KSz9Fdi1J6PRlHCfEmHjc2X8MiW6+wlrnyUM4gkS4ss/GLOecFizGt/5amlFAkCKR Ta7HpwRuUP3xFjjDlITy0ZIZYX/nvlEAYqWAEld49EVvEEQKq+cJlXY71BdlITztKx IrK8L0V0scpVFe5Hwvnd0ISxKPgMDHuPFMtXmt1/jSH/0zu9Dh3FMhfQPVmy9E+9UC Bz4oHYOvNTOMAkF5bhsdRbU6bAFnyVeZedfg/6T3wFovHGtykSjnscXsIu//LE0Txl 0jcKQKI8pQYixYc8kr4f0T+MTguTVrn3suJjD25QNFUV4v50ZzRqrxiS75QBCoi6PS xebcIHB5sErNQ== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 98AD217E0B9D; Wed, 26 Mar 2025 11:19:58 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:50 +0200 Subject: [PATCH v3 01/15] drm/connector: hdmi: Evaluate limited range after computing format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-1-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Dmitry Baryshkov X-Mailer: b4 0.14.2 Evaluating the requirement to use a limited RGB quantization range involves a verification of the output format, among others, but this is currently performed before actually computing the format, hence relying on the old connector state. Move the call to hdmi_is_limited_range() after hdmi_compute_config() to ensure the verification is done on the updated output format. Fixes: 027d43590649 ("drm/connector: hdmi: Add RGB Quantization Range to th= e connector state") Reviewed-by: Dmitry Baryshkov Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index d9d9948b29e9d5ef9bc9cc9108b3ace4aca2e3ae..45b154c8abb2cc731bf4be472e5= 8815cf47463d4 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -798,12 +798,12 @@ int drm_atomic_helper_connector_hdmi_check(struct drm= _connector *connector, if (!new_conn_state->crtc || !new_conn_state->best_encoder) return 0; =20 - new_conn_state->hdmi.is_limited_range =3D hdmi_is_limited_range(connector= , new_conn_state); - ret =3D hdmi_compute_config(connector, new_conn_state, mode); if (ret) return ret; =20 + new_conn_state->hdmi.is_limited_range =3D hdmi_is_limited_range(connector= , new_conn_state); + ret =3D hdmi_generate_infoframes(connector, new_conn_state); if (ret) return ret; --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 D75361B412A for ; Wed, 26 Mar 2025 10:20:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984404; cv=none; b=go35X2L2A36/3B2/nhrgOxucluFLan++BZwWQrYxKgW8KyS5rDTT3H2xIGLeO1dBa0AdwKl/bHgjqe2uPwH8mv2Q2Ja+8APxyNjPnCMwnLjZbl+3UU4xotWdKGPgOqjxuajb6chBe6sYbmULkAgNSE8VoWIOhHX651pJssxYPnI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984404; c=relaxed/simple; bh=zuXvsJShj0t09YnGKpFJkGXTDa0DsPXYcqltF9EFW70=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dPcEzt3/cSE75PQh4cXqxUCy0B+ZOtdGPhSzj2GaD2dZ2SAPAlYa1NMdHXVSols8vaL56Lu9qKlkxdGXqiBZvk9VqjfNgxE9Oi/XrgT/MOrwk/aQJdJjhv9hHMeCO8V4H9FOAE/OJp3ZOn5KQyxi8HH3QiHtS5thBpAf69qe0RI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=i8wnmpMc; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="i8wnmpMc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984399; bh=zuXvsJShj0t09YnGKpFJkGXTDa0DsPXYcqltF9EFW70=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=i8wnmpMcHS9D/oF2ClPlOilsA5wPDz98P6QPOulHho7dvgIXxkxeR8+srKjCaeldy 8xa0jJoIh2NgUFOLh4s0DjP/bUb7b2H64srRxnF86BdQrkWJzlrJHGIdF3ccP0sA/i 8PhV12i9/Usuvgq+481cggxn6SLDQJhJOGiO96idjSjzZEuhjqassIbMWb8Fy/Jhkp bwHCgBQb/MEWbmytDe54xeKimzLoeVu+9GTGVUopWknx9Wfo5w0DrJw6n7CWc0RZ3Q V48/3xTt2t/JH8zKPW8wYH33t7wcAjz3BgA4EWrOQ4SDNQbB6s9WgWpt27HzohAlEh EETai2Hutax4w== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id B0D4A17E0E8D; Wed, 26 Mar 2025 11:19:59 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:51 +0200 Subject: [PATCH v3 02/15] drm/connector: hdmi: Add support for YUV420 format verification Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-2-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Provide the necessary constraints verification in sink_supports_format_bpc() in order to support handling of YUV420 output format. Signed-off-by: Cristian Ciocaltea Reviewed-by: Maxime Ripard --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 39 +++++++++++++++++++++= ++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index 45b154c8abb2cc731bf4be472e58815cf47463d4..eb284032ea794838f333ce63924= 3540fca91dbdb 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -3,6 +3,7 @@ #include #include #include +#include #include =20 #include @@ -407,6 +408,11 @@ sink_supports_format_bpc(const struct drm_connector *c= onnector, return false; } =20 + if (drm_mode_is_420_only(info, mode) && format !=3D HDMI_COLORSPACE_YUV42= 0) { + drm_dbg_kms(dev, "Mode can be only supported in YUV420 format.\n"); + return false; + } + switch (format) { case HDMI_COLORSPACE_RGB: drm_dbg_kms(dev, "RGB Format, checking the constraints.\n"); @@ -437,9 +443,36 @@ sink_supports_format_bpc(const struct drm_connector *c= onnector, return true; =20 case HDMI_COLORSPACE_YUV420: - /* TODO: YUV420 is unsupported at the moment. */ - drm_dbg_kms(dev, "YUV420 format isn't supported yet.\n"); - return false; + drm_dbg_kms(dev, "YUV420 format, checking the constraints.\n"); + + if (!(info->color_formats & DRM_COLOR_FORMAT_YCBCR420)) { + drm_dbg_kms(dev, "Sink doesn't support YUV420.\n"); + return false; + } + + if (!drm_mode_is_420(info, mode)) { + drm_dbg_kms(dev, "Mode cannot be supported in YUV420 format.\n"); + return false; + } + + if (bpc =3D=3D 10 && !(info->hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_3= 0)) { + drm_dbg_kms(dev, "10 BPC but sink doesn't support Deep Color 30.\n"); + return false; + } + + if (bpc =3D=3D 12 && !(info->hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_3= 6)) { + drm_dbg_kms(dev, "12 BPC but sink doesn't support Deep Color 36.\n"); + return false; + } + + if (bpc =3D=3D 16 && !(info->hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_4= 8)) { + drm_dbg_kms(dev, "16 BPC but sink doesn't support Deep Color 48.\n"); + return false; + } + + drm_dbg_kms(dev, "YUV420 format supported in that configuration.\n"); + + return true; =20 case HDMI_COLORSPACE_YUV422: drm_dbg_kms(dev, "YUV422 format, checking the constraints.\n"); --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 4FFE11BC9E2 for ; Wed, 26 Mar 2025 10:20:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984405; cv=none; b=Jlcmqpj541WpcEFnf8NPRGagPxrgjhMnkyfk8+Bw/8V5E+bPvfkQ7RGAqsxBCWPNHrv5UsOrfTMJhf9OMywxPytYqH+cIT5JBy3/oLSOOgmvBIgIfCJ3IcHhEtJPagpn33DZjFzzQz1EQFexnBGlI9t+SXmUEQYAPrwedzMnKjE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984405; c=relaxed/simple; bh=RlyWP2QsjTsHxaZYoCMc/KglO80bh7kVFpo7Z2MtuMo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=agtS/NL4WFqLVYWon4Tz9PV2zx1Iq5X5dXM+oSxzuQ5kRJBtpLBTC5xeicPRYbBSNNSj/xnt7taSbD2S1Ifma9p9umA9OCR30omgsTmzgtr5Tj6naqXcz214lCwTUsLtuXDOJ2ZdiML++89iemoCvU1aIn6fDF23YHU3lAmaLsk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=Vlcs1Cpf; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="Vlcs1Cpf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984401; bh=RlyWP2QsjTsHxaZYoCMc/KglO80bh7kVFpo7Z2MtuMo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Vlcs1CpfBqJUtdDhMaq01dyUGkIv7DZSGiqvg+D0L/iMm3d4FJ5DBVfLiCoS/wwkh wQiPtDBpqoUZkaCuwjJJEvL3Yb0qI8Eflua6gDXADdeP/gp8tdgvnBq1uomeUaFawx kQUZEGpjOaHch0JRlZNhY5owtDIbcl4B/VZ3VhFI8jXDzfyBYoG74h85TDo0/IxhOf OCAi/xF4eNDSvZNJVzbsEk6lBKQHhR3bOCZRSPaihRHUj8j+7XGUT5q1Vqiw+Vt800 Yi/t1E8twT/jC/rU0As5lrb2OoXqA+WnY2YYxRTosELpLhkuX3ehzBCMli6HkV7dRG W05y37dArFbPg== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 237A317E0FCC; Wed, 26 Mar 2025 11:20:01 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:52 +0200 Subject: [PATCH v3 03/15] drm/connector: hdmi: Improve debug message for supported format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-3-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Add the missing 'bpc' string to the debug message indicating the supported format identified within hdmi_try_format_bpc() helper. Reviewed-by: Maxime Ripard Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index eb284032ea794838f333ce639243540fca91dbdb..a0cb3163f457635cf27e53b009b= d83f85eee9336 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -596,7 +596,7 @@ hdmi_try_format_bpc(const struct drm_connector *connect= or, return false; } =20 - drm_dbg_kms(dev, "%s output format supported with %u (TMDS char rate: %ll= u Hz)\n", + drm_dbg_kms(dev, "%s output format supported with %u bpc (TMDS char rate:= %llu Hz)\n", drm_hdmi_connector_get_output_format_name(fmt), bpc, conn_state->hdmi.tmds_char_rate); =20 --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 C67581BEF87 for ; Wed, 26 Mar 2025 10:20:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984405; cv=none; b=sIMIqVpt6nPZg4+56X9DyVRJhQpijoophpZaznzKXzuWEzL6P2hlZ4jFworXQ9wMh1NPYiTLuQsHaVVL42pJond9y9M6vCvw2vQsyLZykS0ATxaris8NbpbsPNDRzfKJyH53CMuJmVA8bkl3JUOQNPLjtGOjG0m3iNfCVugtSwM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984405; c=relaxed/simple; bh=YwDJVq02TOowWFPqiY54kVfZ8/K6L4M+Y6kDYiCoe7A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k/kxZqdjMfYJVeLZiG3qlJza1Ss868XtWCVvFmAl/2ut5/2v4myPgeFbbu/snodN+cIP+B8EWS1gi0nMvmXJ15qqbknIfZI2U4eTBxyByZwrXtH34oFBH5jv/vEckr7qG4NWXDDUq3Ra5FMrJwFZMoKfyPdY43BQDjpnKUf517M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=IT6INH7l; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="IT6INH7l" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984402; bh=YwDJVq02TOowWFPqiY54kVfZ8/K6L4M+Y6kDYiCoe7A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IT6INH7l+9NWFFa/WJlXKoFFyYRXEANCtn+XKUUQvMfE9nhWuCkkuytA/Ly2M34lw DI3xq6NvoyInLoVZo3ceNvnhJHtR5X6PX1MxsMAecQO6Bq+r45wlIoM4/FbXchqHCx rN3dErhYe98o5AVXdsEXw1tdF+tNiVxgM24gnelpn9Kpe50Kz1e3S8Y8Esd+FqSAKr P9NokjkFjOBdErmPGmffZ2f6SeS7LZ8thx5SvsG6G8wdqWmBwg+f+lo9bk7eqduDIC Z4rnthr3ttPeFGhbtdWUCp/Q6K3ymmBc2dpC7XFSBLsBU6w0hvKk051NfWDTzP8fLv e4XCsHgwcBOHA== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id E854F17E0FDB; Wed, 26 Mar 2025 11:20:01 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:53 +0200 Subject: [PATCH v3 04/15] drm/connector: hdmi: Add missing bpc debug info to hdmi_try_format_bpc() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-4-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 The very first debug message in hdmi_try_format_bpc() is incomplete, as it doesn't provide the given bpc in addition to the tried format. Add the missing debug information and drop the now redundant message from hdmi_compute_config(). Signed-off-by: Cristian Ciocaltea Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index a0cb3163f457635cf27e53b009bd83f85eee9336..f54eb5c594cddbd67dfacb5e06d= 54e9ce7851013 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -578,8 +578,9 @@ hdmi_try_format_bpc(const struct drm_connector *connect= or, struct drm_device *dev =3D connector->dev; int ret; =20 - drm_dbg_kms(dev, "Trying %s output format\n", - drm_hdmi_connector_get_output_format_name(fmt)); + drm_dbg_kms(dev, "Trying %s output format with %u bpc\n", + drm_hdmi_connector_get_output_format_name(fmt), + bpc); =20 if (!sink_supports_format_bpc(connector, info, mode, fmt, bpc)) { drm_dbg_kms(dev, "%s output format not supported with %u bpc\n", @@ -638,8 +639,6 @@ hdmi_compute_config(const struct drm_connector *connect= or, int ret; =20 for (bpc =3D max_bpc; bpc >=3D 8; bpc -=3D 2) { - drm_dbg_kms(dev, "Trying with a %d bpc output\n", bpc); - ret =3D hdmi_compute_format(connector, conn_state, mode, bpc); if (ret) continue; --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 E9BE51B6D01 for ; Wed, 26 Mar 2025 10:20:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984407; cv=none; b=mpf98OvndTx0Ca8uBs4Bqag9/Gdq+qxIrkBsh9/KIOW0guVfHahH1ijXMNduxhDq+qru6NIovb/PNAykiFWSSpwjbF0Cs75+0fQjoI7a4nwBkLomsjVYRg+df0RbdNULjhiog14bQ6onHAjsWxov1Rd75UmCrJL45MTD/fWeZCs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984407; c=relaxed/simple; bh=mqto+3pLlvUmByoQJNo+pUdodInryOfW/B9O9DxOdxA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a4VMYT5ilkHKrzOjgksszp3vtLhKD978h0qiXa+87kUzNvLI7noNUuxDTMviQDf9PgYlRsKoo70iMZPlQYExPt5A40l5akcTkwOY0mnC9JFyPirwXSYzHCB7pQX5gPidjuw/BRwlVJjYhiiFgK/RoqpWeB0fhOffG0JuBKtk8Jc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=B1ASN0od; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="B1ASN0od" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984403; bh=mqto+3pLlvUmByoQJNo+pUdodInryOfW/B9O9DxOdxA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=B1ASN0odvV43B0xLe9BjMxSNYpXxn8NRNlE+ouTF34b8YM9QUVhSpW7R4yNZrkG02 pC5n3LnSnvcaT2zx/8qomaSoHP9Mx8UTGasC3sDhYZAkRz4+eaHpYr5LENSOLY7sAx ixVan1x2grR3oLJbLWTggDlm1lEoPZMJvsXU6aMld85uh85L+1Vr93JJp5rjld56IV L8zwc8yTpBWGBOKkbCIv3RxJnqMTQyqf0e/hry7jsJCp4I4yhhxPcVQzSjizNKRWPK OJSrpqYmiNqqAwgoZyCS7wsPyXj5vlNxLkAeiZ2NixRLMgNUq/9e+gKaNmrXPnAdgn vnjLIArVy6iyA== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 1AF0217E0FF6; Wed, 26 Mar 2025 11:20:03 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:54 +0200 Subject: [PATCH v3 05/15] drm/connector: hdmi: Rename hdmi_compute_format() internal helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-5-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 In preparation to introduce support for alternative output formats, which will require extending hdmi_compute_format() functionality by setting hdmi.output_bpc in addition to the current hdmi.output_format, maintain future code readability by renaming the helper to hdmi_compute_format_bpc(). There are no functional changes intended at this point. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index f54eb5c594cddbd67dfacb5e06d54e9ce7851013..160964190d82ac233fdbe34ac54= 024a007a19872 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -605,10 +605,10 @@ hdmi_try_format_bpc(const struct drm_connector *conne= ctor, } =20 static int -hdmi_compute_format(const struct drm_connector *connector, - struct drm_connector_state *conn_state, - const struct drm_display_mode *mode, - unsigned int bpc) +hdmi_compute_format_bpc(const struct drm_connector *connector, + struct drm_connector_state *conn_state, + const struct drm_display_mode *mode, + unsigned int bpc) { struct drm_device *dev =3D connector->dev; =20 @@ -639,7 +639,7 @@ hdmi_compute_config(const struct drm_connector *connect= or, int ret; =20 for (bpc =3D max_bpc; bpc >=3D 8; bpc -=3D 2) { - ret =3D hdmi_compute_format(connector, conn_state, mode, bpc); + ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, bpc); if (ret) continue; =20 --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 258621CCEC8 for ; Wed, 26 Mar 2025 10:20:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984408; cv=none; b=O2o0BVSoKuXl73Qw8YrBpLZBN2GoD3OtZl9NWzgmGXn/7tXGHcZxFHmteXKiCr9YtKhyBu1YijpfB5K4RcXmyVn9l7UwMfekUxuWd4FoUzoY3fsoiKnAPO5P26z6RxSpwlDgYK/myHTBx8sySvREaPObh9czhMFzgy8SKZz6h3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984408; c=relaxed/simple; bh=rDMIZe5hN1CpqlraSPGbOSqAAdKIHU8LVaZsRBJpU/8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cygPF6H3jzXvX3DXdZ0ZxqLtA8N2Vq/kYs+zTBUDGcAyHokmwzuk15X8s7WuRitre5qqTHWdZO0abDWKJA4Blm2Dnt6xAJptnisTG/taoDXxrbMngxc0T4IbTLAw2S7an4A8SmvLADRVacMXxteiNt9YnToul1aRDGVBJbh6qrU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=bUftxO2g; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="bUftxO2g" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984404; bh=rDMIZe5hN1CpqlraSPGbOSqAAdKIHU8LVaZsRBJpU/8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bUftxO2giwIrp8JHsRO+iHdJjx4E5YZOdVgSNOF0rCm+HBVIfENEPJw8esr8rLiDi Z5Ky2eAca+cgX4pnSlb0LGKlcC+JbApmF9KNAtcOnS9a/2ccywMvzCP82YVevd3oA8 0JUXm6fCk9Xjet5nIYo3Y5rZAe7J4cmq1Rac0+tNDlUshg1xxec5NuMq1qRNNwfzVa bPDR0dYP88nSYQE+ngQbWqVCfr/LBl9ElgMBe0f+Tx2ZTQyTJXTWK7VSg8zgpFyji0 B8AOWGUFYfMS5GHtgXymioTQyCMItx/pmHS3cZfyacLdlxWbfm2Fb+6bkruxUpuf1Y lPEHx4JcY6Pig== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 387CB17E0A5D; Wed, 26 Mar 2025 11:20:04 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:55 +0200 Subject: [PATCH v3 06/15] drm/connector: hdmi: Factor out bpc and format computation logic Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-6-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 In preparation to support fallback to an alternative output format, e.g. YUV420, when RGB cannot be used for any of the available color depths, move the bpc try loop out of hdmi_compute_config() and, instead, make it part of hdmi_compute_format_bpc(). Additionally, add a new parameter to the latter holding the output format to be checked and eventually set. This improves code reusability and further extensibility. Signed-off-by: Cristian Ciocaltea Reviewed-by: Maxime Ripard --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 50 ++++++++++++---------= ---- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index 160964190d82ac233fdbe34ac54024a007a19872..6de0abb15ecb36fd4eb98725e2a= 3835e5e0db134 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -608,42 +608,19 @@ static int hdmi_compute_format_bpc(const struct drm_connector *connector, struct drm_connector_state *conn_state, const struct drm_display_mode *mode, - unsigned int bpc) + unsigned int max_bpc, enum hdmi_colorspace fmt) { struct drm_device *dev =3D connector->dev; - - /* - * TODO: Add support for YCbCr420 output for HDMI 2.0 capable - * devices, for modes that only support YCbCr420. - */ - if (hdmi_try_format_bpc(connector, conn_state, mode, bpc, HDMI_COLORSPACE= _RGB)) { - conn_state->hdmi.output_format =3D HDMI_COLORSPACE_RGB; - return 0; - } - - drm_dbg_kms(dev, "Failed. No Format Supported for that bpc count.\n"); - - return -EINVAL; -} - -static int -hdmi_compute_config(const struct drm_connector *connector, - struct drm_connector_state *conn_state, - const struct drm_display_mode *mode) -{ - struct drm_device *dev =3D connector->dev; - unsigned int max_bpc =3D clamp_t(unsigned int, - conn_state->max_bpc, - 8, connector->max_bpc); unsigned int bpc; int ret; =20 for (bpc =3D max_bpc; bpc >=3D 8; bpc -=3D 2) { - ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, bpc); - if (ret) + ret =3D hdmi_try_format_bpc(connector, conn_state, mode, bpc, fmt); + if (!ret) continue; =20 conn_state->hdmi.output_bpc =3D bpc; + conn_state->hdmi.output_format =3D fmt; =20 drm_dbg_kms(dev, "Mode %ux%u @ %uHz: Found configuration: bpc: %u, fmt: %s, clock: %= llu\n", @@ -655,9 +632,28 @@ hdmi_compute_config(const struct drm_connector *connec= tor, return 0; } =20 + drm_dbg_kms(dev, "Failed. %s output format not supported for any bpc coun= t.\n", + drm_hdmi_connector_get_output_format_name(fmt)); + return -EINVAL; } =20 +static int +hdmi_compute_config(const struct drm_connector *connector, + struct drm_connector_state *conn_state, + const struct drm_display_mode *mode) +{ + unsigned int max_bpc =3D clamp_t(unsigned int, + conn_state->max_bpc, + 8, connector->max_bpc); + int ret; + + ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, + HDMI_COLORSPACE_RGB); + + return ret; +} + static int hdmi_generate_avi_infoframe(const struct drm_connector *connect= or, struct drm_connector_state *conn_state) { --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 3FE561C7015 for ; Wed, 26 Mar 2025 10:20:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984409; cv=none; b=jirWU/zU3+Om+L7ObtNX1eEWtgFlQK+x2tcH4ABC+hkKsOheLUxrMn3vhKM1rrY5rlaKRA4bHxgTUPqufyWxp2wGWUOAoWVDcx1IBcaZb/5uOlrwxe2KVtlNRoF/xXLRVpLAoqKs5kL75AsLyjrZChFhMajN/dv8+gXayHhmDJ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984409; c=relaxed/simple; bh=kWYvxqjKorV2NXGSW+7sreFvakOrQdavOIvZdsoGzbo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cHsDEtMw3R4SfjyRSie8Jwo6XhgJnQ2zmVk1Ow/+sHkobZOYGKhWg50h8HPt39qMNb8Q5Ne7t3qr1i0ZKzxWk8kylZ0h2LCvNrgo+e0MyMo+CZe/RE92PHGzxdhiExeonJJsPqX8O0jjmVSnAQ8a8rBfATfWlxGqTLUx2SfR13c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=EgG127FC; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="EgG127FC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984405; bh=kWYvxqjKorV2NXGSW+7sreFvakOrQdavOIvZdsoGzbo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EgG127FC9lgj/sxZa/b/xS6vEnHEOjjXci2q1HlF+HA9b7ZOPJnvS/+wgapN++Vul LWe7beitKH91r+WN0oq9BBw8X2y0Ng3GAN6tYb7EEKCvM0WgaJe/C7AbhH7EFkcwpp BUmbvmez2o6svAIQe+WgxjK0mZY5lBlUzaaCKsjhfggZI2DgvAST8ijKIcEgXyHAYw EaWSUHO34NadBdMPQFo3T5u6BqTlx4O5sVsTR5g+77NWJyyb6yLoc1+iln4IFuwUE5 SVPwS9Z9IdVHNJijBl7wNXbpn6BHWGXXZu9qZ/pbXUy1mg8EX523yVeZhaH7BcGa3e Yrbmz3VNSY63Q== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 5641D17E0B9D; Wed, 26 Mar 2025 11:20:05 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:56 +0200 Subject: [PATCH v3 07/15] drm/connector: hdmi: Use YUV420 output format as an RGB fallback Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-7-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Try to make use of YUV420 when computing the best output format and RGB cannot be supported for any of the available color depths. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/= drm/display/drm_hdmi_state_helper.c index 6de0abb15ecb36fd4eb98725e2a3835e5e0db134..3859600c6af4a79f30858adfc9f= 9a710dfe561a5 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -650,7 +650,17 @@ hdmi_compute_config(const struct drm_connector *connec= tor, =20 ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, HDMI_COLORSPACE_RGB); + if (!ret) + return 0; =20 + if (!connector->ycbcr_420_allowed) { + drm_dbg_kms(connector->dev, + "YUV420 output format not allowed for connector.\n"); + return -EINVAL; + } + + ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, + HDMI_COLORSPACE_YUV420); return ret; } =20 --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 AC6491DC9AF for ; Wed, 26 Mar 2025 10:20:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984410; cv=none; b=hwJWMmaYNzLLkgTsyuj3y96HkArYNlc1AoJ888ag0tx9gdJ7KUPNun8y3Ex+un9mgBoNjAT3+j+5+giAMuwdG0cpE1gRXiSDjSzXjcUbN4uXG//HC3Mn3yFoCSYDzisWyXlKwVJlms2lMO2vyAN9tCghbaI8rdq97o7zHu2FSiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984410; c=relaxed/simple; bh=NZ6fclDwbegk6vjdEVRrCydF7IGqCGp8TxBQFTP5dcw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cNXogVMz5D64dOO6wp35bxhvBv35p4MTw1ZHsyzbwoqqskxOqrwEyluTKeSRtijLHrlktqcYhuXg4u9hwjYq2FAORq65Nsq1o4q5IP9CK8z2DB6mG8417BFgI2dlhm42rdnjSTdXiZA5bQT+jn4OzM5xGZUf+FNYpNaBcreIC4w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=EtKCSX2t; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="EtKCSX2t" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984406; bh=NZ6fclDwbegk6vjdEVRrCydF7IGqCGp8TxBQFTP5dcw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EtKCSX2tSNqPl4heucqQ/poDA9wvikAgKOQauF9vNy2sIoj4chyNlIBRcVNzNDuQ4 H0jwxSA0nHahcE489nmPlKozMSc3bTfvELrxVppWOy2gn5Y6+8ep0kucOstS/A0A+M KzN/2WDR8TCXUODltOH/xVnF9BDw0z1jACQRXUHuFLnVYSl/e1rdbtiq71i48IWbGU 23RyK7ofii0qhuz2p/E9pqoK1P8rSnn4ciFxmOK/tky5yPTVIKd+Zapg066wUmr/+w b30apyqqQ/oAHT+epMYlBZGK8KOpadVV7LncjaXPa+WIkWKe6leXZDrhnHqxYy7WNc eSy134gN5mbVA== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id BE53017E0E8D; Wed, 26 Mar 2025 11:20:06 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:57 +0200 Subject: [PATCH v3 08/15] drm/tests: hdmi: Add macros to simplify EDID setup Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-8-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Introduce a few macros to facilitate setting custom (i.e. non-default) EDID data during connector initialization. The actual conversion to use the new helpers is handled separately. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 43 +++++++++++-------= ---- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 7ffd666753b10bc991894e238206a3c5328d0e23..bcbd146fb655f4402529e59af09= c99dbae7be0bf 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -140,10 +140,12 @@ static const struct drm_connector_funcs dummy_connect= or_funcs =3D { =20 static struct drm_atomic_helper_connector_hdmi_priv * -drm_kunit_helper_connector_hdmi_init_funcs(struct kunit *test, - unsigned int formats, - unsigned int max_bpc, - const struct drm_connector_hdmi_funcs *hdmi_funcs) +connector_hdmi_init_with_edid_funcs(struct kunit *test, + unsigned int formats, + unsigned int max_bpc, + const struct drm_connector_hdmi_funcs *hdmi_funcs, + const char *edid_data, + size_t edid_len) { struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector *conn; @@ -197,30 +199,27 @@ drm_kunit_helper_connector_hdmi_init_funcs(struct kun= it *test, =20 drm_mode_config_reset(drm); =20 + if (edid_data && edid_len) { + ret =3D set_connector_edid(test, &priv->connector, edid_data, edid_len); + KUNIT_ASSERT_GT(test, ret, 0); + } + return priv; } =20 -static -struct drm_atomic_helper_connector_hdmi_priv * -drm_kunit_helper_connector_hdmi_init(struct kunit *test, - unsigned int formats, - unsigned int max_bpc) -{ - struct drm_atomic_helper_connector_hdmi_priv *priv; - int ret; +#define drm_kunit_helper_connector_hdmi_init_funcs(test, formats, max_bpc,= funcs) \ + connector_hdmi_init_with_edid_funcs(test, formats, max_bpc, funcs, NULL, = 0) =20 - priv =3D drm_kunit_helper_connector_hdmi_init_funcs(test, - formats, max_bpc, - &dummy_connector_hdmi_funcs); - KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv); +#define drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, formats= , max_bpc, funcs, edid) \ + connector_hdmi_init_with_edid_funcs(test, formats, max_bpc, funcs, edid, = ARRAY_SIZE(edid)) =20 - ret =3D set_connector_edid(test, &priv->connector, - test_edid_hdmi_1080p_rgb_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); +#define drm_kunit_helper_connector_hdmi_init_with_edid(test, formats, max_= bpc, edid) \ + drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, formats, max_b= pc, \ + &dummy_connector_hdmi_funcs, edid) =20 - return priv; -} +#define drm_kunit_helper_connector_hdmi_init(test, formats, max_bpc) \ + drm_kunit_helper_connector_hdmi_init_with_edid(test, formats, max_bpc, \ + test_edid_hdmi_1080p_rgb_max_200mhz) =20 /* * Test that if we change the RGB quantization property to a different --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 77B611B4F1F for ; Wed, 26 Mar 2025 10:20:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984412; cv=none; b=MLve+qfPMTiY9AkMLS8zG0podcO2BRailn1f424BqtofwAkA61jy0BrrTwDmXCM96XGbfvdJQ/G2ml+7lsJKa8fFc0MG9zNYlADbI1zwL7K46I3j8gc6s9XGiB361++SliRvo2Ya208BrqU/SDmxDH71pqcB11pQfdmogxv6Og8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984412; c=relaxed/simple; bh=v/fyQCNrVCvHT2cQvAAE7Y6GNncKXO0CKQph6nEoM98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A2oAYXFSrg44TlJTO9HW4m0wIZck3lAG3Hs8fKfvRSi6at+wBaWy6Pk+iZNcsH1KBqwJH9pfy1SJM37BfN4hMD0NHKSLwIVBDSRvIJXIomeJu2sV85N4RepsAe551JRv9z2OB3MFz0NlnChVXfiukeR5c/kTB+RIsfKUR8K/E20= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=StXtodWw; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="StXtodWw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984408; bh=v/fyQCNrVCvHT2cQvAAE7Y6GNncKXO0CKQph6nEoM98=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=StXtodWwXx0RhjEEZ+vHIJHX/By6TzJnC4UYUtOv7hEJRZ24VBbMLm1V59XCJkQFi ChBgO5oQT5xPlNeyEQCE8SKDG56etc8u4HaH+JKLGPpiQ0HKJlAN2Wbk8T9rK/nJtT Ka+u9lvRILzgf3ChItIskEcplvf8fKIWqrS4e5tjeqAXi6O876FIQOzVouj/2mBW8I e7pLmMrhLmL1Dv1ZQ1ia+MueBcJqbtexk4n06xZm0UxjK26FbJ5gbJa/q/exDsQtxF uEsWh1NTgXj7IUvb9WOOPyABc9FihpFAxtUQ/LWd02rH3plB9ShmAd4YmsxW5hiE6W rJggJc9IwkU7Q== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id D577D17E0FCC; Wed, 26 Mar 2025 11:20:07 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:58 +0200 Subject: [PATCH v3 09/15] drm/tests: hdmi: Fixup CamelCase warning Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-9-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Rename the reject_100_MHz_connector_hdmi_funcs variable to make checkpatch.pl happy: CHECK: Avoid CamelCase: While at it, also rename reject_100MHz_connector_tmds_char_rate_valid() for consistency. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index bcbd146fb655f4402529e59af09c99dbae7be0bf..284bd9b1418a454d05c4a382635= 19eb8ae450090 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -89,15 +89,15 @@ static const struct drm_connector_hdmi_funcs reject_con= nector_hdmi_funcs =3D { }; =20 static enum drm_mode_status -reject_100MHz_connector_tmds_char_rate_valid(const struct drm_connector *c= onnector, +reject_100mhz_connector_tmds_char_rate_valid(const struct drm_connector *c= onnector, const struct drm_display_mode *mode, unsigned long long tmds_rate) { return (tmds_rate > 100ULL * 1000 * 1000) ? MODE_BAD : MODE_OK; } =20 -static const struct drm_connector_hdmi_funcs reject_100_MHz_connector_hdmi= _funcs =3D { - .tmds_char_rate_valid =3D reject_100MHz_connector_tmds_char_rate_valid, +static const struct drm_connector_hdmi_funcs reject_100mhz_connector_hdmi_= funcs =3D { + .tmds_char_rate_valid =3D reject_100mhz_connector_tmds_char_rate_valid, }; =20 static int dummy_connector_get_modes(struct drm_connector *connector) @@ -1933,7 +1933,7 @@ static void drm_test_check_mode_valid_reject_rate(str= uct kunit *test) priv =3D drm_kunit_helper_connector_hdmi_init_funcs(test, BIT(HDMI_COLORSPACE_RGB), 8, - &reject_100_MHz_connector_hdmi_funcs); + &reject_100mhz_connector_hdmi_funcs); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 D2A3E1DE3B7 for ; Wed, 26 Mar 2025 10:20:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984413; cv=none; b=ZnrhHN/aG+bAuvlmrDcrpGeSX5MqfQfz5yKt31HBE5OuKZknh/h9Y/OTAotg0PCIPNGfnzFO/7Jrd8ihLBtZ7ZCrmFEM+WKgsrjQLy+8FsFqPQVwouDabeVCt+YIbffXqMoH2O1njl6tBLVkMwktLrN+5iYFx1N4PnKAoTV99Nc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984413; c=relaxed/simple; bh=JY0o5v2vlBhjkX9Cg9CiF7H42fvwkyULxa0W+g4684g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=st1DC5Hxiw0lxahaVmgXLMO2ImN1IVeMtFMZa0FpcGvf4BUDaHea+l165JlpZVgRh0ADyOMD0hadt9Ths7UzATejEttxGeemIHY/l89g+TOBq76bmb+ASxAQqbsN1xIB+CsLwT4qsNP2c3pfBNsdUCTa5rrBd4VfID02zBqiSSY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=fT88P8DW; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="fT88P8DW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984409; bh=JY0o5v2vlBhjkX9Cg9CiF7H42fvwkyULxa0W+g4684g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fT88P8DWjUEgr4L9frZioVeQjoaQWBNH1SZjmeNb9JyMM1eA13eJYdLhz8OmtJIXQ RctLkJnhviR/w9E5+al/KNZx4Lc6rMoY6tNSBKjD69HXNe/Lbiy938ZqTibeTB+mpf GXa7kr8fBfDEQUje17NoP5XiRBibUmXTSI/VuFqGRNGDIcakn+ICvSitxtwqJ5w6v3 PPZC9l4D3ZVMyQoLKVy1jWVaUBdCoijiWBDJlvAFtiOQtHpCjVjhHBT6obuic/a65k 4cGe2EXYRbrqrBH5VrniqAeyQTmBhqXVRNq9AYlv2YO3MsGwo1GfO4K4TopWmTXq8K NUuna5ld/MP/w== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id EB84417E0A5D; Wed, 26 Mar 2025 11:20:08 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:19:59 +0200 Subject: [PATCH v3 10/15] drm/tests: hdmi: Replace open coded EDID setup Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-10-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Make use of the recently introduced macros to reduce boilerplate code around EDID setup. This also helps dropping the redundant calls to set_connector_edid(). No functional changes intended. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 220 ++++++++---------= ---- 1 file changed, 78 insertions(+), 142 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 284bd9b1418a454d05c4a38263519eb8ae450090..7b2aaee5009ce58e6edf2649e21= 82c43ba834523 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -751,19 +751,15 @@ static void drm_test_check_output_bpc_crtc_mode_chang= ed(struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 10); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 10, + test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); =20 @@ -830,19 +826,15 @@ static void drm_test_check_output_bpc_crtc_mode_not_c= hanged(struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 10); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 10, + test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); =20 @@ -904,21 +896,17 @@ static void drm_test_check_output_bpc_dvi(struct kuni= t *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + test_edid_dvi_1080p); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_dvi_1080p, - ARRAY_SIZE(test_edid_dvi_1080p)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_FALSE(test, info->is_hdmi); =20 @@ -958,19 +946,15 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(st= ruct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 8); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); @@ -1010,19 +994,15 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc(= struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 10); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 10, + test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); @@ -1062,19 +1042,15 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc= (struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - preferred =3D find_preferred_mode(conn); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); @@ -1180,19 +1156,15 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck(struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1252,21 +1224,17 @@ static void drm_test_check_max_tmds_rate_format_fal= lback(struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1320,20 +1288,16 @@ static void drm_test_check_output_bpc_format_vic_1(= struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1387,19 +1351,15 @@ static void drm_test_check_output_bpc_format_driver= _rgb_only(struct kunit *test) struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1457,21 +1417,17 @@ static void drm_test_check_output_bpc_format_displa= y_rgb_only(struct kunit *test struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1530,19 +1486,15 @@ static void drm_test_check_output_bpc_format_driver= _8bpc_only(struct kunit *test struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 8); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1593,21 +1545,17 @@ static void drm_test_check_output_bpc_format_displa= y_8bpc_only(struct kunit *tes struct drm_crtc *crtc; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB) | - BIT(HDMI_COLORSPACE_YUV422) | - BIT(HDMI_COLORSPACE_YUV444), - 12); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + test_edid_hdmi_1080p_rgb_max_340mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 drm =3D &priv->drm; crtc =3D priv->crtc; conn =3D &priv->connector; - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_max_340mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_340mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - info =3D &conn->display_info; KUNIT_ASSERT_TRUE(test, info->is_hdmi); KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); @@ -1926,28 +1874,20 @@ static void drm_test_check_mode_valid(struct kunit = *test) static void drm_test_check_mode_valid_reject_rate(struct kunit *test) { struct drm_atomic_helper_connector_hdmi_priv *priv; - struct drm_connector *conn; struct drm_display_mode *preferred; - int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init_funcs(test, - BIT(HDMI_COLORSPACE_RGB), - 8, - &reject_100mhz_connector_hdmi_funcs); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + &reject_100mhz_connector_hdmi_funcs, + test_edid_hdmi_1080p_rgb_max_200mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 - conn =3D &priv->connector; - - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_max_200mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_200mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - /* * Unlike the drm_test_check_mode_valid() here 1080p is rejected, but * 480p is allowed. */ - preferred =3D find_preferred_mode(conn); + preferred =3D find_preferred_mode(&priv->connector); KUNIT_ASSERT_NOT_NULL(test, preferred); KUNIT_EXPECT_EQ(test, preferred->hdisplay, 640); KUNIT_EXPECT_EQ(test, preferred->vdisplay, 480); @@ -1965,12 +1905,14 @@ static void drm_test_check_mode_valid_reject(struct= kunit *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector *conn; struct drm_display_mode *preferred; + unsigned char no_edid[] =3D {}; int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init_funcs(test, - BIT(HDMI_COLORSPACE_RGB), - 8, - &reject_connector_hdmi_funcs); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + &reject_connector_hdmi_funcs, + no_edid); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; @@ -1995,20 +1937,14 @@ static void drm_test_check_mode_valid_reject_max_cl= ock(struct kunit *test) struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_connector *conn; struct drm_display_mode *preferred; - int ret; =20 - priv =3D drm_kunit_helper_connector_hdmi_init(test, - BIT(HDMI_COLORSPACE_RGB), - 8); + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + test_edid_hdmi_1080p_rgb_max_100mhz); KUNIT_ASSERT_NOT_NULL(test, priv); =20 conn =3D &priv->connector; - - ret =3D set_connector_edid(test, conn, - test_edid_hdmi_1080p_rgb_max_100mhz, - ARRAY_SIZE(test_edid_hdmi_1080p_rgb_max_100mhz)); - KUNIT_ASSERT_GT(test, ret, 0); - KUNIT_ASSERT_EQ(test, conn->display_info.max_tmds_clock, 100 * 1000); =20 preferred =3D find_preferred_mode(conn); --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 F1D481DF97C for ; Wed, 26 Mar 2025 10:20:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984413; cv=none; b=EcZQwuUM2+rOH6w6AEGkJsOx5HACea5y97uuDSJWJlyDacu8M22U6y5naQ6Vgxxc3AZJeIYjmYzg3QaCgcLrTaepUBwN9FCzjm70w5U04jZD4lMVned4nBUju5CXoo/YxLz4kd9cdWIVz5TtfC1CSbmV8RIghAnR+xX66EtzC+4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984413; c=relaxed/simple; bh=lBLcJTp27oH8nx+Q42bjYsDuSqrlS+B/PS5pKuzffio=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QRkceq8MopfmAlw+0gDLHPxiionYY7Wu2jGXUPYOxKGkry9CS68vch80qPoPmToUgKsCI+UralX2b+BXEwTbmW7TExykuawMnLQ4A+fwIDSQAWEqGkn+KMcwkDyF3C7ROFimhy+koW/3aRGzbwR73W3rzb0hck99Ch943oRqiX4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=NV/BRJay; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="NV/BRJay" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984410; bh=lBLcJTp27oH8nx+Q42bjYsDuSqrlS+B/PS5pKuzffio=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NV/BRJayJottts90cn7jmeXPwaKQnX7Wy7IxeKaGstQk/ybxs3mj68eQPQLf9aSJx wnu5mXcK+eHFubUglTvEU+YGp9OYJDxtvah0DePS7arPMbA8aD0PG1rLFgZFRkczhY +3T8BHs1b/4PD1H74rtuQi3bC+XLye583bCdwf9ZANCQ6J6RigJdoSUZ5++DOteoZ5 wmYerypN42xgiMBO09hBIlesMDxbv+rXg+CsJSRbX7Rb8rTWvFdgKKDc0ftv382Xx0 D5rpS+af1jNjkAHSwpsBYpNQ9ScJtQuj9q8QxqJRbto4tO8tiNysq3QXZkfTJCay/v 8a3aADXMqcO7g== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 60C4217E0B9D; Wed, 26 Mar 2025 11:20:10 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:20:00 +0200 Subject: [PATCH v3 11/15] drm/tests: hdmi: Drop unused drm_kunit_helper_connector_hdmi_init_funcs() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-11-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 After updating the code to make use of the new EDID setup helpers, drm_kunit_helper_connector_hdmi_init_funcs() became unused, hence drop it. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 7b2aaee5009ce58e6edf2649e2182c43ba834523..1e32694041277a541f0f8941d9c= 35e8ca9264599 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -207,9 +207,6 @@ connector_hdmi_init_with_edid_funcs(struct kunit *test, return priv; } =20 -#define drm_kunit_helper_connector_hdmi_init_funcs(test, formats, max_bpc,= funcs) \ - connector_hdmi_init_with_edid_funcs(test, formats, max_bpc, funcs, NULL, = 0) - #define drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, formats= , max_bpc, funcs, edid) \ connector_hdmi_init_with_edid_funcs(test, formats, max_bpc, funcs, edid, = ARRAY_SIZE(edid)) =20 --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 1B1D21E1DF5 for ; Wed, 26 Mar 2025 10:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984415; cv=none; b=tpNK4QSyf9d+3rGvlbvFCvLRRkEzSusJrowpLqywGftFPJ2m1ZXFWrLTijiE8Rb2aEnBRk1fZqupEhyYLtsC5i6TeQfupBYm4Jb4NEkZ2wDS86ovy0siodaNx1xjnFxuHajnDntwYG+yw+yj2ekTBfOqN36NxTniKSDYYrS7P20= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984415; c=relaxed/simple; bh=MaB98o554CFGNYLkXFYvFzYePL2MI+O6Ngqg2ShcBKM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nnY2CXzLmQtLMrp0XcWr/5/PpiPEfVlS74i3Kaz87IK5qLBqLewPJsVJ+9Kex2pWEVi/0EYe/8h7zD3uAkresew6p/VubvM+EcdcNLGFLIkOGCxroKq3Vm5n6JtcyXC51Hwt5als3EQHhRtXF1KWUvnWDpzJQQn4HrTI750txB8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=QZot1iL1; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="QZot1iL1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984411; bh=MaB98o554CFGNYLkXFYvFzYePL2MI+O6Ngqg2ShcBKM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QZot1iL1GK9/Bv3fh0MXIBSlfgx9wlgNLGrkSvFK5xbriL5z9icgJp4oU/dgA0Qfd mUeCK1jvVFkkLIZpRH4wQ7WVYkfoZKvbJu5t5P1/q90dc3eRUV6N2gnSmap8ndRSYC MdA0KsQwQpIJLxZZaIZ41Uc7lxdAY1gppt89/cSV50dvAG3JpCZe3tJbIa6BqMDDJG CwHMznkhfPw+R8s644efVrJ1CzyeVD/7kjqYiIeG6z07awVmKzbKyNkHzGGJIV6OJc 29vnGF3eUeCbu0GNoOPOa1ZyXRIj0CowfUnTc2o5Ei1DOco5yXctmU6bhfGf8u+a/e AMnTkWnZKLNsw== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 8226A17E0E8D; Wed, 26 Mar 2025 11:20:11 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:20:01 +0200 Subject: [PATCH v3 12/15] drm/tests: hdmi: Setup ycbcr_420_allowed before initializing connector Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-12-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Initializing HDMI connector via drmm_connector_hdmi_init() requires its ->ycbcr_420_allowed flag to be adjusted according to the supported formats passed as function argument, prior to the actual invocation. In order to allow providing test coverage for YUV420 modes, ensure the flag is properly setup. Signed-off-by: Cristian Ciocaltea Reviewed-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 1e32694041277a541f0f8941d9c35e8ca9264599..6897515189a0649a267196b2469= 44efc92ace336 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -184,6 +184,8 @@ connector_hdmi_init_with_edid_funcs(struct kunit *test, enc->possible_crtcs =3D drm_crtc_mask(priv->crtc); =20 conn =3D &priv->connector; + conn->ycbcr_420_allowed =3D !!(formats & BIT(HDMI_COLORSPACE_YUV420)); + ret =3D drmm_connector_hdmi_init(drm, conn, "Vendor", "Product", &dummy_connector_funcs, --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 3997C1E1E0E for ; Wed, 26 Mar 2025 10:20:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984416; cv=none; b=ox5OtBxwUUpQgIm3l+jKSQMTBCoI6hTrTPCmehWVJuMWGZ/dBEb4fzUE9caR7i2tYf7tfsadCPmNIklRH8a7lhxZT50MqAjsQ4ePW7hnt6l1j2yuYW2EUKncSemhLiaX5z9KxTdlYl3NGnRe+xtQLwExEftMr9a6lqek3cK99og= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984416; c=relaxed/simple; bh=DC7S9k/7P2Ca1/C5nLLES/NRHZH+ECTZgYKXQavDpQ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KLqCpR+in2TgVK9No3S4sEEFoD0fd28ATPCXXI5gvhJDyT9AmffKwT4gXdG/XhRkk/wJC7cnKOQFOKCkgpHY6MAyJ4YoeQFNcb3yk/ArwU740t620IqaKEIB2eHGdhEq64Nxa/gxJE4AWVHt6HkzpNTK9Zq/bov2yH/eLlopI6M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=kLbyszcG; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="kLbyszcG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984412; bh=DC7S9k/7P2Ca1/C5nLLES/NRHZH+ECTZgYKXQavDpQ4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kLbyszcGLMDrhDGk/o+LRuyKUAch08Bnk2lVHB8vZz8DQnHbdc5lMcTBn3cC9p7Te BXCIEP3Lv/xh2NtkpzBwnfvTw6CuBhz0Go+tGOZwu++vqKO52UTUYXibNbtVwaPwJv yl+Xw1wLYayWMQO2sIFWmMS371AbFLpF0YZfEFCypRZDE6evT3jmNIzZOpd1e67LpC Wko9vFXlR76F+WIz2gYCdgdOjxt/9RWNsENXEXaRKzWxZs30gRrrlJSQNxIHaDRHRr XHWy7iCrGIJHzl0dSLYe6CCpNTCJ1SlBsSBpGXEPjvIZY8eQIzvgKr6nTUHM6h8VAd L023iMhLKmsxA== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 54CCE17E0FDB; Wed, 26 Mar 2025 11:20:12 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:20:02 +0200 Subject: [PATCH v3 13/15] drm/tests: hdmi: Add limited range tests for YUV420 mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-13-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Provide tests to verify that drm_atomic_helper_connector_hdmi_check() helper behaviour when using YUV420 output format is to always set the limited RGB quantization range to 'limited', no matter what the value of Broadcast RGB property is. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 89 +++++++++++++++- drivers/gpu/drm/tests/drm_kunit_edid.h | 112 +++++++++++++++++= ++++ 2 files changed, 196 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 6897515189a0649a267196b246944efc92ace336..3fae7ccf65309a1d8a4acf12de9= 61713b9163096 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -731,6 +731,88 @@ static void drm_test_check_broadcast_rgb_limited_cea_m= ode_vic_1(struct kunit *te drm_modeset_acquire_fini(&ctx); } =20 +/* + * Test that for an HDMI connector, with an HDMI monitor, we will + * get a limited RGB Quantization Range with a YUV420 mode, no + * matter what the value of the Broadcast RGB property is set to. + */ +static void drm_test_check_broadcast_rgb_cea_mode_yuv420(struct kunit *tes= t) +{ + struct drm_atomic_helper_connector_hdmi_priv *priv; + enum drm_hdmi_broadcast_rgb broadcast_rgb; + struct drm_modeset_acquire_ctx ctx; + struct drm_connector_state *conn_state; + struct drm_atomic_state *state; + struct drm_display_mode *mode; + struct drm_connector *conn; + struct drm_device *drm; + struct drm_crtc *crtc; + int ret; + + broadcast_rgb =3D *(enum drm_hdmi_broadcast_rgb *)test->param_value; + + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 8, + test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_200mhz); + KUNIT_ASSERT_NOT_NULL(test, priv); + + drm =3D &priv->drm; + crtc =3D priv->crtc; + conn =3D &priv->connector; + KUNIT_ASSERT_TRUE(test, conn->display_info.is_hdmi); + + mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 95); + KUNIT_ASSERT_NOT_NULL(test, mode); + + drm_modeset_acquire_init(&ctx, 0); + + ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, + crtc, conn, + mode, &ctx); + KUNIT_ASSERT_EQ(test, ret, 0); + + state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); + + conn_state =3D drm_atomic_get_connector_state(state, conn); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); + + conn_state->hdmi.broadcast_rgb =3D broadcast_rgb; + + ret =3D drm_atomic_check_only(state); + KUNIT_ASSERT_EQ(test, ret, 0); + + conn_state =3D drm_atomic_get_connector_state(state, conn); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); + + KUNIT_ASSERT_EQ(test, conn_state->hdmi.broadcast_rgb, broadcast_rgb); + KUNIT_ASSERT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_YUV= 420); + + KUNIT_EXPECT_TRUE(test, conn_state->hdmi.is_limited_range); + + drm_modeset_drop_locks(&ctx); + drm_modeset_acquire_fini(&ctx); +} + +static const enum drm_hdmi_broadcast_rgb check_broadcast_rgb_cea_mode_yuv4= 20_tests[] =3D { + DRM_HDMI_BROADCAST_RGB_AUTO, + DRM_HDMI_BROADCAST_RGB_FULL, + DRM_HDMI_BROADCAST_RGB_LIMITED, +}; + +static void +check_broadcast_rgb_cea_mode_yuv420_desc(const enum drm_hdmi_broadcast_rgb= *broadcast_rgb, + char *desc) +{ + sprintf(desc, "%s", drm_hdmi_connector_get_broadcast_rgb_name(*broadcast_= rgb)); +} + +KUNIT_ARRAY_PARAM(check_broadcast_rgb_cea_mode_yuv420, + check_broadcast_rgb_cea_mode_yuv420_tests, + check_broadcast_rgb_cea_mode_yuv420_desc); + /* * Test that if we change the maximum bpc property to a different value, * we trigger a mode change on the connector's CRTC, which will in turn @@ -1650,11 +1732,8 @@ static struct kunit_case drm_atomic_helper_connector= _hdmi_check_tests[] =3D { KUNIT_CASE(drm_test_check_broadcast_rgb_full_cea_mode_vic_1), KUNIT_CASE(drm_test_check_broadcast_rgb_limited_cea_mode), KUNIT_CASE(drm_test_check_broadcast_rgb_limited_cea_mode_vic_1), - /* - * TODO: When we'll have YUV output support, we need to check - * that the limited range is always set to limited no matter - * what the value of Broadcast RGB is. - */ + KUNIT_CASE_PARAM(drm_test_check_broadcast_rgb_cea_mode_yuv420, + check_broadcast_rgb_cea_mode_yuv420_gen_params), KUNIT_CASE(drm_test_check_broadcast_rgb_crtc_mode_changed), KUNIT_CASE(drm_test_check_broadcast_rgb_crtc_mode_not_changed), KUNIT_CASE(drm_test_check_disable_connector), diff --git a/drivers/gpu/drm/tests/drm_kunit_edid.h b/drivers/gpu/drm/tests= /drm_kunit_edid.h index 6358397a5d7ab0bcdea1c824fc9fd382560f4b0e..ff316e6114d65c96b1338cd83bc= 0d8d9e6e143e9 100644 --- a/drivers/gpu/drm/tests/drm_kunit_edid.h +++ b/drivers/gpu/drm/tests/drm_kunit_edid.h @@ -583,4 +583,116 @@ static const unsigned char test_edid_hdmi_1080p_rgb_y= uv_dc_max_340mhz[] =3D { 0x00, 0x00, 0x00, 0x8c }; =20 +/* + * edid-decode (hex): + * + * 00 ff ff ff ff ff ff 00 31 d8 34 00 00 00 00 00 + * ff 23 01 03 80 60 36 78 0f ee 91 a3 54 4c 99 26 + * 0f 50 54 20 00 00 01 01 01 01 01 01 01 01 01 01 + * 01 01 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c + * 45 00 c0 1c 32 00 00 1e 00 00 00 fc 00 54 65 73 + * 74 20 45 44 49 44 0a 20 20 20 00 00 00 fd 00 18 + * 55 18 5e 11 00 0a 20 20 20 20 20 20 00 00 00 10 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 bb + * + * 02 03 29 31 42 90 5f 6c 03 0c 00 10 00 78 28 20 + * 00 00 01 03 6d d8 5d c4 01 28 80 07 00 00 00 00 + * 00 00 e3 0f 00 00 e2 0e 5f 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ca + * + * ---------------- + * + * Block 0, Base EDID: + * EDID Structure Version & Revision: 1.3 + * Vendor & Product Identification: + * Manufacturer: LNX + * Model: 52 + * Model year: 2025 + * Basic Display Parameters & Features: + * Digital display + * Maximum image size: 96 cm x 54 cm + * Gamma: 2.20 + * RGB color display + * Default (sRGB) color space is primary color space + * First detailed timing is the preferred timing + * Supports GTF timings within operating range + * Color Characteristics: + * Red : 0.6396, 0.3300 + * Green: 0.2998, 0.5996 + * Blue : 0.1503, 0.0595 + * White: 0.3125, 0.3291 + * Established Timings I & II: + * DMT 0x04: 640x480 59.940476 Hz 4:3 31.469 kHz 25.175= 000 MHz + * Standard Timings: none + * Detailed Timing Descriptors: + * DTD 1: 1920x1080 60.000000 Hz 16:9 67.500 kHz 148.500000= MHz (960 mm x 540 mm) + * Hfront 88 Hsync 44 Hback 148 Hpol P + * Vfront 4 Vsync 5 Vback 36 Vpol P + * Display Product Name: 'Test EDID' + * Display Range Limits: + * Monitor ranges (GTF): 24-85 Hz V, 24-94 kHz H, max dotclock 170 M= Hz + * Dummy Descriptor: + * Extension blocks: 1 + * Checksum: 0xbb + * + * ---------------- + * + * Block 1, CTA-861 Extension Block: + * Revision: 3 + * Supports YCbCr 4:4:4 + * Supports YCbCr 4:2:2 + * Native detailed modes: 1 + * Video Data Block: + * VIC 16: 1920x1080 60.000000 Hz 16:9 67.500 kHz 148.5000= 00 MHz (native) + * VIC 95: 3840x2160 30.000000 Hz 16:9 67.500 kHz 297.0000= 00 MHz + * Vendor-Specific Data Block (HDMI), OUI 00-0C-03: + * Source physical address: 1.0.0.0 + * DC_48bit + * DC_36bit + * DC_30bit + * DC_Y444 + * Maximum TMDS clock: 200 MHz + * Extended HDMI video details: + * Vendor-Specific Data Block (HDMI Forum), OUI C4-5D-D8: + * Version: 1 + * Maximum TMDS Character Rate: 200 MHz + * SCDC Present + * Supports 16-bits/component Deep Color 4:2:0 Pixel Encoding + * Supports 12-bits/component Deep Color 4:2:0 Pixel Encoding + * Supports 10-bits/component Deep Color 4:2:0 Pixel Encoding + * YCbCr 4:2:0 Capability Map Data Block: + * Empty Capability Map + * YCbCr 4:2:0 Video Data Block: + * VIC 95: 3840x2160 30.000000 Hz 16:9 67.500 kHz 297.0000= 00 MHz + * Checksum: 0xca + */ +static const unsigned char test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_2= 00mhz[] =3D { + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x31, 0xd8, 0x34, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x23, 0x01, 0x03, 0x80, 0x60, 0x36, 0x78, + 0x0f, 0xee, 0x91, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0x20, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, + 0x2d, 0x40, 0x58, 0x2c, 0x45, 0x00, 0xc0, 0x1c, 0x32, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x44, + 0x49, 0x44, 0x0a, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x18, + 0x55, 0x18, 0x5e, 0x11, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xbb, 0x02, 0x03, 0x29, 0x31, + 0x42, 0x90, 0x5f, 0x6c, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x78, 0x28, 0x20, + 0x00, 0x00, 0x01, 0x03, 0x6d, 0xd8, 0x5d, 0xc4, 0x01, 0x28, 0x80, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x0f, 0x00, 0x00, 0xe2, 0x0e, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xca +}; + #endif // DRM_KUNIT_EDID_H_ --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 6835D1DE4DD for ; Wed, 26 Mar 2025 10:20:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984417; cv=none; b=qq97iIUsK7/BjuB8SdEMYgdrGU6aoc8MVHJT3i4Xx9VZVfwgfY8yMgMbXm4AuaXN5VDYp383DPDiri53X583FFsALDKNNTKW+SECz2lQ8RuRgUn64dlw58Eea+HsBJRKZ/1VYB+GVCCm5tFZla0IEx9yqBPlU2uh6wvo/F0dfTs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984417; c=relaxed/simple; bh=eZjX7H0Y9w09K1pJ/FhphjSNLvTmmJ2wDZxginMxNkc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Kjms/VsgL7bAc9Zq0mBKG1aqGbQfJmTdDmqUl4SJq/FIZcQH0dbjo3EhNt74s5nc36CQWkFOJDscHMB4f0W3KWZqvlD6m1OvxBMsxAO9svgmxhm2sklKcMT7zX0R4Ym8Wjw4FYhLlJ2JGrqafhIDJqnEqmpXJiavSo4wULMeh3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=K2oS3KyF; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="K2oS3KyF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984414; bh=eZjX7H0Y9w09K1pJ/FhphjSNLvTmmJ2wDZxginMxNkc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=K2oS3KyF44JTqGU1ztBn9TtB6SOpnm6/HAvl2sKqbhba4pNiVrYz3Z5BuRsNhMjjY t9Qf+EQ0j4zHVeJ2aTzbX7K/yCB2wfIFsKtw+UVafD+JN7p0UbeU3d//zlUk8KLjdT DZT0QtwSIkrAKxAGGRhjBdFn2xWwPIPrZ6hXpmq2IvsBazU9bWDs/RYBjfdHeqnb6K T3KOTr4NjvZnnP90Qu3PEJdNKHYpRAkZd/KDzL4HY2VECntwlAbU5nrpsO9/7MvsxM AoJlKsdLr9beFA4wXX7mmm5tHWNPezf5HM3C6HU46q+wWKDAPUn2QVuYX2HTO//ynI p/fFYdLM6bgJg== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id C98F417E0A5D; Wed, 26 Mar 2025 11:20:13 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:20:03 +0200 Subject: [PATCH v3 14/15] drm/tests: hdmi: Add max TMDS rate fallback tests for YUV420 mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-14-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Provide tests to verify drm_atomic_helper_connector_hdmi_check() helper fallback behavior when using YUV420 output. Also rename drm_test_check_max_tmds_rate_{bpc|format}_fallback() to better differentiate from the newly introduced *_yuv420() variants. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 152 +++++++++++++++++= +++- drivers/gpu/drm/tests/drm_kunit_edid.h | 110 +++++++++++++++ 2 files changed, 258 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 3fae7ccf65309a1d8a4acf12de961713b9163096..99bedb2d6f555b3b140256000df= a7491d2a8f515 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -1224,7 +1224,7 @@ static void drm_test_check_hdmi_funcs_reject_rate(str= uct kunit *test) * Then we will pick the latter, and the computed TMDS character rate * will be equal to 1.25 times the mode pixel clock. */ -static void drm_test_check_max_tmds_rate_bpc_fallback(struct kunit *test) +static void drm_test_check_max_tmds_rate_bpc_fallback_rgb(struct kunit *te= st) { struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_modeset_acquire_ctx ctx; @@ -1279,6 +1279,75 @@ static void drm_test_check_max_tmds_rate_bpc_fallbac= k(struct kunit *test) drm_modeset_acquire_fini(&ctx); } =20 +/* + * Test that if: + * - We have an HDMI connector supporting both RGB and YUV420 + * - The chosen mode can be supported in YUV420 output format only + * - The chosen mode has a TMDS character rate higher than the display + * supports in YUV420/12bpc + * - The chosen mode has a TMDS character rate lower than the display + * supports in YUV420/10bpc. + * + * Then we will pick the latter, and the computed TMDS character rate + * will be equal to 1.25 * 0.5 times the mode pixel clock. + */ +static void drm_test_check_max_tmds_rate_bpc_fallback_yuv420(struct kunit = *test) +{ + struct drm_atomic_helper_connector_hdmi_priv *priv; + struct drm_modeset_acquire_ctx ctx; + struct drm_connector_state *conn_state; + struct drm_display_info *info; + struct drm_display_mode *yuv420_only_mode; + unsigned long long rate; + struct drm_connector *conn; + struct drm_device *drm; + struct drm_crtc *crtc; + int ret; + + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 12, + test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_200mhz); + KUNIT_ASSERT_NOT_NULL(test, priv); + + drm =3D &priv->drm; + crtc =3D priv->crtc; + conn =3D &priv->connector; + info =3D &conn->display_info; + KUNIT_ASSERT_TRUE(test, info->is_hdmi); + KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); + KUNIT_ASSERT_TRUE(test, conn->ycbcr_420_allowed); + + yuv420_only_mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 95); + KUNIT_ASSERT_NOT_NULL(test, yuv420_only_mode); + KUNIT_ASSERT_TRUE(test, drm_mode_is_420_only(info, yuv420_only_mode)); + + rate =3D drm_hdmi_compute_mode_clock(yuv420_only_mode, 12, HDMI_COLORSPAC= E_YUV420); + KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); + + rate =3D drm_hdmi_compute_mode_clock(yuv420_only_mode, 10, HDMI_COLORSPAC= E_YUV420); + KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); + + drm_modeset_acquire_init(&ctx, 0); + + ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, + crtc, conn, + yuv420_only_mode, + &ctx); + KUNIT_EXPECT_EQ(test, ret, 0); + + conn_state =3D conn->state; + KUNIT_ASSERT_NOT_NULL(test, conn_state); + + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 10); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_YUV= 420); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.tmds_char_rate, yuv420_only_mode->= clock * 625); + + drm_modeset_drop_locks(&ctx); + drm_modeset_acquire_fini(&ctx); +} + /* * Test that if: * - We have an HDMI connector supporting both RGB and YUV422 and up to @@ -1292,7 +1361,7 @@ static void drm_test_check_max_tmds_rate_bpc_fallback= (struct kunit *test) * Then we will prefer to keep the RGB format with a lower bpc over * picking YUV422. */ -static void drm_test_check_max_tmds_rate_format_fallback(struct kunit *tes= t) +static void drm_test_check_max_tmds_rate_format_fallback_yuv422(struct kun= it *test) { struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_modeset_acquire_ctx ctx; @@ -1351,6 +1420,79 @@ static void drm_test_check_max_tmds_rate_format_fall= back(struct kunit *test) drm_modeset_acquire_fini(&ctx); } =20 +/* + * Test that if: + * - We have an HDMI connector supporting both RGB and YUV420 and up to + * 12 bpc + * - The chosen mode has a TMDS character rate higher than the display + * supports in RGB/10bpc but lower than the display supports in + * RGB/8bpc + * - The chosen mode has a TMDS character rate lower than the display + * supports in YUV420/12bpc. + * + * Then we will prefer to keep the RGB format with a lower bpc over + * picking YUV420. + */ +static void drm_test_check_max_tmds_rate_format_fallback_yuv420(struct kun= it *test) +{ + struct drm_atomic_helper_connector_hdmi_priv *priv; + struct drm_modeset_acquire_ctx ctx; + struct drm_connector_state *conn_state; + struct drm_display_info *info; + struct drm_display_mode *preferred; + unsigned long long rate; + struct drm_connector *conn; + struct drm_device *drm; + struct drm_crtc *crtc; + int ret; + + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 12, + test_edid_hdmi_4k_rgb_yuv420_dc_max_340mhz); + KUNIT_ASSERT_NOT_NULL(test, priv); + + drm =3D &priv->drm; + crtc =3D priv->crtc; + conn =3D &priv->connector; + info =3D &conn->display_info; + KUNIT_ASSERT_TRUE(test, info->is_hdmi); + KUNIT_ASSERT_GT(test, info->max_tmds_clock, 0); + KUNIT_ASSERT_TRUE(test, conn->ycbcr_420_allowed); + + preferred =3D find_preferred_mode(conn); + KUNIT_ASSERT_NOT_NULL(test, preferred); + KUNIT_ASSERT_FALSE(test, preferred->flags & DRM_MODE_FLAG_DBLCLK); + KUNIT_ASSERT_TRUE(test, drm_mode_is_420_also(info, preferred)); + + rate =3D drm_hdmi_compute_mode_clock(preferred, 8, HDMI_COLORSPACE_RGB); + KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); + + rate =3D drm_hdmi_compute_mode_clock(preferred, 10, HDMI_COLORSPACE_RGB); + KUNIT_ASSERT_GT(test, rate, info->max_tmds_clock * 1000); + + rate =3D drm_hdmi_compute_mode_clock(preferred, 12, HDMI_COLORSPACE_YUV42= 0); + KUNIT_ASSERT_LT(test, rate, info->max_tmds_clock * 1000); + + drm_modeset_acquire_init(&ctx, 0); + + ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); + KUNIT_EXPECT_EQ(test, ret, 0); + + conn_state =3D conn->state; + KUNIT_ASSERT_NOT_NULL(test, conn_state); + + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_bpc, 8); + KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB= ); + + drm_modeset_drop_locks(&ctx); + drm_modeset_acquire_fini(&ctx); +} + /* * Test that if a driver and screen supports RGB and YUV formats, and we * try to set the VIC 1 mode, we end up with 8bpc RGB even if we could @@ -1738,8 +1880,10 @@ static struct kunit_case drm_atomic_helper_connector= _hdmi_check_tests[] =3D { KUNIT_CASE(drm_test_check_broadcast_rgb_crtc_mode_not_changed), KUNIT_CASE(drm_test_check_disable_connector), KUNIT_CASE(drm_test_check_hdmi_funcs_reject_rate), - KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback), - KUNIT_CASE(drm_test_check_max_tmds_rate_format_fallback), + KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_rgb), + KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_yuv420), + KUNIT_CASE(drm_test_check_max_tmds_rate_format_fallback_yuv422), + KUNIT_CASE(drm_test_check_max_tmds_rate_format_fallback_yuv420), KUNIT_CASE(drm_test_check_output_bpc_crtc_mode_changed), KUNIT_CASE(drm_test_check_output_bpc_crtc_mode_not_changed), KUNIT_CASE(drm_test_check_output_bpc_dvi), diff --git a/drivers/gpu/drm/tests/drm_kunit_edid.h b/drivers/gpu/drm/tests= /drm_kunit_edid.h index ff316e6114d65c96b1338cd83bc0d8d9e6e143e9..8e9086df20c690f34623d7858c7= 16032d77d0c26 100644 --- a/drivers/gpu/drm/tests/drm_kunit_edid.h +++ b/drivers/gpu/drm/tests/drm_kunit_edid.h @@ -695,4 +695,114 @@ static const unsigned char test_edid_hdmi_1080p_rgb_y= uv_4k_yuv420_dc_max_200mhz[ 0x00, 0x00, 0x00, 0xca }; =20 +/* + * edid-decode (hex): + * + * 00 ff ff ff ff ff ff 00 31 d8 34 00 00 00 00 00 + * ff 23 01 03 80 60 36 78 0f ee 91 a3 54 4c 99 26 + * 0f 50 54 20 00 00 01 01 01 01 01 01 01 01 01 01 + * 01 01 01 01 01 01 04 74 00 30 f2 70 5a 80 b0 58 + * 8a 00 40 84 63 00 00 1e 00 00 00 fc 00 54 65 73 + * 74 20 45 44 49 44 0a 20 20 20 00 00 00 fd 00 18 + * 55 18 5e 22 00 0a 20 20 20 20 20 20 00 00 00 10 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ce + * + * 02 03 27 31 41 5f 6c 03 0c 00 10 00 78 44 20 00 + * 00 01 03 6d d8 5d c4 01 44 80 07 00 00 00 00 00 + * 00 e3 0f 01 00 e1 0e 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 84 + * + * ---------------- + * + * Block 0, Base EDID: + * EDID Structure Version & Revision: 1.3 + * Vendor & Product Identification: + * Manufacturer: LNX + * Model: 52 + * Model year: 2025 + * Basic Display Parameters & Features: + * Digital display + * Maximum image size: 96 cm x 54 cm + * Gamma: 2.20 + * RGB color display + * Default (sRGB) color space is primary color space + * First detailed timing is the preferred timing + * Supports GTF timings within operating range + * Color Characteristics: + * Red : 0.6396, 0.3300 + * Green: 0.2998, 0.5996 + * Blue : 0.1503, 0.0595 + * White: 0.3125, 0.3291 + * Established Timings I & II: + * DMT 0x04: 640x480 59.940476 Hz 4:3 31.469 kHz 25.175= 000 MHz + * Standard Timings: none + * Detailed Timing Descriptors: + * DTD 1: 3840x2160 30.000000 Hz 16:9 67.500 kHz 297.000000= MHz (1600 mm x 900 mm) + * Hfront 176 Hsync 88 Hback 296 Hpol P + * Vfront 8 Vsync 10 Vback 72 Vpol P + * Display Product Name: 'Test EDID' + * Display Range Limits: + * Monitor ranges (GTF): 24-85 Hz V, 24-94 kHz H, max dotclock 340 M= Hz + * Dummy Descriptor: + * Extension blocks: 1 + * Checksum: 0xce + * + * ---------------- + * + * Block 1, CTA-861 Extension Block: + * Revision: 3 + * Supports YCbCr 4:4:4 + * Supports YCbCr 4:2:2 + * Native detailed modes: 1 + * Video Data Block: + * VIC 95: 3840x2160 30.000000 Hz 16:9 67.500 kHz 297.0000= 00 MHz + * Vendor-Specific Data Block (HDMI), OUI 00-0C-03: + * Source physical address: 1.0.0.0 + * DC_48bit + * DC_36bit + * DC_30bit + * DC_Y444 + * Maximum TMDS clock: 340 MHz + * Extended HDMI video details: + * Vendor-Specific Data Block (HDMI Forum), OUI C4-5D-D8: + * Version: 1 + * Maximum TMDS Character Rate: 340 MHz + * SCDC Present + * Supports 16-bits/component Deep Color 4:2:0 Pixel Encoding + * Supports 12-bits/component Deep Color 4:2:0 Pixel Encoding + * Supports 10-bits/component Deep Color 4:2:0 Pixel Encoding + * YCbCr 4:2:0 Capability Map Data Block: + * VIC 95: 3840x2160 30.000000 Hz 16:9 67.500 kHz 297.0000= 00 MHz + * YCbCr 4:2:0 Video Data Block: + * Checksum: 0x84 + */ +static const unsigned char test_edid_hdmi_4k_rgb_yuv420_dc_max_340mhz[] = =3D { + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x31, 0xd8, 0x34, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x23, 0x01, 0x03, 0x80, 0x60, 0x36, 0x78, + 0x0f, 0xee, 0x91, 0xa3, 0x54, 0x4c, 0x99, 0x26, 0x0f, 0x50, 0x54, 0x20, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x74, 0x00, 0x30, 0xf2, 0x70, + 0x5a, 0x80, 0xb0, 0x58, 0x8a, 0x00, 0x40, 0x84, 0x63, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0xfc, 0x00, 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x44, + 0x49, 0x44, 0x0a, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x18, + 0x55, 0x18, 0x5e, 0x22, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xce, 0x02, 0x03, 0x27, 0x31, + 0x41, 0x5f, 0x6c, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x78, 0x44, 0x20, 0x00, + 0x00, 0x01, 0x03, 0x6d, 0xd8, 0x5d, 0xc4, 0x01, 0x44, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x0f, 0x01, 0x00, 0xe1, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x84 +}; + #endif // DRM_KUNIT_EDID_H_ --=20 2.49.0 From nobody Fri Dec 19 10:44:02 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 EE25D1E835A for ; Wed, 26 Mar 2025 10:20:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984418; cv=none; b=Cu5ErghlgqnPgCpUOvPX05d1zZNcC1FPqsWh3pwi/PMfr59p4HQ9c8XAllK9Boj0arbF/BJWFMABPInRrpx1zXWLnfD/EAzycjEQhu5xnIuua6eOk9Bzp6kgvix+KHWbyg+5fXv6O/sWfrUKMyKEWhaZwmGeNTT3OYl1bURFPqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742984418; c=relaxed/simple; bh=emC1Ap/GyYEiZF9+ueiI+N364GJu+ISfmPEzU6k0TqQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aaQLADJLlSdTsVAKRq3q/dwps+n89mrcQJf1BaA8yWvvxvYElfAEpsS/16v3OodzMrlJAh21Y63EbgMf53TEXdZGVMl27vunjTYYYUvRvw1rWjcG0Ph33m2zzFvUB/vQguyQPLg8YO4oYng9aABNxseZovWSAXLCk9YJxBXuecU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=PeFvgVGw; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="PeFvgVGw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1742984415; bh=emC1Ap/GyYEiZF9+ueiI+N364GJu+ISfmPEzU6k0TqQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PeFvgVGwyQafHYULtLhzNKltRkaaXKtNVebk1xbetqan/Vrtx+36b2Gr4iPNWz8q0 5a1YbJP4mgYNbYSVq2Ljafn4w3HG61/Vp4rQz6SAkF727EXBi1RLF74OcauNY59kV7 jxPKTr6ksm58egQBpEz3Vii8w/SnyK7inuYcTu6n4kydUgzFw7iu0IfPCqP+82Op3V UjLB2uPkEm4++sroyAEdprGB/+tNOQ7bWQfdz6sZ65eZ5iyA5wHgLWIQlhIGkXR/Ph 4Kpow6g3aqpAmRJDbFbcFiTBsPw9Z6L5ENLCHYlsLarXL25D5uxEOLVJ79z8NuXxqI QthgN9lBAU4lA== Received: from localhost (unknown [84.232.140.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 5736A17E0B9D; Wed, 26 Mar 2025 11:20:15 +0100 (CET) From: Cristian Ciocaltea Date: Wed, 26 Mar 2025 12:20:04 +0200 Subject: [PATCH v3 15/15] drm/tests: hdmi: Add test for unsuccessful forced fallback to YUV420 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250326-hdmi-conn-yuv-v3-15-294d3ebbb4b2@collabora.com> References: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> In-Reply-To: <20250326-hdmi-conn-yuv-v3-0-294d3ebbb4b2@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Provide test to verify a forced fallback to YUV420 output cannot succeed when driver doesn't advertise YUV420 support. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 46 ++++++++++++++++++= ++++ 1 file changed, 46 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/g= pu/drm/tests/drm_hdmi_state_helper_test.c index 99bedb2d6f555b3b140256000dfa7491d2a8f515..c2976b42aa2aacd2a68a871bffe= 97e795ca713d4 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -1493,6 +1493,51 @@ static void drm_test_check_max_tmds_rate_format_fall= back_yuv420(struct kunit *te drm_modeset_acquire_fini(&ctx); } =20 +/* + * Test that if a driver supports only RGB, but the chosen mode can be + * supported by the screen only in YUV420 output format, we end up with + * an unsuccessful forced fallback attempt. + */ +static void drm_test_check_driver_unsupported_fallback_yuv420(struct kunit= *test) +{ + struct drm_atomic_helper_connector_hdmi_priv *priv; + struct drm_modeset_acquire_ctx ctx; + struct drm_display_info *info; + struct drm_display_mode *yuv420_only_mode; + struct drm_connector *conn; + struct drm_device *drm; + struct drm_crtc *crtc; + int ret; + + priv =3D drm_kunit_helper_connector_hdmi_init_with_edid(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + test_edid_hdmi_1080p_rgb_yuv_4k_yuv420_dc_max_200mhz); + KUNIT_ASSERT_NOT_NULL(test, priv); + + drm =3D &priv->drm; + crtc =3D priv->crtc; + conn =3D &priv->connector; + info =3D &conn->display_info; + KUNIT_ASSERT_TRUE(test, info->is_hdmi); + KUNIT_ASSERT_FALSE(test, conn->ycbcr_420_allowed); + + yuv420_only_mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 95); + KUNIT_ASSERT_NOT_NULL(test, yuv420_only_mode); + KUNIT_ASSERT_TRUE(test, drm_mode_is_420_only(info, yuv420_only_mode)); + + drm_modeset_acquire_init(&ctx, 0); + + ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, + crtc, conn, + yuv420_only_mode, + &ctx); + KUNIT_EXPECT_LT(test, ret, 0); + + drm_modeset_drop_locks(&ctx); + drm_modeset_acquire_fini(&ctx); +} + /* * Test that if a driver and screen supports RGB and YUV formats, and we * try to set the VIC 1 mode, we end up with 8bpc RGB even if we could @@ -1884,6 +1929,7 @@ static struct kunit_case drm_atomic_helper_connector_= hdmi_check_tests[] =3D { KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_yuv420), KUNIT_CASE(drm_test_check_max_tmds_rate_format_fallback_yuv422), KUNIT_CASE(drm_test_check_max_tmds_rate_format_fallback_yuv420), + KUNIT_CASE(drm_test_check_driver_unsupported_fallback_yuv420), KUNIT_CASE(drm_test_check_output_bpc_crtc_mode_changed), KUNIT_CASE(drm_test_check_output_bpc_crtc_mode_not_changed), KUNIT_CASE(drm_test_check_output_bpc_dvi), --=20 2.49.0