OSDN Git Service

drm/i915/backlight: clean up backlight device register
authorJani Nikula <jani.nikula@intel.com>
Wed, 28 Apr 2021 10:14:28 +0000 (13:14 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 3 May 2021 13:41:25 +0000 (16:41 +0300)
Add connector and backlight device name to logging, and propagate error
code from backlight_device_register() instead of flattening to
-ENODEV. Storing the name in an allocated buffer is unnecessary here,
but makes follow-up work on names much cleaner.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/271206461d9c0f42755792236330b588df3b532e.1619604743.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_panel.c

index 551fcaa..3088677 100644 (file)
@@ -1372,6 +1372,9 @@ int intel_backlight_device_register(struct intel_connector *connector)
        struct drm_i915_private *i915 = to_i915(connector->base.dev);
        struct intel_panel *panel = &connector->panel;
        struct backlight_properties props;
+       struct backlight_device *bd;
+       const char *name;
+       int ret = 0;
 
        if (WARN_ON(panel->backlight.device))
                return -ENODEV;
@@ -1402,24 +1405,30 @@ int intel_backlight_device_register(struct intel_connector *connector)
         * Note: using the same name independent of the connector prevents
         * registration of multiple backlight devices in the driver.
         */
-       panel->backlight.device =
-               backlight_device_register("intel_backlight",
-                                         connector->base.kdev,
-                                         connector,
-                                         &intel_backlight_device_ops, &props);
-
-       if (IS_ERR(panel->backlight.device)) {
-               drm_err(&i915->drm, "Failed to register backlight: %ld\n",
-                       PTR_ERR(panel->backlight.device));
-               panel->backlight.device = NULL;
-               return -ENODEV;
+       name = kstrdup("intel_backlight", GFP_KERNEL);
+       if (!name)
+               return -ENOMEM;
+
+       bd = backlight_device_register(name, connector->base.kdev, connector,
+                                      &intel_backlight_device_ops, &props);
+       if (IS_ERR(bd)) {
+               drm_err(&i915->drm,
+                       "[CONNECTOR:%d:%s] backlight device %s register failed: %ld\n",
+                       connector->base.base.id, connector->base.name, name, PTR_ERR(bd));
+               ret = PTR_ERR(bd);
+               goto out;
        }
 
+       panel->backlight.device = bd;
+
        drm_dbg_kms(&i915->drm,
-                   "Connector %s backlight sysfs interface registered\n",
-                   connector->base.name);
+                   "[CONNECTOR:%d:%s] backlight device %s registered\n",
+                   connector->base.base.id, connector->base.name, name);
 
-       return 0;
+out:
+       kfree(name);
+
+       return ret;
 }
 
 void intel_backlight_device_unregister(struct intel_connector *connector)