On 5/11/26 6:11 PM, Sebastian Wick wrote:
On Sat, Apr 25, 2026 at 12:10 AM Mario Limonciello
<[email protected]> wrote:
From: Mario Limonciello (AMD) <[email protected]>
At Display Next Hackfest 2025 we discussed the renewed need for moving
brightness control into the DRM connector properties. I've taken the
previous efforts from David and Marta, rebased and adjusted for the
current kernel.
Thanks a lot for this!
Sure!
I've wired it up for mutter but I don't have a machine with AMD
graphics and an internal panel, so I can't really test it.
https://gitlab.gnome.org/swick/mutter/-/commits/wip/kms-luminance-prop
Awesome! I have been caught up with a few other things so I haven't
been able to give this a shot, but wanted to before the hackfest.
But I have never used a dev version of mutter, so can you give me a
little hand holding or pointers?
I was able to build/install your branch into /usr/local. I otherwise
have GNOME 50 set up on this system.
How do I actually "use" the mutter built from your dev branch?
Will picking GNOME session at my login manager pick mutter from
/usr/local or do I need to do anything?
I've also noticed a few things while doing so:
1. There isn't a bit of information which tells user space if the
property is actually backed by anything
2. A fixed range from 0 to uint16_t max might be problematic for
backlights with very few steps
Could maybe fix both of those issues by making the range dynamic to
the actual numbers of steps, where zero means that there isn't any
backing backlight device.
I'll play with this idea and see how well it works.
The legacy sysfs interface is synchronized with the DRM connector (although
the scale may be different as DRM connector property is u16).
Later after this has been adopted by enough userspace, it may make sense to
configure the legacy sysfs interface to be configurable so that only
DRM master controls backlight.
I've done a first implementation with amdgpu with eDP connectors; but
conceivably this can be extended to other connectors like DP for displays
that can be controlled via DDC as well later.
I have also used DRM review prompts to review this series and fix some bugs
which were caught with two different Claude models. The fixes are squashed
into the patches.
Assisted-by: Claude Opus
Assisted-by: Claude Sonnet
For ease of testing; this series is also available on this branch:
https://git.kernel.org/pub/scm/linux/kernel/git/superm1/linux.git/log/?h=superm1/backlight-property-v3
David Rheinsberg (1):
backlight: add kernel-internal backlight API
Mario Limonciello (6):
drm: link connectors to backlight devices
DRM: Add support for client and driver indicating support for
luminance
drm/amd/display: Pass up errors reading actual brightness
drm/amd: Indicate driver supports luminance
drm/amd/display: Allow backlight registration to fail
drm/amd/display: use drm backlight
Marta Lofstedt (1):
backlight: expose the current brightness in the new kernel API
drivers/gpu/drm/Kconfig | 1 +
drivers/gpu/drm/Makefile | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 +
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 88 +++-
drivers/gpu/drm/drm_atomic_uapi.c | 24 ++
drivers/gpu/drm/drm_backlight.c | 406 ++++++++++++++++++
drivers/gpu/drm/drm_connector.c | 12 +
drivers/gpu/drm/drm_drv.c | 8 +
drivers/gpu/drm/drm_ioctl.c | 10 +
drivers/gpu/drm/drm_mode_config.c | 7 +
drivers/gpu/drm/drm_mode_object.c | 66 ++-
drivers/gpu/drm/drm_sysfs.c | 54 +++
drivers/video/backlight/backlight.c | 83 ++++
include/drm/drm_backlight.h | 45 ++
include/drm/drm_connector.h | 8 +
include/drm/drm_drv.h | 7 +
include/drm/drm_file.h | 8 +
include/drm/drm_mode_config.h | 5 +
include/linux/backlight.h | 30 ++
include/uapi/drm/drm.h | 10 +
20 files changed, 852 insertions(+), 23 deletions(-)
create mode 100644 drivers/gpu/drm/drm_backlight.c
create mode 100644 include/drm/drm_backlight.h
--
2.53.0