mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-30 19:13:03 -04:00
drm/amd/display: share common DM KUnit helpers
Move fixture setup that was duplicated across several amdgpu_dm KUnit tests into amdgpu_dm_kunit_helpers.c: - dm_kunit_alloc_dc_with_ctx() allocates a dc and its dc_context. - dm_kunit_alloc_drm_with_connector_list() allocates a drm_device with an initialized connector list. Update the irq, psr, crtc and backlight tests to use these helpers. Reviewed-by: Bhawanpreet Lakha <bhawanpreet.lakha@amd.com> Signed-off-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Fangzhi Zuo <jerry.zuo@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -56,14 +56,7 @@ static void setup_test_connector(struct kunit *test,
|
||||
|
||||
static void setup_test_dm_ddev(struct kunit *test, struct amdgpu_display_manager *dm)
|
||||
{
|
||||
struct drm_device *ddev;
|
||||
|
||||
ddev = kunit_kzalloc(test, sizeof(*ddev), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ddev);
|
||||
|
||||
INIT_LIST_HEAD(&ddev->mode_config.connector_list);
|
||||
spin_lock_init(&ddev->mode_config.connector_list_lock);
|
||||
dm->ddev = ddev;
|
||||
dm->ddev = dm_kunit_alloc_drm_with_connector_list(test);
|
||||
}
|
||||
|
||||
/* Tests for dm_find_stream_with_link() */
|
||||
|
||||
@@ -296,13 +296,9 @@ static void dm_test_crtc_is_headless_null_adev(struct kunit *test)
|
||||
static void dm_test_crtc_is_headless_no_connectors(struct kunit *test)
|
||||
{
|
||||
struct amdgpu_device *adev = kunit_kzalloc(test, sizeof(*adev), GFP_KERNEL);
|
||||
struct drm_device *dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
|
||||
struct drm_device *dev = dm_kunit_alloc_drm_with_connector_list(test);
|
||||
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, adev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
|
||||
|
||||
INIT_LIST_HEAD(&dev->mode_config.connector_list);
|
||||
spin_lock_init(&dev->mode_config.connector_list_lock);
|
||||
adev->dm.ddev = dev;
|
||||
|
||||
KUNIT_EXPECT_TRUE(test, amdgpu_dm_is_headless(adev));
|
||||
@@ -315,15 +311,11 @@ static void dm_test_crtc_is_headless_no_connectors(struct kunit *test)
|
||||
static void dm_test_crtc_is_headless_writeback_only(struct kunit *test)
|
||||
{
|
||||
struct amdgpu_device *adev = kunit_kzalloc(test, sizeof(*adev), GFP_KERNEL);
|
||||
struct drm_device *dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
|
||||
struct drm_device *dev = dm_kunit_alloc_drm_with_connector_list(test);
|
||||
struct drm_connector *wb = kunit_kzalloc(test, sizeof(*wb), GFP_KERNEL);
|
||||
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, adev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, wb);
|
||||
|
||||
INIT_LIST_HEAD(&dev->mode_config.connector_list);
|
||||
spin_lock_init(&dev->mode_config.connector_list_lock);
|
||||
adev->dm.ddev = dev;
|
||||
|
||||
dm_test_add_connector(dev, wb, DRM_MODE_CONNECTOR_WRITEBACK,
|
||||
@@ -339,15 +331,11 @@ static void dm_test_crtc_is_headless_writeback_only(struct kunit *test)
|
||||
static void dm_test_crtc_is_headless_disconnected_display(struct kunit *test)
|
||||
{
|
||||
struct amdgpu_device *adev = kunit_kzalloc(test, sizeof(*adev), GFP_KERNEL);
|
||||
struct drm_device *dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
|
||||
struct drm_device *dev = dm_kunit_alloc_drm_with_connector_list(test);
|
||||
struct drm_connector *display = kunit_kzalloc(test, sizeof(*display), GFP_KERNEL);
|
||||
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, adev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, display);
|
||||
|
||||
INIT_LIST_HEAD(&dev->mode_config.connector_list);
|
||||
spin_lock_init(&dev->mode_config.connector_list_lock);
|
||||
adev->dm.ddev = dev;
|
||||
|
||||
dm_test_add_connector(dev, display, DRM_MODE_CONNECTOR_HDMIA,
|
||||
@@ -363,15 +351,11 @@ static void dm_test_crtc_is_headless_disconnected_display(struct kunit *test)
|
||||
static void dm_test_crtc_is_headless_connected_display(struct kunit *test)
|
||||
{
|
||||
struct amdgpu_device *adev = kunit_kzalloc(test, sizeof(*adev), GFP_KERNEL);
|
||||
struct drm_device *dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
|
||||
struct drm_device *dev = dm_kunit_alloc_drm_with_connector_list(test);
|
||||
struct drm_connector *display = kunit_kzalloc(test, sizeof(*display), GFP_KERNEL);
|
||||
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, adev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, display);
|
||||
|
||||
INIT_LIST_HEAD(&dev->mode_config.connector_list);
|
||||
spin_lock_init(&dev->mode_config.connector_list_lock);
|
||||
adev->dm.ddev = dev;
|
||||
|
||||
dm_test_add_connector(dev, display, DRM_MODE_CONNECTOR_HDMIA,
|
||||
@@ -387,17 +371,13 @@ static void dm_test_crtc_is_headless_connected_display(struct kunit *test)
|
||||
static void dm_test_crtc_is_headless_mixed_connectors(struct kunit *test)
|
||||
{
|
||||
struct amdgpu_device *adev = kunit_kzalloc(test, sizeof(*adev), GFP_KERNEL);
|
||||
struct drm_device *dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
|
||||
struct drm_device *dev = dm_kunit_alloc_drm_with_connector_list(test);
|
||||
struct drm_connector *wb = kunit_kzalloc(test, sizeof(*wb), GFP_KERNEL);
|
||||
struct drm_connector *display = kunit_kzalloc(test, sizeof(*display), GFP_KERNEL);
|
||||
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, adev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, wb);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, display);
|
||||
|
||||
INIT_LIST_HEAD(&dev->mode_config.connector_list);
|
||||
spin_lock_init(&dev->mode_config.connector_list_lock);
|
||||
adev->dm.ddev = dev;
|
||||
|
||||
dm_test_add_connector(dev, wb, DRM_MODE_CONNECTOR_WRITEBACK,
|
||||
|
||||
@@ -202,22 +202,6 @@ static void dm_test_dmub_notify_callback(struct amdgpu_device *adev,
|
||||
dm_test_dmub_notify_count++;
|
||||
}
|
||||
|
||||
static struct dc *dm_test_alloc_dc_with_ctx(struct kunit *test)
|
||||
{
|
||||
struct dc_context *ctx;
|
||||
struct dc *dc;
|
||||
|
||||
dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dc);
|
||||
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
|
||||
|
||||
dc->ctx = ctx;
|
||||
ctx->dc = dc;
|
||||
|
||||
return dc;
|
||||
}
|
||||
|
||||
static enum dc_irq_source dm_test_to_dal_irq_source_dce110(
|
||||
struct irq_service *irq_service,
|
||||
uint32_t src_id,
|
||||
@@ -299,7 +283,7 @@ static struct dc *dm_test_alloc_dc_with_irq_service(struct kunit *test,
|
||||
struct dc *dc;
|
||||
int i;
|
||||
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
res_pool = kunit_kzalloc(test, sizeof(*res_pool), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, res_pool);
|
||||
irqs = kunit_kzalloc(test, sizeof(*irqs), GFP_KERNEL);
|
||||
@@ -3283,7 +3267,7 @@ static void dm_test_register_hpd_handlers_dmub_outbox(struct kunit *test)
|
||||
|
||||
adev = dm_kunit_alloc_adev(test);
|
||||
KUNIT_ASSERT_EQ(test, amdgpu_dm_irq_init(adev), 0);
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
adev->dm.dc = dc;
|
||||
|
||||
/* Make dc_is_dmub_outbox_supported() return true. */
|
||||
@@ -3495,7 +3479,7 @@ static void dm_test_dmub_outbox1_low_irq_empty(struct kunit *test)
|
||||
struct dc *dc;
|
||||
|
||||
adev = dm_kunit_alloc_adev(test);
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
dc_dmub_srv = kunit_kzalloc(test, sizeof(*dc_dmub_srv), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dc_dmub_srv);
|
||||
dmub = kunit_kzalloc(test, sizeof(*dmub), GFP_KERNEL);
|
||||
@@ -3529,7 +3513,7 @@ static struct amdgpu_device *dm_test_alloc_adev_outbox_notify(struct kunit *test
|
||||
struct dc *dc;
|
||||
|
||||
adev = dm_kunit_alloc_adev(test);
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
dc_dmub_srv = kunit_kzalloc(test, sizeof(*dc_dmub_srv), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dc_dmub_srv);
|
||||
dmub = kunit_kzalloc(test, sizeof(*dmub), GFP_KERNEL);
|
||||
@@ -3635,7 +3619,7 @@ static void dm_test_dce110_register_irq_handlers_rejects_uninitialized_sources(s
|
||||
struct dc *dc;
|
||||
|
||||
adev = dm_kunit_alloc_adev(test);
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
adev->dm.dc = dc;
|
||||
|
||||
KUNIT_EXPECT_EQ(test, amdgpu_dm_dce110_register_irq_handlers(adev), -EINVAL);
|
||||
@@ -3696,7 +3680,7 @@ static void dm_test_dcn10_register_irq_handlers_zero_crtc(struct kunit *test)
|
||||
adev = dm_kunit_alloc_adev(test);
|
||||
KUNIT_ASSERT_EQ(test, kunit_add_action_or_reset(test, dm_test_free_irq_sources,
|
||||
adev), 0);
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
adev->dm.dc = dc;
|
||||
adev->mode_info.num_hpd = 1;
|
||||
amdgpu_dm_set_irq_funcs(adev);
|
||||
@@ -3759,7 +3743,7 @@ static void dm_test_register_outbox_irq_handlers_without_dmub(struct kunit *test
|
||||
adev = dm_kunit_alloc_adev(test);
|
||||
KUNIT_ASSERT_EQ(test, kunit_add_action_or_reset(test, dm_test_free_irq_sources,
|
||||
adev), 0);
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
adev->dm.dc = dc;
|
||||
amdgpu_dm_set_irq_funcs(adev);
|
||||
|
||||
@@ -3899,7 +3883,7 @@ static void dm_test_handle_vmin_vmax_update(struct kunit *test)
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, adev);
|
||||
mutex_init(&adev->dm.dc_lock);
|
||||
|
||||
dc = dm_test_alloc_dc_with_ctx(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
dc->current_state = kunit_kzalloc(test, sizeof(*dc->current_state),
|
||||
GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dc->current_state);
|
||||
|
||||
@@ -45,23 +45,32 @@ struct dc_link *dm_kunit_alloc_link(struct kunit *test)
|
||||
}
|
||||
EXPORT_SYMBOL(dm_kunit_alloc_link);
|
||||
|
||||
struct dc_link *dm_kunit_alloc_link_with_ctx(struct kunit *test)
|
||||
struct dc *dm_kunit_alloc_dc_with_ctx(struct kunit *test)
|
||||
{
|
||||
struct dc_link *link;
|
||||
struct dc_context *ctx;
|
||||
struct dc *dc;
|
||||
|
||||
link = dm_kunit_alloc_link(test);
|
||||
|
||||
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, ctx);
|
||||
|
||||
dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, dc);
|
||||
|
||||
link->ctx = ctx;
|
||||
ctx->dc = dc;
|
||||
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, ctx);
|
||||
|
||||
dc->ctx = ctx;
|
||||
ctx->dc = dc;
|
||||
|
||||
return dc;
|
||||
}
|
||||
EXPORT_SYMBOL(dm_kunit_alloc_dc_with_ctx);
|
||||
|
||||
struct dc_link *dm_kunit_alloc_link_with_ctx(struct kunit *test)
|
||||
{
|
||||
struct dc_link *link;
|
||||
struct dc *dc;
|
||||
|
||||
link = dm_kunit_alloc_link(test);
|
||||
dc = dm_kunit_alloc_dc_with_ctx(test);
|
||||
link->ctx = dc->ctx;
|
||||
|
||||
return link;
|
||||
}
|
||||
@@ -138,5 +147,19 @@ struct amdgpu_dm_connector *dm_kunit_alloc_connector(struct kunit *test,
|
||||
}
|
||||
EXPORT_SYMBOL(dm_kunit_alloc_connector);
|
||||
|
||||
struct drm_device *dm_kunit_alloc_drm_with_connector_list(struct kunit *test)
|
||||
{
|
||||
struct drm_device *dev;
|
||||
|
||||
dev = kunit_kzalloc(test, sizeof(*dev), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
|
||||
|
||||
INIT_LIST_HEAD(&dev->mode_config.connector_list);
|
||||
spin_lock_init(&dev->mode_config.connector_list_lock);
|
||||
|
||||
return dev;
|
||||
}
|
||||
EXPORT_SYMBOL(dm_kunit_alloc_drm_with_connector_list);
|
||||
|
||||
MODULE_LICENSE("Dual MIT/GPL");
|
||||
MODULE_DESCRIPTION("KUnit test helpers for amdgpu_dm tests");
|
||||
|
||||
@@ -13,14 +13,18 @@
|
||||
struct amdgpu_device;
|
||||
struct amdgpu_display_manager;
|
||||
struct amdgpu_dm_connector;
|
||||
struct dc;
|
||||
struct dc_link;
|
||||
struct dc_state;
|
||||
struct dc_stream_state;
|
||||
struct drm_device;
|
||||
|
||||
struct amdgpu_device *dm_kunit_alloc_adev(struct kunit *test);
|
||||
struct dc *dm_kunit_alloc_dc_with_ctx(struct kunit *test);
|
||||
struct dc_link *dm_kunit_alloc_link(struct kunit *test);
|
||||
struct dc_link *dm_kunit_alloc_link_with_ctx(struct kunit *test);
|
||||
struct amdgpu_display_manager *dm_kunit_alloc_dm(struct kunit *test);
|
||||
struct drm_device *dm_kunit_alloc_drm_with_connector_list(struct kunit *test);
|
||||
struct dc_stream_state *dm_kunit_alloc_stream(struct kunit *test,
|
||||
struct dc_link *link);
|
||||
void dm_kunit_add_stream_to_state(struct kunit *test, struct dc_state *state,
|
||||
|
||||
@@ -46,19 +46,10 @@ static struct core_power *create_test_power_module(struct kunit *test,
|
||||
|
||||
static struct dc_link *alloc_test_psrsu_link(struct kunit *test)
|
||||
{
|
||||
struct dc_link *link = dm_kunit_alloc_link(test);
|
||||
struct dc_context *ctx;
|
||||
struct dc *dc;
|
||||
struct dc_link *link = dm_kunit_alloc_link_with_ctx(test);
|
||||
struct dc_context *ctx = link->ctx;
|
||||
struct dc *dc = ctx->dc;
|
||||
|
||||
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, ctx);
|
||||
|
||||
dc = kunit_kzalloc(test, sizeof(*dc), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_NULL(test, dc);
|
||||
|
||||
link->ctx = ctx;
|
||||
ctx->dc = dc;
|
||||
dc->ctx = ctx;
|
||||
dc->caps.dmcub_support = true;
|
||||
ctx->dce_version = DCN_VERSION_3_1;
|
||||
link->dpcd_caps.edp_rev = DP_EDP_14;
|
||||
|
||||
Reference in New Issue
Block a user