[Bug 112014] i915: intel_dp_aux_backlight max_brightness set to incorrect value on Thinkpad P1 Gen2 AMOLED
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Thu Nov 7 10:38:19 UTC 2019
https://bugs.freedesktop.org/show_bug.cgi?id=112014
Lakshmi <lakshminarayana.vudum at intel.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jani.nikula at intel.com
i915 features| |display/backlight
--- Comment #2 from Lakshmi <lakshminarayana.vudum at intel.com> ---
(In reply to Josh Farwell from comment #0)
> I found an interesting issue concerning the backlight on my new laptop. I am
> running Fedora 30 and replicated the issue with 5.2.17 and 5.3.5 kernels.
> Hardware is as follows:
>
> Thinkpad P1 Gen2
> - i9-9880k
> - Nvidia Optimus with Quadro T2000
> - 4K AMOLED Touch display with eDP display connector
>
> I would not be surprised at all if the Thinkpad X1 Extreme Gen 2 with AMOLED
> has the same problem, they're pretty much exactly the same hardware
> apparently.
>
> This laptop's display uses AMOLED and does not have a traditional backlight.
> We get backlight control by turning on the enable_dpcd_backlight parameter
> in the i915 module and using PWM based backlight control. I dropped this
> config in /etc/modprobe.d/i915.conf to enable this feature:
>
> ```
> [josh at lappy-mk5 linux-stable]$ cat /etc/modprobe.d/i915.conf
> options i915 enable_dpcd_backlight
> ```
>
> When I turned it on, I discovered that the brightness controls were very
> wonky. As I triggered the "brightness up" ACPI event, the backlight was
> switching between low brightness and high brightness with every key press,
> and the brightness level seemed random. There were no errors found in dmesg.
>
> The backlight control is found in
> /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight
> on my system. max_brightness is set to 65535, which i've seen on other
> systems. I discovered through some tinkering that if we pass integers 0 -
> 2047 to intel_backlight/brightness, the brightness scales linearly. Once we
> pass 2048 to the brightness function, the brightness drops back down to the
> same level as it was at 0. This happens again at 4097 where it is at maximum
> brightness, and 4098 brings the brightness level back to zero again. This
> sequence repeats 30 more times until we are at maximum brightness at 65535.
>
> I traced this issue to this function in
> drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c (line 228-245 on 5.3.5
> stable):
>
> ```
> static int intel_dp_aux_setup_backlight(struct intel_connector *connector,
> enum pipe pipe)
> {
> struct intel_dp *intel_dp =
> enc_to_intel_dp(&connector->encoder->base);
> struct intel_panel *panel = &connector->panel;
>
> if (intel_dp->edp_dpcd[2] & DP_EDP_BACKLIGHT_BRIGHTNESS_BYTE_COUNT)
> panel->backlight.max = 0xFFFF;
> else
> panel->backlight.max = 0xFF;
>
> panel->backlight.min = 0;
> panel->backlight.level = intel_dp_aux_get_backlight(connector);
>
> panel->backlight.enabled = panel->backlight.level != 0;
>
> return 0;
> }
> ```
>
> When I hack this function and replace 0xFFFF with 0x7FF, my backlight works
> perfectly with no problems.
>
> It seems like this function needs a third branch in that conditional that
> knows something specific about this laptop's display and can set the
> max_brightness to 2047. I don't know enough about the rest of the driver to
> write a patch for this, but I am happy to help by collecting debug
> information and testing patches. Just let me know what I should provide next.
@Josh, Which platform is this?
CC'ing Jani.
--
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20191107/d07ed65e/attachment.html>
More information about the intel-gfx-bugs
mailing list