[Intel-gfx] [RFC] drm/i915/backlight: switch to unique backlight device names
Jani Nikula
jani.nikula at intel.com
Wed Apr 7 09:08:12 UTC 2021
Change the backlight device names from intel_backlight to
card%d-%s-backlight format, for example card0-eDP-1-backlight, to make
them unique. Otherwise, registering multiple backlight devices with
intel_backlight name will fail, regardless of whether they're two
connectors in the same device or two different devices.
Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2794
Signed-off-by: Jani Nikula <jani.nikula at intel.com>
---
Is the name "intel_backlight" part of the UABI? In theory the userspace
should only look at the names and types available under
/sys/class/backlight, not the exact names.
---
drivers/gpu/drm/i915/display/intel_panel.c | 29 ++++++++++++++--------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
index 10022d1575e1..5ebf8cb0e8e3 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -1372,6 +1372,8 @@ 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;
+ const char *name;
+ int ret = 0;
if (WARN_ON(panel->backlight.device))
return -ENODEV;
@@ -1398,28 +1400,33 @@ int intel_backlight_device_register(struct intel_connector *connector)
else
props.power = FB_BLANK_POWERDOWN;
- /*
- * Note: using the same name independent of the connector prevents
- * registration of multiple backlight devices in the driver.
- */
+ name = kasprintf(GFP_KERNEL, "card%d-%s-backlight", i915->drm.primary->index,
+ connector->base.name);
+ if (!name)
+ return -ENOMEM;
+
panel->backlight.device =
- backlight_device_register("intel_backlight",
+ backlight_device_register(name,
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));
+ drm_err(&i915->drm, "Failed to register backlight %s: %ld\n",
+ name, PTR_ERR(panel->backlight.device));
panel->backlight.device = NULL;
- return -ENODEV;
+ ret = -ENODEV;
+ goto out;
}
drm_dbg_kms(&i915->drm,
- "Connector %s backlight sysfs interface registered\n",
- connector->base.name);
+ "Connector %s backlight sysfs interface %s registered\n",
+ name, connector->base.name);
- return 0;
+out:
+ kfree(name);
+
+ return ret;
}
void intel_backlight_device_unregister(struct intel_connector *connector)
--
2.20.1
More information about the Intel-gfx
mailing list