From: Alex Hung <[email protected]>

[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 <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
Signed-off-by: Fangzhi Zuo <[email protected]>
Tested-by: Dan Wheeler <[email protected]>
---
 .../tests/amdgpu_dm_backlight_test.c          | 52 +++++++++++++++++++
 1 file changed, 52 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 618fd5142da0..7ca17f803f9d 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
@@ -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),
-- 
2.53.0

Reply via email to