mirror of
https://github.com/torvalds/linux.git
synced 2026-04-21 08:13:56 -04:00
Merge drm/drm-next into drm-misc-next
Bring rc1 to start the new release dev. Signed-off-by: Maxime Ripard <mripard@kernel.org>
This commit is contained in:
@@ -1095,6 +1095,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.
|
||||
@@ -1186,6 +1244,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),
|
||||
|
||||
@@ -199,10 +199,8 @@ static const struct drm_dp_mst_calc_pbn_div_test drm_dp_mst_calc_pbn_div_dp1_4_c
|
||||
static void drm_test_dp_mst_calc_pbn_div(struct kunit *test)
|
||||
{
|
||||
const struct drm_dp_mst_calc_pbn_div_test *params = test->param_value;
|
||||
/* mgr->dev is only needed by drm_dbg_kms(), but it's not called for the test cases. */
|
||||
struct drm_dp_mst_topology_mgr *mgr = test->priv;
|
||||
|
||||
KUNIT_EXPECT_EQ(test, drm_dp_get_vc_payload_bw(mgr, params->link_rate, params->lane_count).full,
|
||||
KUNIT_EXPECT_EQ(test, drm_dp_get_vc_payload_bw(params->link_rate, params->lane_count).full,
|
||||
params->expected.full);
|
||||
}
|
||||
|
||||
@@ -568,21 +566,8 @@ static struct kunit_case drm_dp_mst_helper_tests[] = {
|
||||
{ }
|
||||
};
|
||||
|
||||
static int drm_dp_mst_helper_tests_init(struct kunit *test)
|
||||
{
|
||||
struct drm_dp_mst_topology_mgr *mgr;
|
||||
|
||||
mgr = kunit_kzalloc(test, sizeof(*mgr), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, mgr);
|
||||
|
||||
test->priv = mgr;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct kunit_suite drm_dp_mst_helper_test_suite = {
|
||||
.name = "drm_dp_mst_helper",
|
||||
.init = drm_dp_mst_helper_tests_init,
|
||||
.test_cases = drm_dp_mst_helper_tests,
|
||||
};
|
||||
|
||||
|
||||
@@ -1568,6 +1568,57 @@ static void drm_test_check_output_bpc_format_display_8bpc_only(struct kunit *tes
|
||||
KUNIT_EXPECT_EQ(test, conn_state->hdmi.output_format, HDMI_COLORSPACE_RGB);
|
||||
}
|
||||
|
||||
/* Test that atomic check succeeds when disabling a connector. */
|
||||
static void drm_test_check_disable_connector(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_mode *preferred;
|
||||
struct drm_connector *conn;
|
||||
struct drm_device *drm;
|
||||
struct drm_crtc *crtc;
|
||||
int ret;
|
||||
|
||||
priv = drm_kunit_helper_connector_hdmi_init(test,
|
||||
BIT(HDMI_COLORSPACE_RGB),
|
||||
8);
|
||||
KUNIT_ASSERT_NOT_NULL(test, priv);
|
||||
|
||||
ctx = drm_kunit_helper_acquire_ctx_alloc(test);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||
|
||||
conn = &priv->connector;
|
||||
preferred = find_preferred_mode(conn);
|
||||
KUNIT_ASSERT_NOT_NULL(test, preferred);
|
||||
|
||||
drm = &priv->drm;
|
||||
crtc = priv->crtc;
|
||||
ret = light_up_connector(test, drm, crtc, conn, preferred, ctx);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
|
||||
state = drm_kunit_helper_atomic_state_alloc(test, drm, ctx);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
|
||||
|
||||
crtc_state = drm_atomic_get_crtc_state(state, crtc);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc_state);
|
||||
|
||||
crtc_state->active = false;
|
||||
ret = drm_atomic_set_mode_for_crtc(crtc_state, NULL);
|
||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||
|
||||
conn_state = drm_atomic_get_connector_state(state, conn);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, conn_state);
|
||||
|
||||
ret = drm_atomic_set_crtc_for_connector(conn_state, NULL);
|
||||
KUNIT_EXPECT_EQ(test, ret, 0);
|
||||
|
||||
ret = drm_atomic_check_only(state);
|
||||
KUNIT_ASSERT_EQ(test, ret, 0);
|
||||
}
|
||||
|
||||
static struct kunit_case drm_atomic_helper_connector_hdmi_check_tests[] = {
|
||||
KUNIT_CASE(drm_test_check_broadcast_rgb_auto_cea_mode),
|
||||
KUNIT_CASE(drm_test_check_broadcast_rgb_auto_cea_mode_vic_1),
|
||||
@@ -1582,6 +1633,7 @@ static struct kunit_case drm_atomic_helper_connector_hdmi_check_tests[] = {
|
||||
*/
|
||||
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),
|
||||
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),
|
||||
|
||||
@@ -320,8 +320,7 @@ static void kunit_action_drm_mode_destroy(void *ptr)
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC
|
||||
for a KUnit test
|
||||
* drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC for a KUnit test
|
||||
* @test: The test context object
|
||||
* @dev: DRM device
|
||||
* @video_code: CEA VIC of the mode
|
||||
|
||||
Reference in New Issue
Block a user