linux/include/drm
Alessandro Rinaldi bad177fa75 drm/amd/display: Force PWM backlight on Lenovo Legion 5 15ARH05
The Lenovo Legion 5 15ARH05 (Renoir) ships a BOE 0x08DF eDP panel that
advertises AUX/DPCD backlight control, so amdgpu's automatic detection
(amdgpu_backlight == -1) selects AUX. On this panel the AUX backlight
path has no effect: brightness writes are accepted but the panel level
never changes, the display is stuck at a fixed brightness and
max_brightness is reported as a bogus 511000. As a result neither the
desktop brightness slider nor the brightness hotkeys do anything.

Forcing PWM backlight (amdgpu.backlight=0) restores working control:
max_brightness becomes 65535 and the level tracks writes. This has long
been applied by users as a manual kernel-parameter workaround.

Extend the generic panel backlight quirk with a force_pwm flag, add an
entry for the Legion 5 15ARH05 / BOE 0x08DF panel, and have amdgpu
disable AUX backlight (use PWM) when the quirk matches and the user
lets the driver auto-select the backlight type.

Signed-off-by: Alessandro Rinaldi <ale@alerinaldi.it>
Tested-by: Alessandro Rinaldi <ale@alerinaldi.it>
Reviewed-by: George Zhang <george.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 81b39f43e7e53589491e2eef6bad5389626b4b9c)
Cc: stable@vger.kernel.org
2026-07-17 17:41:15 -04:00
..
amd drm/amd/amdgpu: Add helper functions for isp buffers 2025-07-16 16:17:35 -04:00
bridge drm/bridge: dw-hdmi: document the output_port field 2026-04-14 13:52:31 +02:00
clients
display drm/dp: fix kernel-doc for struct drm_dp_as_sdp 2026-06-30 12:30:40 +03:00
intel - A Revert of a Kconfig patch that broke some builds (Jani) 2026-05-15 15:37:16 +10:00
ttm Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
amd_asic_type.h
drm_accel.h
drm_atomic_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_atomic_state_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_atomic_uapi.h drm/atomic: track individual colorop updates 2026-06-10 07:13:36 -03:00
drm_atomic.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_audio_component.h
drm_auth.h
drm_blend.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_bridge_connector.h
drm_bridge_helper.h
drm_bridge.h drm/bridge: add of_drm_get_bridge_by_endpoint() 2026-05-19 10:57:25 +02:00
drm_buddy.h gpu: Move DRM buddy allocator one level up (part two) 2026-02-06 11:38:35 +10:00
drm_cache.h
drm_client_event.h drm/client: Pass force parameter to client restore 2025-11-25 08:43:46 +01:00
drm_client.h drm/client: Export drm_client_buffer_create() 2026-03-03 09:28:31 +01:00
drm_color_mgmt.h drm: Add helper to extract lut from struct drm_color_lut32 2025-11-26 23:03:35 +01:00
drm_colorop.h drm-next for 7.2-rc1 2026-06-17 10:21:00 +01:00
drm_connector.h drm fixes for 7.2-rc1 2026-06-26 17:03:48 -07:00
drm_crtc_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_crtc.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_damage_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_debugfs_crc.h drm/crc: Fix typo in doc for drm_crtc_crc 2026-05-04 14:26:53 +02:00
drm_debugfs.h
drm_device.h drm/gem: Make the GEM LRU lock part of drm_device 2026-05-18 15:16:47 +02:00
drm_drv.h
drm_dumb_buffers.h drm/dumb-buffers: Provide helper to set pitch and size 2025-09-29 13:57:43 +02:00
drm_edid.h Revert "drm/edid: add CTA Video Format Data Block support" 2026-05-06 11:22:15 +02:00
drm_eld.h
drm_encoder.h drm/encoder: add mutex to protect the bridge chain 2026-04-16 09:08:42 +02:00
drm_exec.h drm/drm_exec: avoid indirect goto 2026-07-07 14:02:53 +02:00
drm_fb_dma_helper.h
drm_fb_helper.h drm/amdgpu: fix build for CONFIG_DRM_FBDEV_EMULATION=n 2026-04-28 15:43:04 -04:00
drm_fbdev_dma.h
drm_fbdev_shmem.h
drm_fbdev_ttm.h
drm_file.h drm/syncobj: Convert syncobj idr to xarray 2025-12-18 09:05:30 +00:00
drm_fixed.h drm/fixed: fix kernel-doc for drm_sm2fixp() 2026-06-30 12:31:20 +03:00
drm_flip_work.h
drm_format_helper.h drm/format-helper: Remove drm_fb_blit() 2025-09-23 15:06:06 +02:00
drm_fourcc.h drm: Pass pixel_format+modifier directly to drm_get_format_info() 2025-07-16 20:01:13 +03:00
drm_framebuffer.h
drm_gem_atomic_helper.h
drm_gem_dma_helper.h
drm_gem_framebuffer_helper.h drm/gem/afbc: Eliminate redundant drm_get_format_info() 2025-07-16 20:06:22 +03:00
drm_gem_shmem_helper.h drm/gem/shmem: Introduce __drm_gem_shmem_free_sgt_locked() 2026-06-02 13:16:40 -04:00
drm_gem_ttm_helper.h
drm_gem_vram_helper.h
drm_gem.h drm/gem: Make the GEM LRU lock part of drm_device 2026-05-18 15:16:47 +02:00
drm_gpusvm.h drm/gpusvm: Drop redundant @flags.* kernel-doc on struct drm_gpusvm_pages 2026-05-07 00:17:15 -07:00
drm_gpuvm.h drm/gpuvm: use const for drm_gpuva_op_* ptrs 2026-01-08 18:06:56 +01:00
drm_ioctl.h
drm_kunit_helpers.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_lease.h
drm_managed.h
drm_mipi_dbi.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_mipi_dsi.h drm/mipi-dsi: add mipi_dsi_shutdown_peripheral_multi 2026-04-24 10:12:16 -07:00
drm_mm.h drm/mm: replace drm_print.h include with a forward declaration 2025-10-31 10:34:56 +02:00
drm_mode_config.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_mode_object.h drm/mode_object: add drm_object_immutable_property_get_value() 2026-01-14 02:18:31 +02:00
drm_modes.h
drm_modeset_helper_vtables.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_modeset_helper.h drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct() 2025-07-16 20:04:45 +03:00
drm_modeset_lock.h
drm_module.h
drm_of.h drm/of: add helper to count data-lanes on a remote endpoint 2026-04-18 02:10:37 +03:00
drm_pagemap_util.h drm/pagemap_util: Add a utility to assign an owner to a set of interconnected gpus 2025-12-23 10:00:47 +01:00
drm_pagemap.h drm/pagemap: Drop source_peer_migrates flag and assume true 2026-04-12 20:51:11 -07:00
drm_panel.h drm/panel: Make drm_panel_init() static 2026-05-11 09:14:21 +02:00
drm_panic.h
drm_pciids.h
drm_plane_helper.h
drm_plane.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_prime.h
drm_print.h
drm_privacy_screen_consumer.h
drm_privacy_screen_driver.h
drm_privacy_screen_machine.h
drm_probe_helper.h
drm_property.h drm/atomic: add max_size check to drm_property_replace_blob_from_id() 2026-01-14 02:18:31 +02:00
drm_ras_genl_family.h drm/ras: Introduce the DRM RAS infrastructure over generic netlink 2026-03-05 19:38:55 -05:00
drm_ras.h drm/ras: include linux/types.h in drm_ras.h 2026-06-30 15:51:24 +03:00
drm_rect.h
drm_self_refresh_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_simple_kms_helper.h drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
drm_suballoc.h drm/sa: Split drm_suballoc_new() into SA alloc and init helpers 2026-02-20 10:54:02 -08:00
drm_syncobj.h
drm_sysfs.h
drm_util.h
drm_utils.h drm/amd/display: Force PWM backlight on Lenovo Legion 5 15ARH05 2026-07-17 17:41:15 -04:00
drm_vblank_helper.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_vblank_work.h
drm_vblank.h drm/vblank: add return value to drm_crtc_wait_one_vblank() 2025-12-11 16:55:36 +02:00
drm_vma_manager.h
drm_writeback.h
gpu_scheduler.h drm/sched: Remove drm_sched_init_args->num_rqs 2026-04-17 14:43:30 +02:00
gud.h
Makefile kbuild: Let kernel-doc.py use PYTHON3 override 2025-11-08 19:42:22 -07:00
spsc_queue.h
task_barrier.h