mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
drm/amd/display: Add KUnit test for native backlight registration
[WHAT] Add a KUnit case covering the successful path of amdgpu_dm_register_backlight_device(). The test uses the standard DRM KUnit device helpers to register a native backlight device, verifies the calculated backlight properties and cached brightness, and unregisters the device through KUnit cleanup to avoid leaking a class device across cases. Assisted-by: Copilot:GPT-5.6-Terra 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:
parent
b208e33f60
commit
36e7f55ec8
|
|
@ -326,6 +326,11 @@ static int dm_test_get_backlight_level_error(const struct dc_link *link)
|
|||
return DC_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
static void dm_test_unregister_backlight_device(void *data)
|
||||
{
|
||||
backlight_device_unregister(data);
|
||||
}
|
||||
|
||||
static bool dm_test_get_backlight_level_nits(struct dc_link *link,
|
||||
uint32_t *avg,
|
||||
uint32_t *peak)
|
||||
|
|
@ -463,6 +468,52 @@ static void dm_test_register_backlight_device_negative_index(struct kunit *test)
|
|||
KUNIT_EXPECT_NULL(test, adev->dm.backlight_dev[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* dm_test_register_backlight_device_success - Test native backlight registration
|
||||
* @test: The KUnit test context
|
||||
*
|
||||
* A native backlight device must be registered with the calculated
|
||||
* properties, and its initial readback must retain the initial brightness.
|
||||
*/
|
||||
static void dm_test_register_backlight_device_success(struct kunit *test)
|
||||
{
|
||||
struct amdgpu_device *adev = dm_kunit_alloc_adev(test);
|
||||
struct amdgpu_dm_connector *aconnector;
|
||||
struct amdgpu_dm_backlight_caps *caps;
|
||||
struct dc_link *link = dm_kunit_alloc_link(test);
|
||||
struct drm_minor *primary;
|
||||
unsigned int max;
|
||||
|
||||
setup_test_link_service(test, link);
|
||||
link->dc->link_srv->edp_get_backlight_level = dm_test_get_backlight_level_error;
|
||||
primary = kunit_kzalloc(test, sizeof(*primary), GFP_KERNEL);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, primary);
|
||||
adev->ddev.primary = primary;
|
||||
adev->dm.backlight_link[0] = link;
|
||||
|
||||
aconnector = dm_kunit_alloc_connector(test, adev, link);
|
||||
aconnector->bl_idx = 0;
|
||||
aconnector->base.kdev = adev->ddev.dev;
|
||||
caps = &adev->dm.backlight_caps[0];
|
||||
caps->min_input_signal = AMDGPU_DM_DEFAULT_MIN_BACKLIGHT;
|
||||
caps->max_input_signal = AMDGPU_DM_DEFAULT_MAX_BACKLIGHT;
|
||||
caps->ac_level = 50;
|
||||
caps->dc_level = 25;
|
||||
max = 0x101 * AMDGPU_DM_DEFAULT_MAX_BACKLIGHT;
|
||||
|
||||
amdgpu_dm_register_backlight_device(aconnector);
|
||||
|
||||
KUNIT_ASSERT_NOT_NULL(test, adev->dm.backlight_dev[0]);
|
||||
KUNIT_EXPECT_EQ(test, adev->dm.backlight_dev[0]->props.max_brightness, max);
|
||||
KUNIT_EXPECT_EQ(test, adev->dm.backlight_dev[0]->props.brightness,
|
||||
DIV_ROUND_CLOSEST(max * caps->ac_level, 100));
|
||||
KUNIT_EXPECT_EQ(test, adev->dm.brightness[0],
|
||||
adev->dm.backlight_dev[0]->props.brightness);
|
||||
KUNIT_ASSERT_EQ(test, kunit_add_action_or_reset(test,
|
||||
dm_test_unregister_backlight_device,
|
||||
adev->dm.backlight_dev[0]), 0);
|
||||
}
|
||||
|
||||
static struct drm_connector *setup_panel_power_savings_connector(struct kunit *test,
|
||||
struct device **device_out,
|
||||
struct dm_connector_state **state_out)
|
||||
|
|
@ -1861,6 +1912,7 @@ static struct kunit_case dm_backlight_test_cases[] = {
|
|||
KUNIT_CASE(dm_test_backlight_get_brightness_uses_device_index),
|
||||
/* amdgpu_dm_register_backlight_device */
|
||||
KUNIT_CASE(dm_test_register_backlight_device_negative_index),
|
||||
KUNIT_CASE(dm_test_register_backlight_device_success),
|
||||
/* panel_power_savings_show / store */
|
||||
KUNIT_CASE(dm_test_panel_power_savings_show_maps_disable_to_zero),
|
||||
KUNIT_CASE(dm_test_panel_power_savings_show_reports_level),
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user