Unverified Commit 74e98941 authored by Cristian Ciocaltea's avatar Cristian Ciocaltea Committed by Maxime Ripard
Browse files

drm/tests: hdmi: Replace open coded EDID setup



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.

Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
Signed-off-by: default avatarCristian Ciocaltea <cristian.ciocaltea@collabora.com>
Link: https://lore.kernel.org/r/20250527-hdmi-conn-yuv-v5-10-74c9c4a8ac0c@collabora.com


Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
parent a08fd207
Loading
Loading
Loading
Loading
+92 −142
Original line number Diff line number Diff line
@@ -762,19 +762,16 @@ static void drm_test_check_output_bpc_crtc_mode_changed(struct kunit *test)
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    10);
				10,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = find_preferred_mode(conn);
	KUNIT_ASSERT_NOT_NULL(test, preferred);

@@ -841,19 +838,16 @@ static void drm_test_check_output_bpc_crtc_mode_not_changed(struct kunit *test)
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    10);
				10,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = find_preferred_mode(conn);
	KUNIT_ASSERT_NOT_NULL(test, preferred);

@@ -915,21 +909,18 @@ static void drm_test_check_output_bpc_dvi(struct kunit *test)
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB) |
				BIT(HDMI_COLORSPACE_YUV422) |
				BIT(HDMI_COLORSPACE_YUV444),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_dvi_1080p);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = set_connector_edid(test, conn,
				 test_edid_dvi_1080p,
				 ARRAY_SIZE(test_edid_dvi_1080p));
	KUNIT_ASSERT_GT(test, ret, 0);

	info = &conn->display_info;
	KUNIT_ASSERT_FALSE(test, info->is_hdmi);

@@ -969,19 +960,16 @@ static void drm_test_check_tmds_char_rate_rgb_8bpc(struct kunit *test)
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    8);
				8,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = 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;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    10);
				10,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = 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;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = 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_fallback(struct kunit *test)
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = &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_fallback(struct kunit *test)
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB) |
				BIT(HDMI_COLORSPACE_YUV422) |
				BIT(HDMI_COLORSPACE_YUV444),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = &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;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB) |
				BIT(HDMI_COLORSPACE_YUV422) |
				BIT(HDMI_COLORSPACE_YUV444),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	conn = &priv->connector;
	ret = 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 = &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;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = &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_display_rgb_only(struct kunit *test
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB) |
				BIT(HDMI_COLORSPACE_YUV422) |
				BIT(HDMI_COLORSPACE_YUV444),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = &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;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    8);
				8,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_yuv_dc_max_340mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = &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_display_8bpc_only(struct kunit *tes
	struct drm_crtc *crtc;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB) |
				BIT(HDMI_COLORSPACE_YUV422) |
				BIT(HDMI_COLORSPACE_YUV444),
						    12);
				12,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_max_340mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	drm = &priv->drm;
	crtc = priv->crtc;
	conn = &priv->connector;
	ret = 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 = &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;

	priv = drm_kunit_helper_connector_hdmi_init_funcs(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
					BIT(HDMI_COLORSPACE_RGB),
					8,
							  &reject_100mhz_connector_hdmi_funcs);
					&reject_100mhz_connector_hdmi_funcs,
					test_edid_hdmi_1080p_rgb_max_200mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	conn = &priv->connector;

	ret = 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 = find_preferred_mode(conn);
	preferred = 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[] = {};
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init_funcs(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
					BIT(HDMI_COLORSPACE_RGB),
					8,
							  &reject_connector_hdmi_funcs);
					&reject_connector_hdmi_funcs,
					no_edid);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	conn = &priv->connector;
@@ -2006,20 +1961,15 @@ static void drm_test_check_mode_valid_reject_max_clock(struct kunit *test)
	struct drm_atomic_helper_connector_hdmi_priv *priv;
	struct drm_connector *conn;
	struct drm_display_mode *preferred;
	int ret;

	priv = drm_kunit_helper_connector_hdmi_init(test,
	priv = drm_kunit_helper_connector_hdmi_init_with_edid_funcs(test,
				BIT(HDMI_COLORSPACE_RGB),
						    8);
				8,
				&dummy_connector_hdmi_funcs,
				test_edid_hdmi_1080p_rgb_max_100mhz);
	KUNIT_ASSERT_NOT_NULL(test, priv);

	conn = &priv->connector;

	ret = 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);

	preferred = find_preferred_mode(conn);