Convert Intel display drivers (i915 and xe) to use the new DRM backlight infrastructure. This allows brightness control via DRM connector properties.
Allocate DRM backlight for eDP connectors during initialization, link the backlight device to the connector during registration, and unlink during unregistration. Assisted-by: Sonnet:4 Signed-off-by: Mario Limonciello (AMD) <[email protected]> --- v5: * New patch --- drivers/gpu/drm/i915/display/intel_backlight.c | 4 ++++ drivers/gpu/drm/i915/display/intel_dp.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_backlight.c b/drivers/gpu/drm/i915/display/intel_backlight.c index 34e95f05936e..99ae39dfb7bb 100644 --- a/drivers/gpu/drm/i915/display/intel_backlight.c +++ b/drivers/gpu/drm/i915/display/intel_backlight.c @@ -9,6 +9,7 @@ #include <linux/string_helpers.h> #include <acpi/video.h> +#include <drm/drm_backlight.h> #include <drm/drm_file.h> #include <drm/drm_print.h> @@ -1004,6 +1005,8 @@ int intel_backlight_device_register(struct intel_connector *connector) "[CONNECTOR:%d:%s] backlight device %s registered\n", connector->base.base.id, connector->base.name, name); + drm_backlight_link(connector->base.backlight, bd); + out: kfree(name); @@ -1015,6 +1018,7 @@ void intel_backlight_device_unregister(struct intel_connector *connector) struct intel_panel *panel = &connector->panel; if (panel->backlight.device) { + drm_backlight_link(connector->base.backlight, NULL); backlight_device_unregister(panel->backlight.device); panel->backlight.device = NULL; } diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 6ef2a0043cda..109f85dc6b89 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -44,6 +44,7 @@ #include <drm/display/drm_dsc_helper.h> #include <drm/display/drm_hdmi_helper.h> #include <drm/drm_atomic_helper.h> +#include <drm/drm_backlight.h> #include <drm/drm_crtc.h> #include <drm/drm_edid.h> #include <drm/drm_fixed.h> @@ -7222,6 +7223,13 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, type, &intel_dp->aux.ddc); drm_connector_helper_add(&connector->base, &intel_dp_connector_helper_funcs); + if (type == DRM_MODE_CONNECTOR_eDP) { + int r = drm_backlight_alloc(&connector->base); + + if (r) + drm_err(display->drm, "Failed to allocate backlight: %d\n", r); + } + if (!HAS_GMCH(display) && DISPLAY_VER(display) < 12) connector->base.interlace_allowed = true; -- 2.54.0
