On Fri, Sep 26, 2014 at 11:52:09PM +0200, Rafael J. Wysocki wrote: > On Friday, September 26, 2014 10:30:08 AM Aaron Lu wrote: > > Some of the Thinkpads' firmware will issue a backlight change request > > through i915 operation region unconditionally on AC plug/unplug, the > > backlight level used is arbitrary and thus should be ignored. This is > > handled by commit 0b9f7d93ca61 (ACPI / i915: ignore firmware requests > > for backlight change). Then there is a Dell laptop whose vendor backlight > > interface also makes use of operation region to change backlight level > > and with the above commit, that interface no long works. The condition > > used to ignore the backlight change request from firmware is thus > > changed to: if the vendor backlight interface is not in use and the ACPI > > backlight interface is broken, we ignore the requests; oterwise, we keep > > processing them. > > > > Reference: https://lkml.org/lkml/2014/9/23/854 > > Reported-and-tested-by: Pali Rohár <pali.rohar@xxxxxxxxx> > > Cc: <stable@xxxxxxxxxxxxxxx> # v3.16 and later > > Signed-off-by: Aaron Lu <aaron.lu@xxxxxxxxx> > > Daniel, any objections? Nope, ack from my side. -Daniel > > > --- > > drivers/gpu/drm/i915/intel_opregion.c | 16 +++++++++++----- > > 1 file changed, 11 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c > > index ca52ad2ae7d1..d8de1d5140a7 100644 > > --- a/drivers/gpu/drm/i915/intel_opregion.c > > +++ b/drivers/gpu/drm/i915/intel_opregion.c > > @@ -396,6 +396,16 @@ int intel_opregion_notify_adapter(struct drm_device *dev, pci_power_t state) > > return -EINVAL; > > } > > > > +/* > > + * If the vendor backlight interface is not in use and ACPI backlight interface > > + * is broken, do not bother processing backlight change requests from firmware. > > + */ > > +static bool should_ignore_backlight_request(void) > > +{ > > + return acpi_video_backlight_support() && > > + !acpi_video_verify_backlight_support(); > > +} > > + > > static u32 asle_set_backlight(struct drm_device *dev, u32 bclp) > > { > > struct drm_i915_private *dev_priv = dev->dev_private; > > @@ -404,11 +414,7 @@ static u32 asle_set_backlight(struct drm_device *dev, u32 bclp) > > > > DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp); > > > > - /* > > - * If the acpi_video interface is not supposed to be used, don't > > - * bother processing backlight level change requests from firmware. > > - */ > > - if (!acpi_video_verify_backlight_support()) { > > + if (should_ignore_backlight_request()) { > > DRM_DEBUG_KMS("opregion backlight request ignored\n"); > > return 0; > > } > > > > -- > I speak only for myself. > Rafael J. Wysocki, Intel Open Source Technology Center. -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html