mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
drm/tests: connector: Add ycbcr_420_allowed tests
Extend HDMI connector output format tests to verify its registration succeeds only when the presence of YUV420 in the supported formats matches the state of ycbcr_420_allowed flag. Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Maxime Ripard <mripard@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20241224-bridge-conn-fmt-prio-v4-4-a9ceb5671379@collabora.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
parent
f2f9661959
commit
93801b8c2d
|
|
@ -635,6 +635,64 @@ static void drm_test_connector_hdmi_init_formats_no_rgb(struct kunit *test)
|
|||
KUNIT_EXPECT_LT(test, ret, 0);
|
||||
}
|
||||
|
||||
struct drm_connector_hdmi_init_formats_yuv420_allowed_test {
|
||||
unsigned long supported_formats;
|
||||
bool yuv420_allowed;
|
||||
int expected_result;
|
||||
};
|
||||
|
||||
#define YUV420_ALLOWED_TEST(_formats, _allowed, _result) \
|
||||
{ \
|
||||
.supported_formats = BIT(HDMI_COLORSPACE_RGB) | (_formats), \
|
||||
.yuv420_allowed = _allowed, \
|
||||
.expected_result = _result, \
|
||||
}
|
||||
|
||||
static const struct drm_connector_hdmi_init_formats_yuv420_allowed_test
|
||||
drm_connector_hdmi_init_formats_yuv420_allowed_tests[] = {
|
||||
YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV420), true, 0),
|
||||
YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV420), false, -EINVAL),
|
||||
YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV422), true, -EINVAL),
|
||||
YUV420_ALLOWED_TEST(BIT(HDMI_COLORSPACE_YUV422), false, 0),
|
||||
};
|
||||
|
||||
static void
|
||||
drm_connector_hdmi_init_formats_yuv420_allowed_desc(const struct drm_connector_hdmi_init_formats_yuv420_allowed_test *t,
|
||||
char *desc)
|
||||
{
|
||||
sprintf(desc, "supported_formats=0x%lx yuv420_allowed=%d",
|
||||
t->supported_formats, t->yuv420_allowed);
|
||||
}
|
||||
|
||||
KUNIT_ARRAY_PARAM(drm_connector_hdmi_init_formats_yuv420_allowed,
|
||||
drm_connector_hdmi_init_formats_yuv420_allowed_tests,
|
||||
drm_connector_hdmi_init_formats_yuv420_allowed_desc);
|
||||
|
||||
/*
|
||||
* Test that the registration of an HDMI connector succeeds only when
|
||||
* the presence of YUV420 in the supported formats matches the value
|
||||
* of the ycbcr_420_allowed flag.
|
||||
*/
|
||||
static void drm_test_connector_hdmi_init_formats_yuv420_allowed(struct kunit *test)
|
||||
{
|
||||
const struct drm_connector_hdmi_init_formats_yuv420_allowed_test *params;
|
||||
struct drm_connector_init_priv *priv = test->priv;
|
||||
int ret;
|
||||
|
||||
params = test->param_value;
|
||||
priv->connector.ycbcr_420_allowed = params->yuv420_allowed;
|
||||
|
||||
ret = drmm_connector_hdmi_init(&priv->drm, &priv->connector,
|
||||
"Vendor", "Product",
|
||||
&dummy_funcs,
|
||||
&dummy_hdmi_funcs,
|
||||
DRM_MODE_CONNECTOR_HDMIA,
|
||||
&priv->ddc,
|
||||
params->supported_formats,
|
||||
8);
|
||||
KUNIT_EXPECT_EQ(test, ret, params->expected_result);
|
||||
}
|
||||
|
||||
/*
|
||||
* Test that the registration of an HDMI connector with an HDMI
|
||||
* connector type succeeds.
|
||||
|
|
@ -726,6 +784,8 @@ static struct kunit_case drmm_connector_hdmi_init_tests[] = {
|
|||
KUNIT_CASE(drm_test_connector_hdmi_init_bpc_null),
|
||||
KUNIT_CASE(drm_test_connector_hdmi_init_formats_empty),
|
||||
KUNIT_CASE(drm_test_connector_hdmi_init_formats_no_rgb),
|
||||
KUNIT_CASE_PARAM(drm_test_connector_hdmi_init_formats_yuv420_allowed,
|
||||
drm_connector_hdmi_init_formats_yuv420_allowed_gen_params),
|
||||
KUNIT_CASE(drm_test_connector_hdmi_init_null_ddc),
|
||||
KUNIT_CASE(drm_test_connector_hdmi_init_null_product),
|
||||
KUNIT_CASE(drm_test_connector_hdmi_init_null_vendor),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user