From nobody Sun Feb 8 13:11:01 2026 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 A1FCA218EB7 for ; Fri, 25 Apr 2025 10:28:21 +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=1745576903; cv=none; b=V21REKGxj5loof5MKGntI9kVHXm9rpQKsn9YAe83GO30zhaj4vJglUHK7JccSTjs2fhCeu+BGAWNJguuRO06LYibywRn142Gx/CvowV1ITyauRtgt277njP/BLTML7eqWmQEcaXnK79eCiVo5J8ylyuJz/6/wTAjUdtmUrBvlLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576903; c=relaxed/simple; bh=qBaZDed68HeBsS9t3oVt6nXAnHVorfDW+JQBpJqRRE4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UP4oyD95+tElGlQ0RBfXJddyt+45TYIALRXu2LOwCDAPez7F4he+nEc2ClF538dEFxtSxACDNbo9YxUJWOpfxFWWhS6lc7zAdjlVnvv7dhSExjJJiYEavdfQHVMsR6DbZEdfNR1v5LrDHF4wPYTVZwbjAVtWLMqR0354arGNJaI= 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=ZoEKiPTZ; 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="ZoEKiPTZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576899; bh=qBaZDed68HeBsS9t3oVt6nXAnHVorfDW+JQBpJqRRE4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZoEKiPTZ5xtO1gWHpJES95fZ+mpubBhQLhKrfDKUNfPXF/a0n51szA5BosafSJitG Ontz/EYCjsHv2kGCUZpKDQHzXoDN4O6DmCSeVM2L2WTy4vFUf/TbUDRzrQ5dpsUjOv BExdRPqn/otJ9xOqUTud4JXeT0e8BKXRdRr0UYiTPgVr0qqL5ADwdMdIhAEnoFX1Jt t84xO8RrpAo84JYlJb0J13hKZw8322n87dHlGcH5ge1qm8pLTADnjzRQSnQ0S7nnr2 XYpOGJRBWGC+cLhguEXkZZRyBbcX+mvZeFcgDLy1l4eZNjcLfpopGo2oTEquh8Z4E/ rnN/J9q9ND0ug== Received: from localhost (unknown [82.76.59.226]) (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 AD70117E362C; Fri, 25 Apr 2025 12:28:19 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:52 +0300 Subject: [PATCH v4 01/23] 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: <20250425-hdmi-conn-yuv-v4-1-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org 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 Sun Feb 8 13:11:01 2026 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 6139A23AE84 for ; Fri, 25 Apr 2025 10:28:22 +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=1745576904; cv=none; b=kUPEitg2A76LZNBiL96wqBt/fipc8F9fXDPAfoXb8P5+9869C8RD/dKP71lg0NjedeLgypfr9kU8ufAgGUfDJaJ2+apcsF6w9fxrFoklfzYtYnLFoTMAmh4BrskskgnO3Z/MYAR9hq7yAFEF0pN7dgMDZjNZxjGLXUWjTLA5vrU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576904; c=relaxed/simple; bh=hDK8q5L8c2jNpElW4zgOcFPPJjn+VRZ7mQuf0zc2rAA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gJASREYdXhmNmE/scvw+D7fjiwBXK7RvJVTW76i/JaDP/uO3pkUMywEg4eie0OBzPLGRB/LzaRBVCbkrOeVLx9JlN0IKPVPaPdQFQSOcsOISwehzWoLX13MNuCyKcKCgtkqlJP34LNpipS9ogU72ThWa5Zyccz+/cjY7REyDitg= 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=jjnBbSXV; 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="jjnBbSXV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576900; bh=hDK8q5L8c2jNpElW4zgOcFPPJjn+VRZ7mQuf0zc2rAA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jjnBbSXVImcY3mqQSVL78JWDQ7lD3DeSQDP8LDNyR2yRwgwluDFuiZDgWUCw1X4Gf PEI2rEsHDyIF4asAgcdUVc3nVlbTUKIClHiaHjtDkuQncDs7M3bkLhU8HFl4lD51ql 2hMiRgkGFI0F99smXsS9q2r/RFwlHUzsHG1k5yBNzxjBQocBTqA5ipYuyT4TVm1CpA dR6Hlr3gK02PjYjWD6JGR3dLRaRz8Z3F76MNKxe5XEfGipGWiyClmp2Ryf0l4rEPGO 9y9mlKF/oLD/1B2VWyxOY8ZUUJhaITwdkjK7mlCJveJAXFcuCHv7cNiCBJV1McBedb aVrqbN4oyfOjQ== Received: from localhost (unknown [82.76.59.226]) (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 8051417E36BB; Fri, 25 Apr 2025 12:28:20 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:53 +0300 Subject: [PATCH v4 02/23] 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: <20250425-hdmi-conn-yuv-v4-2-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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. Reviewed-by: Maxime Ripard Signed-off-by: Cristian Ciocaltea --- 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 Sun Feb 8 13:11:01 2026 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 4DD7423C368 for ; Fri, 25 Apr 2025 10:28:22 +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=1745576905; cv=none; b=T/YGUOxCwyDCuPwa3QhHzUp8BP4T3ud3gFb3pBKzTBeOsvtK7/15teCkzU43Z6LVbH7yfujMy/uWRpWDukrCab23jrVzGZ0dqoQa289mAZmF/euV+sAUPHwXUZgt3s+EUWZXqcCHF/KkisEsUA120CRef6llvIln908/nr75ekc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576905; c=relaxed/simple; bh=RlyWP2QsjTsHxaZYoCMc/KglO80bh7kVFpo7Z2MtuMo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OenIpf6Plajyn3/Zhpj9oSjZlk6LWsv19k5mvTyNuWSo7pB3XJ6EYXEEqfYNyZdPRhGxEzYoj9Chaz8Kma3BsKgE1sjzVKir00jX8nzAxSxejVTevNqVKbXvxV3+GyF3bnThIe6SG41IsSsLAxXPddm8CDRmRDsholnliwJGnoM= 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=eW8/xhNL; 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="eW8/xhNL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576901; bh=RlyWP2QsjTsHxaZYoCMc/KglO80bh7kVFpo7Z2MtuMo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eW8/xhNLt2VJCGIs0+YTtaGjdo4XZrQtwE9PjWT5VstPCpbMMKrU7aFEu1yHbyq8d WIgVz+Sj94TSfuCYKYO37Ss/OUMVViUxrkZW9VLJVxfFuDUBYLBmfgxrZ+j08nMxEu etQFVvA6cOLdXKQ6GTv43K0V6OcCzZNS+pZBTt6TRj0MCpoUmYH0zIqGd2VGoz1l1k XEGqmdoYyImVH8+Qo9p3BWLEbe2Xd7AqSBQ9SsnytsBeV+Q1JLuhfg7JQMnARPbgOp XeoSlpu96V+zPy55ymQ8ATCBo50KOeAFtz2lLR1w94/nRdraY25nV9G9Oxj/iECMJZ cBLIFirJn41TQ== Received: from localhost (unknown [82.76.59.226]) (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 51DE017E36BD; Fri, 25 Apr 2025 12:28:21 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:54 +0300 Subject: [PATCH v4 03/23] 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: <20250425-hdmi-conn-yuv-v4-3-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 Sun Feb 8 13:11:01 2026 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 2E4E623D291 for ; Fri, 25 Apr 2025 10:28:23 +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=1745576905; cv=none; b=YymJL5mrJ/uRsVV+9JZZDYdD0KN4T+U2vKMKg3GVpyyef4+4Snm9OttQEa2fGYdKqJEG1X6YkunwcB6rK8R1682BwjBy0wU+RUhiXGGisOoMvQj2Y+evLl5//XeLSVX++/4F6TnU9nBfvBi9pi35gcPq020TcKp4/4ifc+ujmO4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576905; c=relaxed/simple; bh=PTKc0qMhyffZmkIeafEd7FOxZootMCBO9iPVf+gzXDM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z4cKCBOy3G56lzU3IbSIh+73U/gmf33JxhuPqTv03IUHsb5pcLgV5BQe5Dme0gez5iJDDJKYOeKHJErvawOp4U4CkW5ftr8qcY41tKZ/Z+gonesEJSQikXnXeiYt1nsEMO768kD84nxA7B4tHMGPQ3OBI3txcwc9irY2dogY3a0= 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=DKtrVxXE; 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="DKtrVxXE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576902; bh=PTKc0qMhyffZmkIeafEd7FOxZootMCBO9iPVf+gzXDM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DKtrVxXEHk3txw0YxSnaTgKnbbFLqG5dt2pS0uBplLjIFGtzTyOtBv2gR0SSBvYRu W+Q2A/wTHXUfIvAA+sW8Tf8MovG5fZ/57PWjpB7Xcnj4N32L2LAGUrZZhX8/wAJg3t c3MvxfaY689KGZdlH555qHFNJevrKP1W7zoMtLBKJkLO2KmZ+Xk8Psd0FYPBaGrMa8 ct3AKfAqNtscIgkK5rRJHZDmq3aJ2fWcFlxS92KL0EjddgPxGW7v7HRM+nyPxuVWch R7isXPYov/uTyXPFY9ii+5Xxg+pKFWdTCdt/XB9/s7IgskKzsiutX8SbdkDNQHE61G tJyCIGa56pB0Q== Received: from localhost (unknown [82.76.59.226]) (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 263B717E36C1; Fri, 25 Apr 2025 12:28:22 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:55 +0300 Subject: [PATCH v4 04/23] 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: <20250425-hdmi-conn-yuv-v4-4-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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(). Reviewed-by: Dmitry Baryshkov Signed-off-by: Cristian Ciocaltea --- 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 Sun Feb 8 13:11:01 2026 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 CF99523D2BA for ; Fri, 25 Apr 2025 10:28:24 +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=1745576906; cv=none; b=Ilqci8Xu2UQAYMnHc9DLQ/xwHiS0NhHES0eCLrvIiAIgd7M2FD5R1PPNwUDd9Fhk6gCMUBgXnaMOXM3H89q0xAp3aUqE6bEEKn/cdU/K/Kwik/71nqpz6Qf5nftXnemxIu9Mw888DHJxYg1DXZfG9K6jT4td9GZ+HgNiehJz8Lc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576906; c=relaxed/simple; bh=hQYEKr2zXDxP9bu34k8zWrcza/c11kUeCIqH5XVu/y4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lQHVlEdEmh4aqrCYQ6PC6RBleovSNQBtzoGD+J2zXsXDE3Fx4TWM2AvcRxWByqCKOqtXyKzVSGEEzmfegtU1TSdvModM9TD9uDfdmJ9BSGnhWC/tGaQ1HAgkx0pwIcIviWIgf5v5s6QN2uSlgcmKNiMU9gM/Xap+jp5i2ZeiMTo= 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=H9yDFzh5; 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="H9yDFzh5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576903; bh=hQYEKr2zXDxP9bu34k8zWrcza/c11kUeCIqH5XVu/y4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=H9yDFzh5asVWhzjinXRaId1sFKkA1jIJldFHV34fEGDJIQj6w8MbOoaNw69Hbjn8B Q33QUa3IufkXd8+diK+u+gV09GeiRFTYKgpPq4kMDL9cjekF511sAzKg5enmU69cR0 qgHxsfCayhrYQy89/ec+xKfr9pANUzRjGhUJFPcKcp9IVxWNdXycYisAKw3AunJwhK yK3vbjTLwJEeWoP3w0ZkOcCc4M1bFi7Qcwl2mTBECCBGMKZUHee9WYY3v1mCFIX1WU 2D4rG7wpzXST86YraDYd2B1hHphqO2nRxt7srY6msLiMtquDT5P46X46tj3p5hDUaU 2LOH7+xY93ozA== Received: from localhost (unknown [82.76.59.226]) (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 F184D17E36C2; Fri, 25 Apr 2025 12:28:22 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:56 +0300 Subject: [PATCH v4 05/23] 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: <20250425-hdmi-conn-yuv-v4-5-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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(), while adding a new parameter to the latter holding the output format to be checked and eventually set. Since this helper now also changes hdmi.output_bpc in addition to hdmi.output_format, highlight the extended functionality by renaming it to hdmi_compute_format_bpc(). This improves code reusability and further extensibility, without introducing any functional changes. Reviewed-by: Maxime Ripard Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 60 ++++++++++++---------= ---- 1 file changed, 30 insertions(+), 30 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..9e0a468073acbb2477eff1abef1= c09d63620afaa 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -605,45 +605,22 @@ 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) -{ - 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) +hdmi_compute_format_bpc(const struct drm_connector *connector, + struct drm_connector_state *conn_state, + const struct drm_display_mode *mode, + unsigned int max_bpc, enum hdmi_colorspace fmt) { 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(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,32 @@ 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; + + /* + * TODO: Add support for YCbCr420 output for HDMI 2.0 capable + * devices, for modes that only support YCbCr420. + */ + 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 Sun Feb 8 13:11:01 2026 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 922DD23FC54 for ; Fri, 25 Apr 2025 10:28:25 +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=1745576907; cv=none; b=iC3N0PQRzCTTn2uDmDBlbQNA/18RcHv+X3QqLrjbBkT4rm6EUOHZ6CZC22Lv0sUdjGE3rCZlXWB6MDWrZMjYmYzmJeiD3+CRUG+Z4cCvv9qrMkl2xHkMvGXrkEM1ANK3P2VklWRdnyXfWErrhq8+sxLYk8OKbiicCxY/3rNvAwI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576907; c=relaxed/simple; bh=et9K11m7U26jM/XhRhXMdA0treky0/PVv4RY8I3cu50=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RI9XmFFe4z4z1crwCGo6fhA5YR2/Hw/w7MVSrYfzPesyX+kKZ53LfEGWviCTEVl+2dMl07Mhd6ayhW+wuE389XR8uc0knP74OpSHFv7szRw7mQtqWAs+OkvdBc5ddZ1R4UzO29OrH9n6OgX4o5NXKelmUUE6gNjq5YQpXgZMWJk= 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=ev7YgVTr; 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="ev7YgVTr" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576903; bh=et9K11m7U26jM/XhRhXMdA0treky0/PVv4RY8I3cu50=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ev7YgVTraWglrd9Hx6RzDmVepZgXMJv9yN/OKqrsnmgLJQlEAJx5c8T8dcC0V8xtA uwV2N9DPBu/gt7ZlAjyBImmvaHsyJsM+WqAdDzk3q/RuCmfBxMh5fRUU48EQhj9oLv 6LHcob9nuCaU3wbQ6pvd2ubTx+XKxta+RABeui6XhsRhRtzsh8W5+QlEaVy8RlkBa4 0pcO/XSFySky3jT0GB/4vxyGvByU13fsiQx7eo83gpDrEg7ERvmAXZNS0tspBhQ9ZL 6SVUZLTxoSu7rNs/QKWO7y+ZgdEdRDXxopcz7LRGwUPrRTurm/J7EguboT2mBTzPF9 TrUgW5O7bCSyQ== Received: from localhost (unknown [82.76.59.226]) (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 BC4C517E36C8; Fri, 25 Apr 2025 12:28:23 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:57 +0300 Subject: [PATCH v4 06/23] 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: <20250425-hdmi-conn-yuv-v4-6-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 | 22 +++++++++++++++++----- 1 file changed, 17 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 9e0a468073acbb2477eff1abef1c09d63620afaa..1fba10b92a6baa49150b6ff1e96= bf2c2739bf269 100644 --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c @@ -648,14 +648,26 @@ hdmi_compute_config(const struct drm_connector *conne= ctor, 8, connector->max_bpc); int ret; =20 - /* - * TODO: Add support for YCbCr420 output for HDMI 2.0 capable - * devices, for modes that only support YCbCr420. - */ ret =3D hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc, HDMI_COLORSPACE_RGB); + if (!ret) + return 0; =20 - return ret; + 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); + if (ret) { + drm_dbg_kms(connector->dev, + "YUV420 output format doesn't work.\n"); + return ret; + } + + return 0; } =20 static int hdmi_generate_avi_infoframe(const struct drm_connector *connect= or, --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 2A5AA241693 for ; Fri, 25 Apr 2025 10:28:26 +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=1745576907; cv=none; b=PvxfSHzPJFzUjYQJHPpAl3VATbx8Lym/n0KNUnVBnh3fCFz9hLbpwHTF2sfaaDa4fhsZuFk7UCLbX6iJHNanLz88GmIuuZ+RNlT9uAy8nmIJ9qh1eKKdko1eu8vQlzezr7dcwxkUD/e21VLkZhy0hmEwnQX6LoUhEpBFyN/FfTY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576907; c=relaxed/simple; bh=hj8rzcU5KaXu33k1FiIJ/Tj50IiApAELLP5G/q5n02o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fdJF79rYdugYzo0vQqJerSAtRWJEYG8jmA0JWI9tpzoI/3RILWrtSH/8nUgyzzFH7l3n6bEM7bT3w5+wbfn3OCyNE8+8g5sF6bbB42wZhh7sz6H+QIzOg6x2Mzt+j+7rPMUF8lMTlxiKqWl5J4QQqIr5aCr1MJlCBAxjGDhH6Os= 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=m7B2+5nf; 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="m7B2+5nf" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576904; bh=hj8rzcU5KaXu33k1FiIJ/Tj50IiApAELLP5G/q5n02o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=m7B2+5nfaG59Qa/hVbWZN6j1uUxKCjcQYIVy12iv5wMQD7sR7SJpvqF+Dmy+E9B7H Uh/rctL53vKy01DKUWGGsp6UnM/VEbgvVexKU26WF1B9+BAO1psuzW3mYw2sfh7b5X 3AJWX+rgm6YRR5iw3+s5hy33F8GXeA2zJM/AONmiO2W/GvD/bJDixuYuOZ06Xy9Bxr kKyc1M6XPAcpEKcfkusR/iWJ4iqm2C//8hk1GIF8W0xWyVczn0OZG3LfhrwUSv+fRc f7+Ww1lBEiQdXQ7cqCT/AR6ZYlh/9wqf4i2un9r0cIb7xO6lcdVEBV6NB1/2fZUN8Y NLlUqktKNdvZQ== Received: from localhost (unknown [82.76.59.226]) (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 8FA7017E3626; Fri, 25 Apr 2025 12:28:24 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:58 +0300 Subject: [PATCH v4 07/23] drm/tests: hdmi: Replace '[_]MHz' with 'mhz' 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: <20250425-hdmi-conn-yuv-v4-7-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Improve consistency throughout drm_hdmi_state_helper_test.c by replacing the two occurrences of '[_]MHz' substring with 'mhz'. As a bonus, this also helps getting rid of checkpatch.pl complaint: CHECK: Avoid CamelCase: Signed-off-by: Cristian Ciocaltea Reviewed-by: Dmitry Baryshkov --- 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 7ffd666753b10bc991894e238206a3c5328d0e23..c8dc6fa0f925e35e9903a18bac7= f78f9d8165960 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) @@ -1934,7 +1934,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 Sun Feb 8 13:11:01 2026 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 544EA242D80 for ; Fri, 25 Apr 2025 10:28:27 +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=1745576909; cv=none; b=SZKd1UzFLuIciYfXQA2d31NvrP3B4z/a/hcksEH7P3hVvN0QSBsVjVlXP+6GSGB2plFvjJFmhajFc828+OtuUEBsopauJgrVyY065vHETplgBw6peeG9DW9IEFjrNeSzA5ZsGlSKjFpEGwD0bUJAVpTNvCdc3S0Xav0uHIrsB38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576909; c=relaxed/simple; bh=gAIP7DBJR1I+Pay7YI7x/+8SSQw+HDHKnXhqLk+agE0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RMwu3h6hyhCZ+OBd3PdWGD1+s6e7sXWFZlxJ8Sn51VFShn/fniGu4ZzLS0otVgSg7ThLvqYhSHRGDD4jE3CZFJ/qC6nY1dyT8HfCPXOKvdiG+WMd7heA6qSaaegiOMUnrPo5eEJ0E/jrxlsanBUVLA18fKwfhhCG/ibi6c3ezuk= 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=Kiif7nTb; 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="Kiif7nTb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576905; bh=gAIP7DBJR1I+Pay7YI7x/+8SSQw+HDHKnXhqLk+agE0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Kiif7nTbc9TUu8Oc80gEVJlh8BP7OGWIeiWDrlHq2wED9GkOD4ptR5V+/XBkiPfYW Wa0kccLC2Dp5LVUmPzNQjKBqc/nXmOPvjrmCB/7a/iXmZnBC/Db6OQvtY//BsBqh58 BFp+/8bldGnq638s1/x/cnAjwc1nDMTl7zecaSligIElb4psNnQisrPjMzuzGV/rr3 qPPxKAynhOT/8mA+UXWOtds/e700c1KnhhX4Hzq2eql6u2Q3GLnCAojA4D7KEyvofu 2eM60+E547Ad5Rrey1GUPsqQaal4PtCsKUciaZYnlZtCXiluFg8utjBAG2uKy2aRRR 3GZEA7pgJpFSg== Received: from localhost (unknown [82.76.59.226]) (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 6D33B17E362C; Fri, 25 Apr 2025 12:28:25 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:26:59 +0300 Subject: [PATCH v4 08/23] drm/tests: hdmi: Add macro 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: <20250425-hdmi-conn-yuv-v4-8-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Factor out the HDMI connector initialization from drm_kunit_helper_connector_hdmi_init_funcs() into a common __connector_hdmi_init() function, while extending its functionality to allow setting custom (i.e. non-default) EDID data. Introduce a macro as a wrapper over the new helper to allow dropping the open coded EDID setup from all test cases. The actual conversion will be handled separately; for now just apply it to drm_kunit_helper_connector_hdmi_init() helper. Signed-off-by: Cristian Ciocaltea Reviewed-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 46 +++++++++++++-----= ---- 1 file changed, 28 insertions(+), 18 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 c8dc6fa0f925e35e9903a18bac7f78f9d8165960..36734639d19a3f279abc4631eb1= 9d5c2b20ca315 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,11 @@ 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(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,29 +198,38 @@ 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_funcs(struct kunit *test, + unsigned int formats, + unsigned int max_bpc, + const struct drm_connector_hdmi_funcs *hdmi_funcs) +{ + return __connector_hdmi_init(test, formats, max_bpc, hdmi_funcs, NULL, 0); +} + +#define drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, formats= , max_bpc, funcs, edid) \ + __connector_hdmi_init(test, formats, max_bpc, funcs, edid, ARRAY_SIZE(edi= d)) + 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; - - 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); - - 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); - - return priv; + return drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, + formats, + max_bpc, + &dummy_connector_hdmi_funcs, + test_edid_hdmi_1080p_rgb_max_200mhz); } =20 /* --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 1AD40243954 for ; Fri, 25 Apr 2025 10:28:27 +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=1745576910; cv=none; b=Qj4afY/ZoOi0bOCU/lIQ1Hyz83RsZd2RIfGJpimnOTO7fQ+4/T+BDNnK5/8Mu8kr2+1kW8pQqM1F8y50CESmLLYNR0m6yQ/Q4/mQsNnDOUMUfmldN+t+dBRR6Kd8eHCoWOlSkR4F3cxgL5EcTXLfVuKJWJ3832vQR0f8SDaucCQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576910; c=relaxed/simple; bh=s1W/dI7eA1aqxPpvJXOT3JsKXbf9OEDUhgfeo/iygYY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QoQfOxyiuv0O9IuGs3iuN4svnV8ffjO0tOhHiOiWubFvIa1APOFO8PUfa2lD7ulqM0ORls+dBEm/TgBdcWjudxgHeOZuWAhbNbw9QktRhNej7ZIIPLP/ZH++0jnUfM7C60xOQYQgPlSp+8UtrzHVDsLmTqmalBKixpKY9qpXpo8= 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=TYNY7sVC; 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="TYNY7sVC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576906; bh=s1W/dI7eA1aqxPpvJXOT3JsKXbf9OEDUhgfeo/iygYY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TYNY7sVCzZ1nhT+2KNAtrTn57bSB2FE05wDGJtKeMqsDc7rr5izsYixkO+NHmvF4g AY/Smlhg82R7Qfx0PBdwpXtmgSu7rGND9xMApZ0m4RxpND2CbSsjUHh5w7Xs+TEOfs 8RCWbNLTw6bEazyO+wVx6r/xNEtp7k7wRX0F96Ms1zdV1qG4+efNAwKqsepinl7hEQ FUmYDncVLdChRw0Zo2E+RaCPB96Wjalecqkj4C+/FZ5zBuhHxgZ+Us5DmY4xNvPKCa 2t99nEv6qnMmnZt781Eexjpc0emArdB57zQa+bN8qnri+aFbMh328XFNmParqZ0LFm MOryJPf+lls6w== Received: from localhost (unknown [82.76.59.226]) (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 4033917E36BB; Fri, 25 Apr 2025 12:28:26 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:00 +0300 Subject: [PATCH v4 09/23] 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: <20250425-hdmi-conn-yuv-v4-9-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 234 ++++++++---------= ---- 1 file changed, 92 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 36734639d19a3f279abc4631eb19d5c2b20ca315..921afb732797f1530d3857ea6d9= 51c5df79d42b4 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -762,19 +762,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 10, + &dummy_connector_hdmi_funcs, + 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 @@ -841,19 +838,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 10, + &dummy_connector_hdmi_funcs, + 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 @@ -915,21 +909,18 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + &dummy_connector_hdmi_funcs, + 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 @@ -969,19 +960,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + &dummy_connector_hdmi_funcs, + 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); @@ -1021,19 +1009,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 10, + &dummy_connector_hdmi_funcs, + 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); @@ -1073,19 +1058,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1191,19 +1173,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1263,21 +1242,18 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1331,20 +1307,17 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1398,19 +1371,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1468,21 +1438,18 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1541,19 +1508,16 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + &dummy_connector_hdmi_funcs, + 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); @@ -1604,21 +1568,18 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV422) | + BIT(HDMI_COLORSPACE_YUV444), + 12, + &dummy_connector_hdmi_funcs, + 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); @@ -1937,28 +1898,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); @@ -1976,12 +1929,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; @@ -2006,20 +1961,15 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 8, + &dummy_connector_hdmi_funcs, + 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 Sun Feb 8 13:11:01 2026 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 CCAC1244684 for ; Fri, 25 Apr 2025 10:28:28 +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=1745576910; cv=none; b=Fr0FMHnSu0JFB5NCZQPS4T4U4u+lG7f6q5h5S/hdFxTkP5nTOnxloZlPhuafdA3keF/e+EB78zcwOQsQnUTvNRRcSy2c3otZp8uDUB9NkUI+juQd6b3jY8ZrOQ9ATbCWvEbHBeZobezr3Y75vYwZmC5FIB+4nSG/UHFifsSsQnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576910; c=relaxed/simple; bh=4lg+tZhIc+oaFlZ18h7Sr9PgPxrUHhP/ALL5+NI4Jyw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N/PiUhfdJRvZ7yk0YrlL94lEAxREIakXsQtXLxkmr2DKbs3veDsh3mrHxb+kZF/uj+FTCxzC12CuVunvTmQIRYIFI5yWx7iZzIv94DlkUgUqy1i3KBIJdeCS19fk+jV61K1LM1N640fTweAjsVDIpPQBHgcLcFSncOsodcK2HwM= 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=P4AwPH4P; 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="P4AwPH4P" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576907; bh=4lg+tZhIc+oaFlZ18h7Sr9PgPxrUHhP/ALL5+NI4Jyw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=P4AwPH4PNP5xKBEwfNCTd9U+rJZFZoIr9bvKx0s8P4BNFM3vWRJ3eKIyCzET3FYoU xe5GEf9gEVEsAHiQ8oCwV3SvueR8u4qM04vGepvywnB1FhjjAybMsLXriGdg87K6LA wVH/qY81lHF0nbST8asPVa8lAN/w+IQOk4rgWL8MctONcvdmC/ONjnXVvF2nNVP8Uj yCuZDb5qPvv4lsE/uzfiF6NdfJXBVj91hwr9vCw2dE5n9s54/kE/kQEVZ1tcRHWspV LNgfkHsmexdqUANf2PVkRhREDrM57mq5tPTrV1EBtPA853RLh/E+bf2+muCveRcEJB Y4fdHPXkOMj3w== Received: from localhost (unknown [82.76.59.226]) (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 0C43517E36BD; Fri, 25 Apr 2025 12:28:27 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:01 +0300 Subject: [PATCH v4 10/23] 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: <20250425-hdmi-conn-yuv-v4-10-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 helper, drm_kunit_helper_connector_hdmi_init_funcs() became unused, hence drop it. Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 10 ---------- 1 file changed, 10 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 921afb732797f1530d3857ea6d951c5df79d42b4..6b4000aea2f2eff373c803d95c3= 304281c879176 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -206,16 +206,6 @@ __connector_hdmi_init(struct kunit *test, return priv; } =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) -{ - return __connector_hdmi_init(test, formats, max_bpc, hdmi_funcs, NULL, 0); -} - #define drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test, formats= , max_bpc, funcs, edid) \ __connector_hdmi_init(test, formats, max_bpc, funcs, edid, ARRAY_SIZE(edi= d)) =20 --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 8A26F245038 for ; Fri, 25 Apr 2025 10:28:29 +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=1745576911; cv=none; b=d3LWI8Iogkv0YxjjB0Vv3D3eNHs0U+apk3cH0OVORDz7cBlXmHMzRWMRF5i0CbJyk2BsY5YGbbP42GMOTV/7AVtQ7fWEKt+fKvy8Y/qupj1zNKmS5mxtL02GNog5OFeG7VPf+n3M2CarBe6eVhea/KL8Nhqg/Yhl3OVbfQVFhwk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576911; c=relaxed/simple; bh=7+YGBQ+4NGRCaWlLRr/l01wupW6JJX5shiIuSOf1qXw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l/2inI6obMpB+YalcaBDWRofmnxCYIO5NukPEY4hAFpsPMS6RFJxhNgNA2brJqJwOlWBM3dx+qIVkMFcswxuishdcYDVKw1eD9Vv/fkB46EdFWsDzf6TfIeOQBxv7kuU3fxMqGc3HH8Z5vpSIJv8H0Pa9Bvy/g4g9j4ErTVwVek= 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=R0xOYF7t; 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="R0xOYF7t" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576908; bh=7+YGBQ+4NGRCaWlLRr/l01wupW6JJX5shiIuSOf1qXw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=R0xOYF7tG8pzEE6Z0IP/SCUDLQzffOjrQGcgptsppWZBopIJth4E8de6eh604uVPX eSYG1iYkUuNwnI+9ND+BH2sEPcTTki9DDhChClOX4upD2I+DZz9T7O0zNfnf/LvoSI GNetDh645VtJDg9ux8yUXrw2dvoYSzgEcvmMvZ7OJKXjQ2BvxtuhRITFnLHJEojxf7 azRwV3hUZJ4nSnjUTgT0F2hqKVgKHJLsnBLEwXsgZfv2Qd3bsE/gY60aHfqrxRC/X8 B+vEx+m1vmBiWDXu0uBWKeXcupgXuC6XNbwP3pnuN0PiFU7FlvhQJMLAyAQWySQP0M xsFOdrUqijggQ== Received: from localhost (unknown [82.76.59.226]) (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 ED1F217E36C1; Fri, 25 Apr 2025 12:28:27 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:02 +0300 Subject: [PATCH v4 11/23] 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: <20250425-hdmi-conn-yuv-v4-11-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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. Reviewed-by: Maxime Ripard Signed-off-by: Cristian Ciocaltea --- 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 6b4000aea2f2eff373c803d95c3304281c879176..323863a24a498d220f9fb73081a= bfbb00575c370 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -183,6 +183,8 @@ __connector_hdmi_init(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 Sun Feb 8 13:11:01 2026 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 55A3D2459DC for ; Fri, 25 Apr 2025 10:28:30 +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=1745576912; cv=none; b=sChq7dNfA5jJCmzu+jwab7HPPBuXV9M6CzAUmYm84CihBsXUvOt+ajBHydCgEzI3sY15TxYwg1M5bMAxACq7wA6ynkVtWXLoFUf65WTMZl571I/w778Hvj6vd1Th4SGyyluLU8I4hQVoR60uQ+W/acOJqPWnCex5GKuQHXGl7Os= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576912; c=relaxed/simple; bh=+GXo2yG0YPbH9s14OUs6YmomUD277TUQ7rp6ziXD+YE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pXny4eMsn9PdA0Vj6aV+mGTnYB5UD+7enOxRZg+P/NGxi5icf/eQXTDd/PXFewLS3t+DOmXbxwj0TYdbk67TijAk59Q3QqOrnhAOFMsXQDbT4z2gF2laHjn2l/H5gn33GKgGSBNsD1ZjlgdAOnSd+2zjk3h1+VxaIWkyJpFMR3g= 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=L9wI0kdA; 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="L9wI0kdA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576909; bh=+GXo2yG0YPbH9s14OUs6YmomUD277TUQ7rp6ziXD+YE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=L9wI0kdAJckYGIlI8rDtIfg/9ID7o6OibQuJDAbMVoOXBm+mTDbdyeh74t/fjMDF1 BGKorJRk+96NcnJkGK8Z4kkZz5zT1aBXVXyRHSL0y03Uxyn0eE85q8/6X3AZTuRTaC 4at5p++/tZDBlDQNgR994jeqQ6ISAh0/jplgQVynQz3/CLHhpLzOqnRMQSEgyGr0IU O2WirTpjpLtGXI7WgtDRakYvRdSP7zeYwJ2trGoVYHKeZ5Jh10fkpSKqU104GXGBE2 GHp1njOPgvy3sTjyk00mkClBg+IovXeRk5aa7pE6SJCXqGx96SQSXNWgjqZFrFOIGe 5xzcOG2rN84WA== Received: from localhost (unknown [82.76.59.226]) (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 C41A317E3626; Fri, 25 Apr 2025 12:28:28 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:03 +0300 Subject: [PATCH v4 12/23] drm/tests: helpers: Add a (re)try helper variant to enable CRTC 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: <20250425-hdmi-conn-yuv-v4-12-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 a wrapper over drm_kunit_helper_enable_crtc_connector() to automatically handle EDEADLK. This is going to help improve the error handling in a bunch of test cases without open coding the restart of the atomic sequence. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_kunit_helpers.c | 39 +++++++++++++++++++++++++++= ++++ include/drm/drm_kunit_helpers.h | 7 ++++++ 2 files changed, 46 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.c b/drivers/gpu/drm/te= sts/drm_kunit_helpers.c index 5f7257840d8ef0aeabe5f00802f5037ed652ae66..4e1174c50b1f2b6358eb740cd73= c6d86e53d0df9 100644 --- a/drivers/gpu/drm/tests/drm_kunit_helpers.c +++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c @@ -332,6 +332,45 @@ int drm_kunit_helper_enable_crtc_connector(struct kuni= t *test, } EXPORT_SYMBOL_GPL(drm_kunit_helper_enable_crtc_connector); =20 +/** + * drm_kunit_helper_try_enable_crtc_connector - (Re)tries to enable a CRTC= -> Connector output + * @test: The test context object + * @drm: The device to alloc the plane for + * @crtc: The CRTC to enable + * @connector: The Connector to enable + * @mode: The display mode to configure the CRTC with + * @ctx: Locking context + * + * This function is a wrapper over @drm_kunit_helper_enable_crtc_connector + * to automatically handle EDEADLK and (re)try to enable the route from + * @crtc to @connector, with the given @mode. + * + * Returns: + * + * A pointer to the new CRTC, or an ERR_PTR() otherwise. + */ +int drm_kunit_helper_try_enable_crtc_connector(struct kunit *test, + struct drm_device *drm, + struct drm_crtc *crtc, + struct drm_connector *connector, + const struct drm_display_mode *mode, + struct drm_modeset_acquire_ctx *ctx) +{ + int ret; + +retry_enable: + ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, crtc, connector, + mode, ctx); + if (ret =3D=3D -EDEADLK) { + ret =3D drm_modeset_backoff(ctx); + if (!ret) + goto retry_enable; + } + + return ret; +} +EXPORT_SYMBOL_GPL(drm_kunit_helper_try_enable_crtc_connector); + static void kunit_action_drm_mode_destroy(void *ptr) { struct drm_display_mode *mode =3D ptr; diff --git a/include/drm/drm_kunit_helpers.h b/include/drm/drm_kunit_helper= s.h index 4948379237e96163dfda0d2f180c0c564e7d110e..bc6cd2fcc3174fb0996d189d9f6= f4d32cf013731 100644 --- a/include/drm/drm_kunit_helpers.h +++ b/include/drm/drm_kunit_helpers.h @@ -126,6 +126,13 @@ int drm_kunit_helper_enable_crtc_connector(struct kuni= t *test, const struct drm_display_mode *mode, struct drm_modeset_acquire_ctx *ctx); =20 +int drm_kunit_helper_try_enable_crtc_connector(struct kunit *test, + struct drm_device *drm, + struct drm_crtc *crtc, + struct drm_connector *connector, + const struct drm_display_mode *mode, + struct drm_modeset_acquire_ctx *ctx); + int drm_kunit_add_mode_destroy_action(struct kunit *test, struct drm_display_mode *mode); =20 --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 27E2F2459F9 for ; Fri, 25 Apr 2025 10:28:31 +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=1745576913; cv=none; b=KulpVANsKVVv0iP9jsg1aWemljhc40+wXO1K7UAHZXqZQjt+mwmjzpZopxmg1cHXDq1YXcD61xtLJAF3vFuCOUdk/JD0Ylsew7pDTgp55zB0KsAOMrS4/P4qD32dl95Z9IqWKk0SYLwUUhavBFri4+lDq/pjhFXsCr1RIM0TYlY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576913; c=relaxed/simple; bh=ABLVH0fZJ3K/S4w0Vgcp47RVtxyTMxfkt9nfRrx9wCI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ocIf0V8GcnPrEL097FM5Z8Nvqdtpkdb9ZyUD+KCEnaRnQWp50UyDlUIDuUrd5zrRVSo3j37YrTvSziLoA++YNxAkt3BmQjUVNM4HIFoHeUvMxJ/Xrsn/GEzB3ldZIgZ0YIpuaLx1WT82FvXLSGYPcRxGSbiSDR9PWrZzNBDV19c= 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=lK3Yu1Wk; 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="lK3Yu1Wk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576909; bh=ABLVH0fZJ3K/S4w0Vgcp47RVtxyTMxfkt9nfRrx9wCI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lK3Yu1WkxuyCgQ4hWZaK5+NOVA92lHstpPUPaRP6IkN4KaubLR8RyN1kS15tnj5ur 60e6XLKtQO1SUP9jgCdX6UJiND2j9FDtv7cN+7scC1QbL+kVV2sREphERzLayG7jz5 en0/ZQiUeeX+OqUxDVIFZqyp6DvkhmRrE/eEThXG3plopCS/b0w0THVRTxzfQ8Ui/9 AWuSF4q1kJg2tEsERjmJd7nQql9AoWtbyoEDx0FWg0l2KrvmYtlAgrdhgpmrnTT2fN rKwX2wrcZVpfjoqeJt1JqJMTLFwdRdVhA8mdKtGUVAMBHP0TIwsVtBLlUmpfuDCSoc eUQMGpiZ7ekBw== Received: from localhost (unknown [82.76.59.226]) (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 930D917E36C2; Fri, 25 Apr 2025 12:28:29 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:04 +0300 Subject: [PATCH v4 13/23] drm/tests: hdmi: Switch to drm_kunit_helper_try_enable_crtc_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: <20250425-hdmi-conn-yuv-v4-13-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Enable automatic handling of EDEADLK by switching from drm_kunit_helper_enable_crtc_connector() to drm_kunit_helper_try_enable_crtc_connector(). Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 180 ++++++++++-------= ---- 1 file changed, 88 insertions(+), 92 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 323863a24a498d220f9fb73081abfbb00575c370..c8969ee6518954ab4496d3a4398= f428bf4104a36 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -257,10 +257,10 @@ static void drm_test_check_broadcast_rgb_crtc_mode_ch= anged(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -326,10 +326,10 @@ static void drm_test_check_broadcast_rgb_crtc_mode_no= t_changed(struct kunit *tes =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -397,10 +397,10 @@ static void drm_test_check_broadcast_rgb_auto_cea_mod= e(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -457,10 +457,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode= _vic_1(struct kunit *test) KUNIT_ASSERT_NOT_NULL(test, mode); =20 crtc =3D priv->crtc; - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - mode, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + mode, &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -518,10 +517,10 @@ static void drm_test_check_broadcast_rgb_full_cea_mod= e(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -580,10 +579,9 @@ static void drm_test_check_broadcast_rgb_full_cea_mode= _vic_1(struct kunit *test) KUNIT_ASSERT_NOT_NULL(test, mode); =20 crtc =3D priv->crtc; - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - mode, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + mode, &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -643,10 +641,10 @@ static void drm_test_check_broadcast_rgb_limited_cea_= mode(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -705,10 +703,9 @@ static void drm_test_check_broadcast_rgb_limited_cea_m= ode_vic_1(struct kunit *te KUNIT_ASSERT_NOT_NULL(test, mode); =20 crtc =3D priv->crtc; - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - mode, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + mode, &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -769,10 +766,10 @@ static void drm_test_check_output_bpc_crtc_mode_chang= ed(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -845,10 +842,10 @@ static void drm_test_check_output_bpc_crtc_mode_not_c= hanged(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); @@ -921,10 +918,10 @@ static void drm_test_check_output_bpc_dvi(struct kuni= t *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -968,10 +965,10 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(st= ruct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1017,10 +1014,10 @@ static void drm_test_check_tmds_char_rate_rgb_10bpc= (struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1066,10 +1063,10 @@ static void drm_test_check_tmds_char_rate_rgb_12bpc= (struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1117,10 +1114,10 @@ static void drm_test_check_hdmi_funcs_reject_rate(s= truct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 /* You shouldn't be doing that at home. */ @@ -1191,10 +1188,10 @@ static void drm_test_check_max_tmds_rate_bpc_fallba= ck(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1265,10 +1262,10 @@ static void drm_test_check_max_tmds_rate_format_fal= lback(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1330,10 +1327,9 @@ static void drm_test_check_output_bpc_format_vic_1(s= truct kunit *test) drm_modeset_acquire_init(&ctx, 0); =20 crtc =3D priv->crtc; - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - mode, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + mode, &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1397,10 +1393,10 @@ static void drm_test_check_output_bpc_format_driver= _rgb_only(struct kunit *test) =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1466,10 +1462,10 @@ static void drm_test_check_output_bpc_format_displa= y_rgb_only(struct kunit *test =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1526,10 +1522,10 @@ static void drm_test_check_output_bpc_format_driver= _8bpc_only(struct kunit *test =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1588,10 +1584,10 @@ static void drm_test_check_output_bpc_format_displa= y_8bpc_only(struct kunit *tes =20 drm_modeset_acquire_init(&ctx, 0); =20 - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D conn->state; @@ -1631,10 +1627,10 @@ static void drm_test_check_disable_connector(struct= kunit *test) =20 drm =3D &priv->drm; crtc =3D priv->crtc; - ret =3D drm_kunit_helper_enable_crtc_connector(test, drm, - crtc, conn, - preferred, - &ctx); + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, + &ctx); KUNIT_ASSERT_EQ(test, ret, 0); =20 state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 36F992472A2 for ; Fri, 25 Apr 2025 10:28:31 +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=1745576913; cv=none; b=EJBRWPETcstemR6PxOQG+46k3WZ9Xy9t2swbxgR10mAiycNdABlqr4YuQFOw49n4h4+5XjbkpwiqOgIQwjntLWhU76DHl1ytPDEJpLxQakIBZU0Bdgmcv4x93/Bksyd98dLokneno1QjGzIC5okUmTuutB+zCEpndvdUxtjzMNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576913; c=relaxed/simple; bh=4bCuo8I0N9kkClNNsRhMoODRyFWJSCvgIJ70e4FtooE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dcWMkj3hw8guHaWtNcyXlMfHFMMHhp/NvZkjS8KGsbAAHJLed0fYnP1gRhO7hQ7H72u08BDh8LIDx0UkO13zxSUcJUJYgCQUV6n4sxp+CSMIkcwp8ykGwtLvOMd8ET8pfKX87ZXfyKmMvz1Nzbznqch7RPyke2VDJ5NmgJd/U4c= 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=g7WDcY9c; 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="g7WDcY9c" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576910; bh=4bCuo8I0N9kkClNNsRhMoODRyFWJSCvgIJ70e4FtooE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=g7WDcY9cT4O8ok2yvNfhnyNv14PzrfhHHjoxmGkq3xVxIl5BE+AQJpQAV0wdxB0HA zxwEvuR4wruJWGdOnHS7xcAYoa3cUtOeDqPithtMylR1Tzk1tf/XSGcrBNHQTXhQdf ysiFs2bS+hP2I65Hqxa8Wcdh7kEfOQtN+I0Z+DyGk2whl9QGsaQlhZZMvc/QcGVU+6 Torph6RqIeO3wsbLizJNTQR1ru/6hlg++1D8BgAISy5knQQR1NepY4qqqnS9csr0bn MaQCqZvQpN2pMbVQYoHtRNm1tHXoWNUrBdosKadA6JamSpSObzQZ3fKq/StlQIlvtX kieUvcjhM6wZQ== Received: from localhost (unknown [82.76.59.226]) (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 61F5917E362C; Fri, 25 Apr 2025 12:28:30 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:05 +0300 Subject: [PATCH v4 14/23] drm/tests: hdmi: Add macro to support EDEADLK handling 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: <20250425-hdmi-conn-yuv-v4-14-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 improve error handling throughout all test cases, introduce a macro to check for EDEADLK and automate the restart of the atomic sequence. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 10 ++++++++++ 1 file changed, 10 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 c8969ee6518954ab4496d3a4398f428bf4104a36..c8bb131d63ea6d0c9e166c8d9ba= 5e403118cd9f1 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -224,6 +224,16 @@ drm_kunit_helper_connector_hdmi_init(struct kunit *tes= t, test_edid_hdmi_1080p_rgb_max_200mhz); } =20 +#define drm_kunit_atomic_restart_on_deadlock(ret, state, ctx, start) do { \ + if (ret =3D=3D -EDEADLK) { \ + if (state) \ + drm_atomic_state_clear(state); \ + ret =3D drm_modeset_backoff(ctx); \ + if (!ret) \ + goto start; \ + } \ +} while (0) + /* * Test that if we change the RGB quantization property to a different * value, we trigger a mode change on the connector's CRTC, which will --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 1923F248176 for ; Fri, 25 Apr 2025 10:28:32 +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=1745576915; cv=none; b=Z482OAkhoZJdf0RHR8SBNXvuVD1guvDzJ+r1VqMGlDEQsBkdyUApBEiPdSR863G5YYdHJm8YpTyq+VK8BuUpINzwFIl10ghXKzl/OYZ4gOO+aa3TPoljKuoQuhio3ke++LISp0Y2+6fetdtmtLebS5bhQ7uHHtd/XH+i11cXMZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576915; c=relaxed/simple; bh=qyPtVfazjoB+F5C0m0PCSMh+PJe6TqwKkztm++nr1ds=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pUcF2upYNJPTikeWJ84ATFukQYv1RInG4aBrFNWcVP6wfLo7QdyYFWfeFGIafjI9VSMbgPMheTFP5PN2O4TmaE0uEN8J8YnfLF5s/j3p2Py9LSfSWFe4TM+C28yIpsiLH6yKJEmoUBNVpByWMLRmcZHwUHWqPxa6qV8STKwOWeU= 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=QY0LwTfD; 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="QY0LwTfD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576911; bh=qyPtVfazjoB+F5C0m0PCSMh+PJe6TqwKkztm++nr1ds=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QY0LwTfDJwdJF0V7AIx3E+WM5/eFLHXzzyXSM5TCji/ooC2CGCmRpqUMVNqHR/+Iz pplEMVoa+EWdjQ40jrAi8w1MudsM/lE18uEdTW3BELK7Pm2ds5O6uDwjYpl0T2wjE/ nzVTuvgddK3NXA56wd4VemVDR1F2RlvKWEtFNboSsRA/uso0AiyIxEX19MZ1hiWYiM rQ9jRLwrm0W1BOPTHyPK+nYnA3P/9L1JTTspGM/wGpXiUi/zC+TiuTjrBqVQHtb8Y5 WIcy83ihdf1V8v9ZKUBeXWaIhykfBmlI1c/tt/SKhq+OpqqB7q0ZM90Z0SauuxbFKM YlaSygBKlNk4Q== Received: from localhost (unknown [82.76.59.226]) (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 30A5217E36BB; Fri, 25 Apr 2025 12:28:31 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:06 +0300 Subject: [PATCH v4 15/23] drm/tests: hdmi: Restart atomic sequence on EDEADLK 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: <20250425-hdmi-conn-yuv-v4-15-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 newly introduced drm_kunit_atomic_restart_on_deadlock() helper to handle EDEADLK errors throughout all test cases. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 38 ++++++++++++++++++= ++++ 1 file changed, 38 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 c8bb131d63ea6d0c9e166c8d9ba5e403118cd9f1..8c795eeb1090b50993c1907a9fc= 5bb72baa556e1 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -276,7 +276,9 @@ static void drm_test_check_broadcast_rgb_crtc_mode_chan= ged(struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: new_conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -289,6 +291,7 @@ static void drm_test_check_broadcast_rgb_crtc_mode_chan= ged(struct kunit *test) new_conn_state->hdmi.broadcast_rgb); =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 new_conn_state =3D drm_atomic_get_new_connector_state(state, conn); @@ -345,7 +348,9 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_= changed(struct kunit *tes state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: new_conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -354,6 +359,7 @@ static void drm_test_check_broadcast_rgb_crtc_mode_not_= changed(struct kunit *tes new_conn_state->hdmi.broadcast_rgb =3D old_conn_state->hdmi.broadcast_rgb; =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -416,7 +422,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(= struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, @@ -424,6 +432,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(= struct kunit *test) DRM_HDMI_BROADCAST_RGB_AUTO); =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); @@ -475,7 +484,9 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_= vic_1(struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, @@ -483,6 +494,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_= vic_1(struct kunit *test) DRM_HDMI_BROADCAST_RGB_AUTO); =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); @@ -536,12 +548,15 @@ static void drm_test_check_broadcast_rgb_full_cea_mod= e(struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 conn_state->hdmi.broadcast_rgb =3D DRM_HDMI_BROADCAST_RGB_FULL; =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); @@ -597,12 +612,15 @@ static void drm_test_check_broadcast_rgb_full_cea_mod= e_vic_1(struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 conn_state->hdmi.broadcast_rgb =3D DRM_HDMI_BROADCAST_RGB_FULL; =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); @@ -660,12 +678,15 @@ static void drm_test_check_broadcast_rgb_limited_cea_= mode(struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 conn_state->hdmi.broadcast_rgb =3D DRM_HDMI_BROADCAST_RGB_LIMITED; =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); @@ -721,12 +742,15 @@ static void drm_test_check_broadcast_rgb_limited_cea_= mode_vic_1(struct kunit *te state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 conn_state->hdmi.broadcast_rgb =3D DRM_HDMI_BROADCAST_RGB_LIMITED; =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); @@ -785,7 +809,9 @@ static void drm_test_check_output_bpc_crtc_mode_changed= (struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: new_conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -798,6 +824,7 @@ static void drm_test_check_output_bpc_crtc_mode_changed= (struct kunit *test) new_conn_state->max_requested_bpc); =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -861,7 +888,9 @@ static void drm_test_check_output_bpc_crtc_mode_not_cha= nged(struct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: new_conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, new_conn_state); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -872,6 +901,7 @@ static void drm_test_check_output_bpc_crtc_mode_not_cha= nged(struct kunit *test) old_conn_state->hdmi.output_bpc); =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 old_conn_state =3D drm_atomic_get_old_connector_state(state, conn); @@ -1136,12 +1166,15 @@ static void drm_test_check_hdmi_funcs_reject_rate(s= truct kunit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: crtc_state =3D drm_atomic_get_crtc_state(state, crtc); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); =20 crtc_state->connectors_changed =3D true; =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_EXPECT_LT(test, ret, 0); =20 drm_modeset_drop_locks(&ctx); @@ -1646,7 +1679,9 @@ static void drm_test_check_disable_connector(struct k= unit *test) state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); =20 +retry: crtc_state =3D drm_atomic_get_crtc_state(state, crtc); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); =20 crtc_state->active =3D false; @@ -1654,12 +1689,15 @@ static void drm_test_check_disable_connector(struct= kunit *test) KUNIT_EXPECT_EQ(test, ret, 0); =20 conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 ret =3D drm_atomic_set_crtc_for_connector(conn_state, NULL); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_EXPECT_EQ(test, ret, 0); =20 ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 drm_modeset_drop_locks(&ctx); --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 BBD14248886 for ; Fri, 25 Apr 2025 10:28:33 +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=1745576915; cv=none; b=HNq7wl+MmbJoCqorupYFVn7iLYkypHg7TphgnxvJcL4MkAn0j4w0uXiUZQssuV+D7bp/R7ZpSOihznPtVyydG+OXJ3APzZDzyfmXBk/PHa14ogHedw0Gn+jxox2rvsvqO5+OCuye6olELZZzxa20KuVuHeLGSkAll+FXGlEtm4A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576915; c=relaxed/simple; bh=Q/vtEtALpfzyMl4YZahsTKUN+/4Q4JCgBzlv5eoE6Bc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GUrAb5CoONqNhek5FUoCSvD+nLdpas2cpdNU8swQaTUR9dPvsPGk49ruFeXNcwfhw6BWxkPjc6/2EFNURW+ba4fzPYN5mNhaA5fKj7FJvgVAtdMPzriX2nVBTSNCp8TVKMKRghJnnImdP8sU6QlFsd5Pxl2gQdcsfiAN4AB2tYo= 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=J0T31Tpy; 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="J0T31Tpy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576912; bh=Q/vtEtALpfzyMl4YZahsTKUN+/4Q4JCgBzlv5eoE6Bc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=J0T31Tpyw9DgNrmeYtmmEkZW70GmfTBew8Muk5+7vAHwYD4xIX/qha2BrxUo7hTi/ 2r3yMKod3SCOMfaNtPQ76EUpyu2I7ez6LNO/iVfPC0Bg5e5Ypwp4eZcn4pzI59NYiR 89MPGuWdJ65rDL0xuvtxJT3gBvxNq11iP+wHQ9ZU9BFBb88w26UeQPEgbp+fcSf5vq rLlDoA0w9Qqw0ysDhalTclnClFYy2dxiqt3j2rLf0CXDcSgUXgfGVtOaIvLStWuCPK xSIDJJs/d0Qzqw8iMI0zuUnzcpQPlZvHQkh5l4wf04Egvpl4Zwborg90gQbG3iYIzG Ksj/ZLW/Ic+LQ== Received: from localhost (unknown [82.76.59.226]) (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 EE56717E36BD; Fri, 25 Apr 2025 12:28:31 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:07 +0300 Subject: [PATCH v4 16/23] drm/tests: hdmi: Switch to drm_atomic_get_new_connector_state() where possible 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: <20250425-hdmi-conn-yuv-v4-16-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Replace the calls to drm_atomic_get_connector_state() with drm_atomic_get_new_connector_state() for cases which do not require allocating the connector state, e.g. after drm_atomic_check_only() when the intent is to only read the new connector state. The rational is to avoid the need to handle the potential EDEADLK error returned by the former helper, which would require restarting the entire atomic sequence. Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 8c795eeb1090b50993c1907a9fc5bb72baa556e1..ae58d1f747e84f99e72624396af= 1f51fe498f931 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -435,7 +435,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode(= struct kunit *test) drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 - conn_state =3D drm_atomic_get_connector_state(state, conn); + conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_EXPECT_TRUE(test, conn_state->hdmi.is_limited_range); @@ -497,7 +497,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_= vic_1(struct kunit *test) drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 - conn_state =3D drm_atomic_get_connector_state(state, conn); + conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_EXPECT_FALSE(test, conn_state->hdmi.is_limited_range); @@ -559,7 +559,7 @@ static void drm_test_check_broadcast_rgb_full_cea_mode(= struct kunit *test) drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 - conn_state =3D drm_atomic_get_connector_state(state, conn); + conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, @@ -623,7 +623,7 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_= vic_1(struct kunit *test) drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 - conn_state =3D drm_atomic_get_connector_state(state, conn); + conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, @@ -689,7 +689,7 @@ static void drm_test_check_broadcast_rgb_limited_cea_mo= de(struct kunit *test) drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 - conn_state =3D drm_atomic_get_connector_state(state, conn); + conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, @@ -753,7 +753,7 @@ static void drm_test_check_broadcast_rgb_limited_cea_mo= de_vic_1(struct kunit *te drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); KUNIT_ASSERT_EQ(test, ret, 0); =20 - conn_state =3D drm_atomic_get_connector_state(state, conn); + conn_state =3D drm_atomic_get_new_connector_state(state, conn); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); =20 KUNIT_ASSERT_EQ(test, --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 6BC7524BBF3 for ; Fri, 25 Apr 2025 10:28:34 +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=1745576917; cv=none; b=RBlzt5OWfPxAkredsbyEEZK4jCsyK26htYf2imZhpPHhvsCbywhjo8XdNwY0Xn3ZUZFIA7vyHd3syqfYysmQ4l+m2z6Dn5C/eNC/iuwk9kNWa7F73ZpSIgjmj7IInTA5XPDssJieqjnkXOYAnwX7s3V+y0b5JbYcHZmWfYZcjqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576917; c=relaxed/simple; bh=HGa8+bjFltIfOaUKN86AmAq+woa6Ou50vsQGwWC6IE8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YOk019TsxefcxtoY7+FdLh3nFY8vA55aGa/fenr+4oazuLDsWr1R589EhbWTQyj7MU3sjXurn7b6sbwADnink+2SHVO4iQRgW1fByQKqraJQ+9q0tZv+ZG/7FJfs+C9P0Qk1NH8KA2DTqziFA1IRrhRfLFwStDib69OuHWyDzyg= 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=M/4SrkvX; 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="M/4SrkvX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576912; bh=HGa8+bjFltIfOaUKN86AmAq+woa6Ou50vsQGwWC6IE8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=M/4SrkvXq6Mv4KimbCvMXc8+9O6v10f9cp32FJPHVLOmdfSX4UngwHW1bb2OYqt5F bAyRnwl87lov3Ts/jQecBh4uyYBHl46O89eQKEVvwsVnrupuRF7kqJW6Iy9effkzYH 9xLg0avcllaENJwggYK6NjwtVbO7D7wyuR1YjWuksumaug25MwkXs9gqNl22Hg9KkW 9oL61CazzxCNC36l2oVmf4YJagbfde5V1bVjahglO8pwLLT0G8zb2JmmfqShHSNSaC vegRXGRpthA2qvtgLw0AoBpWKDkRO2itcax3lYeQgxmD/K8w5rqfatuhKaSOHRRfU5 07bBSvPIQbqVw== Received: from localhost (unknown [82.76.59.226]) (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 BA56717E3626; Fri, 25 Apr 2025 12:28:32 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:08 +0300 Subject: [PATCH v4 17/23] drm/tests: hdmi: Provide EDID supporting 4K@30Hz with YUV420 only 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: <20250425-hdmi-conn-yuv-v4-17-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Create a test EDID advertising the following capabilities: Max resolution: - 1920x1080@60Hz with RGB, YUV444, YUV422 - 3840x2160@30Hz with YUV420 only Max BPC: 16 for all modes Max TMDS clock: 200 MHz Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_kunit_edid.h | 118 +++++++++++++++++++++++++++++= ++++ 1 file changed, 118 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_kunit_edid.h b/drivers/gpu/drm/tests= /drm_kunit_edid.h index 6358397a5d7ab0bcdea1c824fc9fd382560f4b0e..027d8aa5bccd0ee101fbe7e147f= 0e418581e9c3d 100644 --- a/drivers/gpu/drm/tests/drm_kunit_edid.h +++ b/drivers/gpu/drm/tests/drm_kunit_edid.h @@ -583,4 +583,122 @@ static const unsigned char test_edid_hdmi_1080p_rgb_y= uv_dc_max_340mhz[] =3D { 0x00, 0x00, 0x00, 0x8c }; =20 +/* + * Max resolution: + * - 1920x1080@60Hz with RGB, YUV444, YUV422 + * - 3840x2160@30Hz with YUV420 only + * Max BPC: 16 for all modes + * Max TMDS clock: 200 MHz + * + * 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 Sun Feb 8 13:11:01 2026 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 6BD3724BBF4 for ; Fri, 25 Apr 2025 10:28:35 +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=1745576918; cv=none; b=atusJaEgMxOyat/DJeIs+e6nlQ/c2Y6vwNXUNrMsuhv3RuclJOs5zmHH3pAXNuqreL9NMjOmRnI0Je2OkEME2kE0WjYZ7xZzDGoUDRfMP6BbrlAl+equnjZXB8hzYRnB2TFLe+LeT+h3U8QAijV4qaE7HDq9DQsjg6qSw4Ik10s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576918; c=relaxed/simple; bh=0uIy3tfZxCavEfHfFfDIizsIyNd8gGMaoE+U0rK5ogM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZeEyooErgABXMRlc5TAII3bKZx1ZZWOAcIlwNfwytTAesDc0j6uiWa7RcmrBKxjXckL6jpy8k24JtrvjHwX56I7Q7op7fcrXfVtSXrOJJ7eNuvtcooVszBVZn5s5ZI3XF6vCh5pMvgp1EHj2eHTj68qmRC7D5PtFlxkySOLDD3M= 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=pFLq0RK1; 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="pFLq0RK1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576913; bh=0uIy3tfZxCavEfHfFfDIizsIyNd8gGMaoE+U0rK5ogM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pFLq0RK1PTIRDMuVnDzggdFJf3XSwkKnw2mGDAt7XBwE1pi/5bABIqFJvx7cbtfbI wtxXd6DOYGInvxWmw3hQlGj+NJkSnlKpFSxCS3Bptyws7uHY/i0GKo5mm316GfAKKu 0ruDEqYQ5nchhANrUS23zW2jY75O/VFiTyI55FTMrDmAHAu5epWGC8FCx1UE6OFQy1 5cfyEtTEmd2HfhehFO/z1zvS0hD3SPX4DUw0RYbAFhKWJWCVBOafc+QL0BWTjfrx18 3zqcMhtSB9Z/bPT1uiA54VYVzhbNX3mbDpTyX/9cnT8jyNa2pzfeMq6+EBQx8Cwpgh k5CBbYz0PWV9g== Received: from localhost (unknown [82.76.59.226]) (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 88C7017E36C1; Fri, 25 Apr 2025 12:28:33 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:09 +0300 Subject: [PATCH v4 18/23] 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: <20250425-hdmi-conn-yuv-v4-18-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 93 ++++++++++++++++++= ++-- 1 file changed, 88 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 ae58d1f747e84f99e72624396af1f51fe498f931..6dae9a56bf1bccd39f6b79f6ad9= f943538d0ad36 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -766,6 +766,92 @@ 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 8, + &dummy_connector_hdmi_funcs, + 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_try_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); + +retry: + conn_state =3D drm_atomic_get_connector_state(state, conn); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state); + + conn_state->hdmi.broadcast_rgb =3D broadcast_rgb; + + ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); + KUNIT_ASSERT_EQ(test, ret, 0); + + conn_state =3D drm_atomic_get_new_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 @@ -1711,11 +1797,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), --=20 2.49.0 From nobody Sun Feb 8 13:11:01 2026 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 51E6224C068 for ; Fri, 25 Apr 2025 10:28:36 +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=1745576918; cv=none; b=I4eL23abbH0nwjabvQMxSbX0AUC6k5bb4qKt8Sfcme2Ci2qldvw4eVzVyIHG9p8p2qMWhlJx3WIffM2NYRw/y1wHXUEL4N5vEAaOHNv4nKWQvaGipBvhGfoi0GStYwDj0M6fg53Y+N3gy+7Y+q+W2aSbIZvwWwxVQm4YNTOdsJ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576918; c=relaxed/simple; bh=Ru4SuCX08vOXduZ4SmjSPm6UxW9W5DJ2U+xBG6H0qIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YwOTpiBGPq49H6ORNa4cmxrkh2jetupXw5zaqr/l4mNQHpJnmzerUulZQX0Zc5mRRZxBi5K8uWp9Hclfv876gG/3YfvCwyukdbBVb1lD++ax7qoZFGehE5nhJMr3TLaAQopmweAv6nRLipsJrj5El3vZK4YdpSFu1gfdCeIelT4= 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=WjO2TnLy; 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="WjO2TnLy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576914; bh=Ru4SuCX08vOXduZ4SmjSPm6UxW9W5DJ2U+xBG6H0qIE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WjO2TnLyaOutpa406wZXjWnScLFIwzKhD15gW5RaI7m3rjwK5+7YGoS+l6RRzBFs0 twafr1lwnq1c0oVQfF7xOaYSP9wbkbEHoAPXKs3DP5jSOcjjZX3/qlYKJdDsV9OTfP ws8+VT8xUrKQWiy/uLigMxkTcsWW/vJoeSy4/llxgeiXoRaMxc3b8zZpyV85KuHovS ITOyx4aQ3Wj7Qob2Dw62cM/cyUZtWikDcmYmKKc5W2JUqy+cxr0i7wDpPmUo34W0fo 8pIRGwtSQ5vm5lzUmPFlMWcRKOk+LTYjMvzzHWkbGM80rMdfs7k7yamLpBJkTBnbfK 0bSrC6JnXFnAw== Received: from localhost (unknown [82.76.59.226]) (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 6828B17E362C; Fri, 25 Apr 2025 12:28:34 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:10 +0300 Subject: [PATCH v4 19/23] drm/tests: hdmi: Rename max TMDS rate fallback tests 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: <20250425-hdmi-conn-yuv-v4-19-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 extend the max TMDS rate fallback tests for covering YUV420 output, update the rather generic function names drm_test_check_max_tmds_rate_{bpc|format}_fallback() to properly indicate the intended test cases. Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- 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 6dae9a56bf1bccd39f6b79f6ad9f943538d0ad36..faec7aa6fd55faae2207072b67e= f3d372dc1695e 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -1278,7 +1278,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; @@ -1347,7 +1347,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_bpc_fallback_ignore_yuv422(struct= kunit *test) { struct drm_atomic_helper_connector_hdmi_priv *priv; struct drm_modeset_acquire_ctx ctx; @@ -1803,8 +1803,8 @@ 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_ignore_yuv422), 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 From nobody Sun Feb 8 13:11:01 2026 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 CF18D24C095 for ; Fri, 25 Apr 2025 10:28:36 +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=1745576918; cv=none; b=jVab15t7zTzcOTDj0i67zoyY4/mXagfGJPMQgVzVfF2kg/Az//EfyUXYUzbL117rpjy/LpCcit5i4KzzF2fiaim/vaEHShjy/RrsnOsFnanHOx/QmnzXURShU6iDxXyAHG9liF8c6MXgleGw+y6knlGCp9ztWxEkXAi0w6wZidA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576918; c=relaxed/simple; bh=MpT2xnXyQhahX/THq9tz8yyMxn9VKNVuBm8choE2IzY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lo0GHBf+7Bp76JM4MJc2EuvFjFIU2Vx1JozjY32KJA6eH5MNzmc+dxi5aXP1dkaC0SHl6EanFSJXlkwCu3bR6bHG47Hj0vPPG7Tk2rKUf6dP+4z0oEx1hii8LkVqcXLwcMIGBOtNJNxU0jUs31kZKOvfYCj1k3rV9+sX+SnTqrs= 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=Cfcrt7sr; 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="Cfcrt7sr" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576915; bh=MpT2xnXyQhahX/THq9tz8yyMxn9VKNVuBm8choE2IzY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Cfcrt7srhWfmVeg3kcqVOfVTlsA9gMyCHEieC9ijy4m3P2CfwXIljoRqoRvx1Y6ul etTA0/PA3pKrIwH33JHzYSvs9QhAOqvtWI3xxfE6mfUSxXWro1j/Gjc84O4hFl7xD9 pklfcfjGwRwGMy1gsL8u3KEnd330/6Fy7gN4n89IKXcJL9sust40Xm88iy5prQT8fK QhzJ2m35GOPJJYgRmEd7DvKCZ8gOG8sYIG0cwgCNkYED3rUfm1JlLcBKMXAfmuPqf5 6OnZJq5d2srvPfC0IlusGWSwVjNsBTWbN5qvEr27jE45z4rk4uGtBXgUgzqWaI8UjT 9zMtHEPn7Z+zw== Received: from localhost (unknown [82.76.59.226]) (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 42F7517E36BB; Fri, 25 Apr 2025 12:28:35 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:11 +0300 Subject: [PATCH v4 20/23] drm/tests: hdmi: Provide EDID supporting 4K@30Hz with RGB/YUV 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: <20250425-hdmi-conn-yuv-v4-20-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , Dmitry Baryshkov , Dmitry Baryshkov Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 Create a test EDID advertising the following capabilities: Max resolution: 3840x2160@30Hz with RGB, YUV444, YUV422, YUV420 Max BPC: 16 for all modes Max TMDS clock: 340 MHz Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_kunit_edid.h | 114 +++++++++++++++++++++++++++++= ++++ 1 file changed, 114 insertions(+) diff --git a/drivers/gpu/drm/tests/drm_kunit_edid.h b/drivers/gpu/drm/tests= /drm_kunit_edid.h index 027d8aa5bccd0ee101fbe7e147f0e418581e9c3d..02e2761b3b1f9f7d778e13745c2= 9956b3687404c 100644 --- a/drivers/gpu/drm/tests/drm_kunit_edid.h +++ b/drivers/gpu/drm/tests/drm_kunit_edid.h @@ -701,4 +701,118 @@ static const unsigned char test_edid_hdmi_1080p_rgb_y= uv_4k_yuv420_dc_max_200mhz[ 0x00, 0x00, 0x00, 0xca }; =20 +/* + * Max resolution: 3840x2160@30Hz with RGB, YUV444, YUV422, YUV420 + * Max BPC: 16 for all modes + * Max TMDS clock: 340 MHz + * + * 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 Sun Feb 8 13:11:01 2026 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 EE69324EAAF for ; Fri, 25 Apr 2025 10:28:37 +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=1745576920; cv=none; b=uCjmTLLEdXyCjI2TLD9lrGB/3EBhd3e6bkiiDITKZVyKtT6/H29X2ccOALMeH0WE00ffl2j1JOEe2MjQw0Se8buWtSn3Z1PME3vOBPcL1SOR49qrxK6C4GqtWOsD0kMdZLNSxFAqVNRBKROxiR+/b5iGCFk1AKrdrZPTbhjeOe4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576920; c=relaxed/simple; bh=6sOycG3HJllYsQTPTMtDCfPR86tsMqNzg3NsMzDCa4w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cls3Pf8+Kx5uTg0N4aU1GhDObYwaRvuKFiQHeovqbQNtOw2/4PO2PaEKQRw9o9C4twJpG7XdNuQ02yzMIi15Y2xKK6Nj4m5naNCo4Ho0Z1eltKQqBkjKCwn6KmLAxAmI2UFGQybk2kvrZqrAoFAyTtrhOjBlUmYkw7GFAAoVhbQ= 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=aTFfgdIw; 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="aTFfgdIw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576916; bh=6sOycG3HJllYsQTPTMtDCfPR86tsMqNzg3NsMzDCa4w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aTFfgdIw0B6upTTANSaAZ/ELtFFue9amfxLs6KNuCZOxxHVLNimiLeNtLCEkV4FsP 5UDFYnstKdq+DFbwTeL+SrIOgHcVq4I350t/u2JlU0c1L6IlPDgltrhGQLQIoV1XIF rVc2WYeyVZhU6UIupof/40pNhigETOaN6aLPVaSPucPCBU4rGNUo+kRnAqS21wd0yt dlXPpDS79WKWXW5LvDQU+X5Rlq0AH1vIOWrDT11Z5K6p5VCVk8j9HReTtcGAguF1oA 1WXR/GatAQVWsecb8Tn7YeqoZdQQDWjYkFRZWSJjibGGh5dyAk/jaQc7GppaSuH0Lc 86M/0vlD6xgEQ== Received: from localhost (unknown [82.76.59.226]) (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 222AA17E36BD; Fri, 25 Apr 2025 12:28:36 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:12 +0300 Subject: [PATCH v4 21/23] 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: <20250425-hdmi-conn-yuv-v4-21-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 format. Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 146 +++++++++++++++++= ++++ 1 file changed, 146 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 faec7aa6fd55faae2207072b67ef3d372dc1695e..e7e55db0add5b28ba7114d45a27= 2d98daed2513c 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -1334,6 +1334,76 @@ static void drm_test_check_max_tmds_rate_bpc_fallbac= k_rgb(struct kunit *test) drm_modeset_acquire_fini(&ctx); } =20 +/* + * Test that if: + * - We have an HDMI connector and a display 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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 12, + &dummy_connector_hdmi_funcs, + 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_try_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 @@ -1407,6 +1477,80 @@ static void drm_test_check_max_tmds_rate_bpc_fallbac= k_ignore_yuv422(struct kunit 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_bpc_fallback_ignore_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 *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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 12, + &dummy_connector_hdmi_funcs, + 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_try_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 @@ -1804,7 +1948,9 @@ static struct kunit_case drm_atomic_helper_connector_= hdmi_check_tests[] =3D { 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_rgb), + KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_yuv420), KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422), + KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_ignore_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 From nobody Sun Feb 8 13:11:01 2026 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 E3F6B250BED for ; Fri, 25 Apr 2025 10:28:38 +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=1745576921; cv=none; b=A90Z8NO9+uLUWba1hUyGW1zSkSf71L+E/l0a6VGp2UBPIX0vDx61lMXXXzrZPeOndYvzGNbVBtV0P3nvIlPDOCh5Os6hkb9BK8UfbKknTzPxmJ2hq4JeLEQ5yNybkSidVrXkXVEoZ5JUisJZGpK97KlXJOKzqGnusuFAoX4xZxA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576921; c=relaxed/simple; bh=ZVU2WaW7uifp+B3XQuRHQ86jvGOQE7Eh05ee1wZHt4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hYIJry9JaLJ2gPrRySs+h89uzas+HTlF1nPOMVXI1toymEmASbvU6gga0I7md7UJTeMiVqoKWxShclnZ72erOgBwobM5K+dLWSvpmbpbsftirKg4r6JFyam4yrEDEUJ8MB4dNGsAGkNqK3/LX80AiaO5zej1GhLcW4jyYGxwKM0= 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=f+e72Eop; 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="f+e72Eop" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576917; bh=ZVU2WaW7uifp+B3XQuRHQ86jvGOQE7Eh05ee1wZHt4Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=f+e72Eopswe+gMTjkIiWfIHOa2LC6wmhBmYu6K1Zg4VabA7uzyQe3tl/PCBcoMA8W kabw07n4ZFeG2d4wO7fqrU54v7Hs0hHRUdf2l0lS+GbK0QACA86kxXXyA4LjAzV+tv q69JqcXfnB9pWp/2PZXhTkg220NSj80jNeOHqiYynW/jmfWlRXYDzAoFud89db5yJO 901IvKfg71jP1DTeihitRm14Zg4ayr0suoygrdlhEim6XKaDmNoaX3vTy4jWAOdz2P 3FUYq2oglZlrZcyL9psUv1AYMCu2stPKuukFutFHLbmYzwvX8tLgHa/MnVqzzf2265 EQgFtXvX+xpJQ== Received: from localhost (unknown [82.76.59.226]) (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 0188A17E36C2; Fri, 25 Apr 2025 12:28:36 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:13 +0300 Subject: [PATCH v4 22/23] drm/tests: hdmi: Add test for unsuccessful 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: <20250425-hdmi-conn-yuv-v4-22-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 mandatory fallback to YUV420 output cannot succeed when driver doesn't advertise YUV420 support. Signed-off-by: Cristian Ciocaltea Acked-by: Maxime Ripard --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 72 ++++++++++++++++++= ++++ 1 file changed, 72 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 e7e55db0add5b28ba7114d45a272d98daed2513c..d79084cfb516b69c4244098c076= 7d604ad02f2c3 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -1551,6 +1551,77 @@ static void drm_test_check_max_tmds_rate_bpc_fallbac= k_ignore_yuv420(struct kunit 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 + * unsuccessful fallback attempts. + */ +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_connector_state *conn_state; + struct drm_crtc_state *crtc_state; + struct drm_atomic_state *state; + struct drm_display_info *info; + struct drm_display_mode *preferred, *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_funcs(test, + BIT(HDMI_COLORSPACE_RGB), + 12, + &dummy_connector_hdmi_funcs, + 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); + + preferred =3D find_preferred_mode(conn); + KUNIT_ASSERT_NOT_NULL(test, preferred); + KUNIT_ASSERT_FALSE(test, drm_mode_is_420_also(info, preferred)); + + 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_try_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_format, HDMI_COLORSPACE_RGB= ); + + state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); + +retry: + crtc_state =3D drm_atomic_get_crtc_state(state, crtc); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); + + ret =3D drm_atomic_set_mode_for_crtc(crtc_state, yuv420_only_mode); + KUNIT_EXPECT_EQ(test, ret, 0); + + ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); + KUNIT_ASSERT_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 @@ -1951,6 +2022,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_bpc_fallback_ignore_yuv422), KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_ignore_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 From nobody Sun Feb 8 13:11:01 2026 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 8583D23D2B7 for ; Fri, 25 Apr 2025 10:28:39 +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=1745576921; cv=none; b=newGNzSEw5cvyUmyzcKIENjq+kt6nDJDcz0LLkP0gPcj6Mzs3dt46mgjPCpalPyEOfWT1SC2FzejZmYlinoawrXLSEK3QFIwLGm+/kkLkU1rgbZDhLS3pMguCyCR7y30pPisapv8/r2tpA9VQiK+S301SE8zpLW0/dwPEnZlU6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745576921; c=relaxed/simple; bh=7ofSckO83vB+rgyQi4o06LSvEMNgZtnj6GcHybd32Jo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G77PPVVuD6kSZ8PfEb5Bm0PBnMzju3ZH4Smw4UjhimIGFsf5YIFz0vb/vDClYSxTx9f9tL+zrWidxGgH93FR52dMMnW7WHJaLSd6t3SRAZSdqtwWvYEaeZLgPmGtQbZO9SzAkLEDXRkr0zLWPW3/KAOCzUiaELx8H21AT5LpA1g= 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=I7b5ckXE; 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="I7b5ckXE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1745576918; bh=7ofSckO83vB+rgyQi4o06LSvEMNgZtnj6GcHybd32Jo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=I7b5ckXEPS03FYGRuCxmxXiEmWt1HA4LHNjbGbBYcioe1fDivREKN9Ljoyhdu7axb LwRW/wpNqj7bTDykS8Q51gAqyqD0s35y/mD/OiEH+7XF9nys1TlWzuxOKOGzfVkQ8Q SoMoe64dzFVdnCpY7e5L4J3Bn7+7KbRDC1AJmtFbucP0+j6sWxdClRoksaUb7aVbsg kP/mC/mezhlADPtxDZyyAOuixwEF6JyI0/aHJp3yLAB32KJPoy2XnLSf3zA+ffMLtq itgY1XgrPoihikmoc1kwkfexbnBgelbFkwGHpbS1jJeffhm/uEzpBqtJ+6XqBiVzSP WVzhdedFMv25Q== Received: from localhost (unknown [82.76.59.226]) (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 CAB7117E3626; Fri, 25 Apr 2025 12:28:37 +0200 (CEST) From: Cristian Ciocaltea Date: Fri, 25 Apr 2025 13:27:14 +0300 Subject: [PATCH v4 23/23] drm/tests: hdmi: Add test for unsupported RGB/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: <20250425-hdmi-conn-yuv-v4-23-5e55e2aaa3fa@collabora.com> References: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> In-Reply-To: <20250425-hdmi-conn-yuv-v4-0-5e55e2aaa3fa@collabora.com> To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dave Stevenson , Dmitry Baryshkov , 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 a test to verify that if both driver and screen support RGB and YUV420 formats, drm_atomic_helper_connector_hdmi_check() cannot succeed when trying to set a mode unsupported by the display. Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 66 ++++++++++++++++++= ++++ 1 file changed, 66 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 d79084cfb516b69c4244098c0767d604ad02f2c3..6337a1c52b86810c638f446c499= 5e7ee63dbc084 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -1622,6 +1622,71 @@ static void drm_test_check_driver_unsupported_fallba= ck_yuv420(struct kunit *test drm_modeset_acquire_fini(&ctx); } =20 +/* + * Test that if a driver and screen supports RGB and YUV420 formats, but t= he + * chosen mode cannot be supported by the screen, we end up with unsuccess= ful + * fallback attempts. + */ +static void drm_test_check_display_unsupported_fallback_rgb_yuv420(struct = kunit *test) +{ + struct drm_atomic_helper_connector_hdmi_priv *priv; + struct drm_modeset_acquire_ctx ctx; + struct drm_crtc_state *crtc_state; + struct drm_atomic_state *state; + struct drm_display_info *info; + struct drm_display_mode *preferred, *unsupported_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_funcs(test, + BIT(HDMI_COLORSPACE_RGB) | + BIT(HDMI_COLORSPACE_YUV420), + 10, + &dummy_connector_hdmi_funcs, + 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_TRUE(test, conn->ycbcr_420_allowed); + + preferred =3D find_preferred_mode(conn); + KUNIT_ASSERT_NOT_NULL(test, preferred); + + unsupported_mode =3D drm_kunit_display_mode_from_cea_vic(test, drm, 96); + KUNIT_ASSERT_NOT_NULL(test, unsupported_mode); + + drm_modeset_acquire_init(&ctx, 0); + + ret =3D drm_kunit_helper_try_enable_crtc_connector(test, drm, + crtc, conn, + preferred, &ctx); + KUNIT_EXPECT_EQ(test, ret, 0); + + state =3D drm_kunit_helper_atomic_state_alloc(test, drm, &ctx); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state); + +retry: + crtc_state =3D drm_atomic_get_crtc_state(state, crtc); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state); + + ret =3D drm_atomic_set_mode_for_crtc(crtc_state, unsupported_mode); + KUNIT_EXPECT_EQ(test, ret, 0); + + ret =3D drm_atomic_check_only(state); + drm_kunit_atomic_restart_on_deadlock(ret, state, &ctx, retry); + KUNIT_ASSERT_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 @@ -2023,6 +2088,7 @@ static struct kunit_case drm_atomic_helper_connector_= hdmi_check_tests[] =3D { KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422), KUNIT_CASE(drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420), KUNIT_CASE(drm_test_check_driver_unsupported_fallback_yuv420), + KUNIT_CASE(drm_test_check_display_unsupported_fallback_rgb_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