diff options
Diffstat (limited to 'drivers/gpu/drm/tests')
| -rw-r--r-- | drivers/gpu/drm/tests/drm_connector_test.c | 24 | ||||
| -rw-r--r-- | drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/tests/drm_kunit_helpers.c | 42 | 
3 files changed, 58 insertions, 16 deletions
| diff --git a/drivers/gpu/drm/tests/drm_connector_test.c b/drivers/gpu/drm/tests/drm_connector_test.c index 15e36a8db685..6bba97d0be88 100644 --- a/drivers/gpu/drm/tests/drm_connector_test.c +++ b/drivers/gpu/drm/tests/drm_connector_test.c @@ -996,7 +996,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb(struct kunit *test)  	unsigned long long rate;  	struct drm_device *drm = &priv->drm; -	mode = drm_display_mode_from_cea_vic(drm, 16); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 16);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1017,7 +1017,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc(struct kunit *test)  	unsigned long long rate;  	struct drm_device *drm = &priv->drm; -	mode = drm_display_mode_from_cea_vic(drm, 16); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 16);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1038,7 +1038,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1(struct kunit *t  	unsigned long long rate;  	struct drm_device *drm = &priv->drm; -	mode = drm_display_mode_from_cea_vic(drm, 1); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	rate = drm_hdmi_compute_mode_clock(mode, 10, HDMI_COLORSPACE_RGB); @@ -1056,7 +1056,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc(struct kunit *test)  	unsigned long long rate;  	struct drm_device *drm = &priv->drm; -	mode = drm_display_mode_from_cea_vic(drm, 16); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 16);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1077,7 +1077,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1(struct kunit *t  	unsigned long long rate;  	struct drm_device *drm = &priv->drm; -	mode = drm_display_mode_from_cea_vic(drm, 1); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	rate = drm_hdmi_compute_mode_clock(mode, 12, HDMI_COLORSPACE_RGB); @@ -1095,7 +1095,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_double(struct kunit *test)  	unsigned long long rate;  	struct drm_device *drm = &priv->drm; -	mode = drm_display_mode_from_cea_vic(drm, 6); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 6);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_TRUE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1118,7 +1118,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv420_valid(struct kunit  	unsigned long long rate;  	unsigned int vic = *(unsigned int *)test->param_value; -	mode = drm_display_mode_from_cea_vic(drm, vic); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, vic);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1155,7 +1155,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc(struct kuni  		drm_hdmi_compute_mode_clock_yuv420_vic_valid_tests[0];  	unsigned long long rate; -	mode = drm_display_mode_from_cea_vic(drm, vic); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, vic);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1180,7 +1180,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc(struct kuni  		drm_hdmi_compute_mode_clock_yuv420_vic_valid_tests[0];  	unsigned long long rate; -	mode = drm_display_mode_from_cea_vic(drm, vic); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, vic);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1203,7 +1203,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc(struct kunit  	struct drm_device *drm = &priv->drm;  	unsigned long long rate; -	mode = drm_display_mode_from_cea_vic(drm, 16); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 16);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1225,7 +1225,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc(struct kuni  	struct drm_device *drm = &priv->drm;  	unsigned long long rate; -	mode = drm_display_mode_from_cea_vic(drm, 16); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 16);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); @@ -1247,7 +1247,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc(struct kuni  	struct drm_device *drm = &priv->drm;  	unsigned long long rate; -	mode = drm_display_mode_from_cea_vic(drm, 16); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 16);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	KUNIT_ASSERT_FALSE(test, mode->flags & DRM_MODE_FLAG_DBLCLK); diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c index 34ee95d41f29..294773342e71 100644 --- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c @@ -441,7 +441,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test)  	ctx = drm_kunit_helper_acquire_ctx_alloc(test);  	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx); -	mode = drm_display_mode_from_cea_vic(drm, 1); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	drm = &priv->drm; @@ -555,7 +555,7 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test)  	ctx = drm_kunit_helper_acquire_ctx_alloc(test);  	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx); -	mode = drm_display_mode_from_cea_vic(drm, 1); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	drm = &priv->drm; @@ -671,7 +671,7 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te  	ctx = drm_kunit_helper_acquire_ctx_alloc(test);  	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx); -	mode = drm_display_mode_from_cea_vic(drm, 1); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	drm = &priv->drm; @@ -1263,7 +1263,7 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test)  	ctx = drm_kunit_helper_acquire_ctx_alloc(test);  	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx); -	mode = drm_display_mode_from_cea_vic(drm, 1); +	mode = drm_kunit_display_mode_from_cea_vic(test, drm, 1);  	KUNIT_ASSERT_NOT_NULL(test, mode);  	/* diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.c b/drivers/gpu/drm/tests/drm_kunit_helpers.c index aa62719dab0e..04a6b8cc62ac 100644 --- a/drivers/gpu/drm/tests/drm_kunit_helpers.c +++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c @@ -3,6 +3,7 @@  #include <drm/drm_atomic.h>  #include <drm/drm_atomic_helper.h>  #include <drm/drm_drv.h> +#include <drm/drm_edid.h>  #include <drm/drm_fourcc.h>  #include <drm/drm_kunit_helpers.h>  #include <drm/drm_managed.h> @@ -311,6 +312,47 @@ drm_kunit_helper_create_crtc(struct kunit *test,  }  EXPORT_SYMBOL_GPL(drm_kunit_helper_create_crtc); +static void kunit_action_drm_mode_destroy(void *ptr) +{ +	struct drm_display_mode *mode = ptr; + +	drm_mode_destroy(NULL, mode); +} + +/** + * 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 + * + * Creates a new mode matching the specified CEA VIC for a KUnit test. + * + * Resources will be cleaned up automatically. + * + * Returns: A new drm_display_mode on success or NULL on failure + */ +struct drm_display_mode * +drm_kunit_display_mode_from_cea_vic(struct kunit *test, struct drm_device *dev, +				    u8 video_code) +{ +	struct drm_display_mode *mode; +	int ret; + +	mode = drm_display_mode_from_cea_vic(dev, video_code); +	if (!mode) +		return NULL; + +	ret = kunit_add_action_or_reset(test, +					kunit_action_drm_mode_destroy, +					mode); +	if (ret) +		return NULL; + +	return mode; +} +EXPORT_SYMBOL_GPL(drm_kunit_display_mode_from_cea_vic); +  MODULE_AUTHOR("Maxime Ripard <maxime@cerno.tech>");  MODULE_DESCRIPTION("KUnit test suite helper functions");  MODULE_LICENSE("GPL"); | 
