From: Alex Hung <[email protected]> [WHAT] Cover the eDP success path of amdgpu_dm_setup_backlight_device() where the ABM level property is attached to the connector. A DRM-managed connector fixture (drmm_mode_config_init + drmm_connector_init) lets the test verify that one property is added and that its value is ABM_SYSFS_CONTROL.
Assisted-by: Copilot:Claude-Opus-4.8 Reviewed-by: Bhawanpreet Lakha <[email protected]> Signed-off-by: Alex Hung <[email protected]> Signed-off-by: George Zhang <[email protected]> --- .../tests/amdgpu_dm_backlight_test.c | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c index b74bbbc7f56f..f55f93747df7 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_backlight_test.c @@ -16,6 +16,7 @@ #include "dc.h" #include "dc_dmub_srv.h" #include "amdgpu.h" +#include "amdgpu_display.h" #include "amdgpu_mode.h" #include "amdgpu_dm.h" #include "amdgpu_dm_backlight.h" @@ -30,6 +31,12 @@ struct dm_backlight_connector_fixture { struct dc_link *link; }; +static const struct drm_connector_funcs dm_backlight_test_connector_funcs = { + .reset = drm_atomic_helper_connector_reset, + .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, + .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, +}; + static void setup_test_connector(struct kunit *test, struct dm_backlight_connector_fixture *fixture, int bl_idx, enum signal_type signal) @@ -1787,6 +1794,61 @@ static void dm_test_setup_backlight_device_oled_success(struct kunit *test) amdgpu_dm_set_abm_level_param(saved_abm_level); } +/** + * dm_test_setup_backlight_device_attaches_abm_property - Test ABM property path + * @test: The KUnit test context + */ +static void dm_test_setup_backlight_device_attaches_abm_property(struct kunit *test) +{ + struct amdgpu_dm_connector *aconnector; + struct amdgpu_display_manager *dm; + struct amdgpu_device *adev; + struct drm_property *prop; + struct dc_link *link; + int saved_abm_level = amdgpu_dm_get_abm_level_param(); + int saved_backlight = amdgpu_dm_get_backlight_param(); + int old_count; + int ret; + + amdgpu_dm_set_abm_level_param(-1); + amdgpu_dm_set_backlight_param(-1); + adev = dm_kunit_alloc_adev(test); + ret = drmm_mode_config_init(&adev->ddev); + KUNIT_ASSERT_EQ(test, ret, 0); + + prop = drm_property_create_range(&adev->ddev, 0, "abm level", 0, 4); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, prop); + adev->mode_info.abm_level_property = prop; + + aconnector = dm_kunit_alloc_connector(test, adev, NULL); + ret = drmm_connector_init(&adev->ddev, &aconnector->base, + &dm_backlight_test_connector_funcs, + DRM_MODE_CONNECTOR_eDP, NULL); + KUNIT_ASSERT_EQ(test, ret, 0); + + link = dm_kunit_alloc_link(test); + link->connector_signal = SIGNAL_TYPE_EDP; + link->type = dc_connection_single; + aconnector->dc_link = link; + aconnector->bl_idx = -1; + dm = &adev->dm; + dm->adev = adev; + dm->ddev = &adev->ddev; + old_count = aconnector->base.base.properties->count; + + amdgpu_dm_setup_backlight_device(dm, aconnector); + + KUNIT_EXPECT_EQ(test, dm->num_of_edps, 1); + KUNIT_EXPECT_EQ(test, aconnector->bl_idx, 0); + KUNIT_EXPECT_EQ(test, aconnector->base.base.properties->count, old_count + 1); + KUNIT_EXPECT_PTR_EQ(test, aconnector->base.base.properties->properties[old_count], prop); + KUNIT_EXPECT_EQ(test, aconnector->base.base.properties->values[old_count], + (uint64_t)ABM_SYSFS_CONTROL); + + amdgpu_dm_set_backlight_param(saved_backlight); + amdgpu_dm_set_abm_level_param(saved_abm_level); +} + static struct kunit_case dm_backlight_test_cases[] = { /* dm_find_stream_with_link */ KUNIT_CASE(dm_test_find_stream_with_link_returns_match), @@ -1872,6 +1934,7 @@ static struct kunit_case dm_backlight_test_cases[] = { KUNIT_CASE(dm_test_setup_backlight_device_connection_none), KUNIT_CASE(dm_test_setup_backlight_device_max_edps), KUNIT_CASE(dm_test_setup_backlight_device_oled_success), + KUNIT_CASE(dm_test_setup_backlight_device_attaches_abm_property), {} }; -- 2.55.0
