Bug 205699 - Backlight adjustment does nothing on Intel with Samsung OLED panel
Summary: Backlight adjustment does nothing on Intel with Samsung OLED panel
Status: RESOLVED MOVED
Alias: None
Product: Drivers
Classification: Unclassified
Component: Video(Other) (show other bugs)
Hardware: Intel Linux
: P1 normal
Assignee: drivers_video-other
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-11-29 02:13 UTC by Kyle Altendorf
Modified: 2019-12-02 11:29 UTC (History)
0 users

See Also:
Kernel Version: 5.3.0, 5.4.0, etc
Subsystem:
Regression: No
Bisected commit-id:


Attachments
fix_max_backlight_calculations (6.73 KB, application/mbox)
2019-11-29 02:13 UTC, Kyle Altendorf
Details
customize_dpcd_brightness_control_for_specific_panel (11.02 KB, patch)
2019-11-29 02:14 UTC, Kyle Altendorf
Details | Diff
fix_max_backlight_calculations (6.73 KB, patch)
2019-11-29 02:16 UTC, Kyle Altendorf
Details | Diff

Description Kyle Altendorf 2019-11-29 02:13:49 UTC
Created attachment 286111 [details]
fix_max_backlight_calculations

When running Ubuntu with linux-image-5.3.0-23-generic, mainline 5.3.13, or latest 5.4+ my Lenovo ThinkPad P1 Gen 2 is unable to change the backlight brightness.  The buttons trigger the on-screen display and move the bar but the actual display brightness does not change.  With the kernel option i915.enable_dpcd_backlight=1 it does make the backlight change but erratically.  For example moving through the range you get stuff like off, medium bright, dim, bright, medium, off.  This does work in Ubuntu linux-image-4.15.0-1059-oem.  It seems the following commits in particular make the difference.

UBUNTU: SAUCE: i915: intel_dp_aux_backlight: Fix max backlight calculations
https://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-oem/+git/eoan/commit/?h=oem&id=ff39163c455f31005e2709a2006a7605b3d8a05f

UBUNTU: SAUCE: drm/i915: customize DPCD brightness control for specific panel
https://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-oem/+git/eoan/commit/?h=oem&id=cf7286b44a6e27967f5ed134c4492dd17bde118a

I ported the above commits to the latest linux mainline kernel and am running that.  This was in part because >= 5.3.12 fixes another issue with this hardware where the screen remains black after a resume (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1854177).

https://github.com/altendky/linux/commit/395eb4b85f6a0f85061c0598247727de0d9316f6
https://github.com/altendky/linux/commit/c2dc38e6aadf3d979bea83e382a1b119574df7af

Built with:

git clean -fdx && cp /boot/config-5.3.0-23-generic .config && yes '' | make oldconfig && make clean && make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-altendky-backlight

Note that the use of DEVICE_ID_ANY is likely bad and the correct ID for this panel should be identified.  I wanted to first confirm it worked before bothering to figure out which ID was needed there and how to get it.
Comment 1 Kyle Altendorf 2019-11-29 02:14:31 UTC
Created attachment 286113 [details]
customize_dpcd_brightness_control_for_specific_panel
Comment 2 Kyle Altendorf 2019-11-29 02:16:14 UTC
Created attachment 286115 [details]
fix_max_backlight_calculations
Comment 3 Kyle Altendorf 2019-11-29 02:18:27 UTC
I should note that I have naively ported these patches.  While I have done embedded C for years and some hardware design...  I am not familiar with Linux kernel development nor any details of controlling this hardware.
Comment 4 Kyle Altendorf 2019-11-29 02:28:22 UTC
:[  Also, this laptop has the Samsung OLED panel.

Note You need to log in before you can comment on or make changes to this bug.