FAILED: patch "[PATCH] drm/i915/backlight: fix CPU mode backlight takeover on LPT" failed to apply to 5.4-stable tree
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From bb83d5fb550bb7db75b29e6342417fda2bbb691c Mon Sep 17 00:00:00 2001
From: Jani Nikula <[email protected]>
Date: Fri, 8 Jan 2021 17:28:41 +0200
Subject: [PATCH] drm/i915/backlight: fix CPU mode backlight takeover on LPT
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The pch_get_backlight(), lpt_get_backlight(), and lpt_set_backlight() functions operate directly on the hardware registers. If inverting the value is needed, using intel_panel_compute_brightness(), it should only be done in the interface between hardware registers and panel->backlight.level.
The CPU mode takeover code added in commit 5b1ec9ac7ab5 ("drm/i915/backlight: Fix backlight takeover on LPT, v3.") reads the hardware register and converts to panel->backlight.level correctly, however the value written back should remain in the hardware register "domain".
This hasn't been an issue, because GM45 machines are the only known users of i915.invert_brightness and the brightness invert quirk, and without one of them no conversion is made. It's likely nobody's ever hit the problem.
drivers/gpu/drm/i915/display/intel_panel.c +5 -4
@@ -1650,16 +1650,13 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus val =pch_get_backlight (connector); else val =lpt_get_backlight (connector); - val =intel_panel_compute_brightness (connector, val); - panel->backlight.level =clamp (val, panel->backlight.min, - panel->backlight.max);if (cpu_mode) {drm_dbg_kms (&dev_priv->drm,"CPU backlight register was enabled, switching to PCH override\n" );/* Write converted CPU PWM value to PCH override register */ -lpt_set_backlight (connector->base.state, panel->backlight.level); +lpt_set_backlight (connector->base.state, val);intel_de_write (dev_priv,BLC_PWM_PCH_CTL1 , pch_ctl1 |BLM_PCH_OVERRIDE_ENABLE );
@@ -1667,6 +1664,10 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus cpu_ctl2 & ~BLM_PWM_ENABLE); } + val =intel_panel_compute_brightness (connector, val); + panel->backlight.level =clamp (val, panel->backlight.min, + panel->backlight.max); +return 0 ; }