From: "Mario Limonciello (AMD)" <[email protected]>

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]>
---
 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 b128896cb1c2d..4543c2a8f3568 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>
 #include <drm/intel/pci_config.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 0ce0c09835f6d..cd35cce329a55 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>
@@ -7421,6 +7422,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.43.0

Reply via email to