[Why]
If backlight registration fails then it's ignored. This could hide
a fatal problem to a user.

[How]
Pass error codes up from backlight registration failures.

Signed-off-by: Mario Limonciello (AMD) <[email protected]>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 41 +++++++++++--------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index de9b29ad6cab..430b7d3d8930 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -5478,7 +5478,7 @@ static const struct backlight_ops amdgpu_dm_backlight_ops 
= {
        .update_status  = amdgpu_dm_backlight_update_status,
 };
 
-static void
+static int
 amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector)
 {
        struct drm_device *drm = aconnector->base.dev;
@@ -5489,15 +5489,16 @@ amdgpu_dm_register_backlight_device(struct 
amdgpu_dm_connector *aconnector)
        int min, max;
        int real_brightness;
        int init_brightness;
+       int r;
 
        if (aconnector->bl_idx == -1)
-               return;
+               return 0;
 
        if (!acpi_video_backlight_use_native()) {
                drm_info(drm, "Skipping amdgpu DM backlight registration\n");
                /* Try registering an ACPI video backlight device instead. */
                acpi_video_register_backlight();
-               return;
+               return 0;
        }
 
        caps = &dm->backlight_caps[aconnector->bl_idx];
@@ -5531,22 +5532,26 @@ amdgpu_dm_register_backlight_device(struct 
amdgpu_dm_connector *aconnector)
        dm->brightness[aconnector->bl_idx] = props.brightness;
 
        if (IS_ERR(dm->backlight_dev[aconnector->bl_idx])) {
-               drm_err(drm, "DM: Backlight registration failed!\n");
+               r = PTR_ERR(dm->backlight_dev[aconnector->bl_idx]);
+               drm_err(drm, "DM: Backlight registration failed: %d\n", r);
                dm->backlight_dev[aconnector->bl_idx] = NULL;
-       } else {
-               /*
-                * dm->brightness[x] can be inconsistent just after startup 
until
-                * ops.get_brightness is called.
-                */
-               real_brightness =
-                       
amdgpu_dm_backlight_ops.get_brightness(dm->backlight_dev[aconnector->bl_idx]);
+               return r;
+       }
 
-               if (real_brightness != init_brightness) {
-                       dm->actual_brightness[aconnector->bl_idx] = 
real_brightness;
-                       dm->brightness[aconnector->bl_idx] = real_brightness;
-               }
-               drm_dbg_driver(drm, "DM: Registered Backlight device: %s\n", 
bl_name);
+       /*
+        * dm->brightness[x] can be inconsistent just after startup until
+        * ops.get_brightness is called.
+        */
+       real_brightness =
+               
amdgpu_dm_backlight_ops.get_brightness(dm->backlight_dev[aconnector->bl_idx]);
+
+       if (real_brightness != init_brightness) {
+               dm->actual_brightness[aconnector->bl_idx] = real_brightness;
+               dm->brightness[aconnector->bl_idx] = real_brightness;
        }
+       drm_dbg_driver(drm, "DM: Registered Backlight device: %s\n", bl_name);
+
+       return 0;
 }
 
 static int initialize_plane(struct amdgpu_display_manager *dm,
@@ -8078,7 +8083,9 @@ amdgpu_dm_connector_late_register(struct drm_connector 
*connector)
                        return r;
        }
 
-       amdgpu_dm_register_backlight_device(amdgpu_dm_connector);
+       r = amdgpu_dm_register_backlight_device(amdgpu_dm_connector);
+       if (r)
+               return r;
 
        if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) ||
            (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
-- 
2.54.0

Reply via email to