[Intel-gfx] [PATCH 2/2] drm/i915/backlight: use unique backlight device names

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Apr 28 12:01:23 UTC 2021


On Wed, Apr 28, 2021 at 01:14:29PM +0300, Jani Nikula wrote:
> Registering multiple backlight devices with intel_backlight name will
> obviously fail, regardless of whether they're two connectors in the same
> drm device or two different drm devices.
> 
> It would be preferrable to switch to completely unique names, and sunset
> the generic intel_backlight name. However, there are apparently users
> out there that hardcode the name, so the change would break backward
> compatibility.
> 
> As a compromise, register the first device with intel_backlight name. In
> the common case, this is the only backlight device anyway. From the
> second device on, use card%d-%s-backlight format, for example
> card0-eDP-2-backlight, to make the name unique.
> 
> This approach does not preclude us from registering the first device
> using the same naming scheme in the future.

"intel_backlight" symlink for the first backlight might be an option I
guess.

Series is
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

> 
> v2: Keep using intel_backlight name for first backlight device
> 
> 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>
> ---
>  drivers/gpu/drm/i915/display/intel_panel.c | 23 ++++++++++++++++++----
>  1 file changed, 19 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 3088677ab8a7..a20761079ae0 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -1401,16 +1401,31 @@ 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 = kstrdup("intel_backlight", GFP_KERNEL);
>  	if (!name)
>  		return -ENOMEM;
>  
>  	bd = backlight_device_register(name, connector->base.kdev, connector,
>  				       &intel_backlight_device_ops, &props);
> +
> +	/*
> +	 * Using the same name independent of the drm device or connector
> +	 * prevents registration of multiple backlight devices in the
> +	 * driver. However, we need to use the default name for backward
> +	 * compatibility. Use unique names for subsequent backlight devices as a
> +	 * fallback when the default name already exists.
> +	 */
> +	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
> +		kfree(name);
> +		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
> +				 i915->drm.primary->index, connector->base.name);
> +		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",
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel


More information about the Intel-gfx mailing list