From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: [PATCH 2/2] drm/i915: do not setup backlight if not available according to VBT Date: Wed, 9 Apr 2014 13:35:35 +0300 Message-ID: <1397039735-2561-2-git-send-email-jani.nikula@intel.com> References: <1397039735-2561-1-git-send-email-jani.nikula@intel.com> Return-path: In-Reply-To: <1397039735-2561-1-git-send-email-jani.nikula@intel.com> Sender: stable-owner@vger.kernel.org To: intel-gfx@lists.freedesktop.org Cc: aaron.lu@intel.com, kamal@canonical.com, EGriffith92@gmail.com, kent.baxley@canonical.com, stable@vger.kernel.org, jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org Some machines use an external EC for controlling the backlight. Info about this is present in the VBT. Do not setup native backlight control if no PWM backlight is available or supported according to VBT. The acpi_backlight interface appears to work for the EC control. In most cases there has been no harm done, but it looks like there are machines out there that have both an EC and our PWM line connected to the same wire. This, obviously, does not end well. This should fix the regression caused by commit bc0bb9fd1c7810407ab810d204bbaecb255fddde Author: Jani Nikula Date: Thu Nov 14 12:14:29 2013 +0200 drm/i915: remove QUIRK_NO_PCH_PWM_ENABLE AFAICT the quirk removed by the above commit effectively resulted in i915 not driving the backlight PWM output, thus not messing things up. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76276 Reference: https://bugzilla.kernel.org/show_bug.cgi?id=47941 CC: Aaron Lu CC: Kamal Mostafa CC: Eric Griffith CC: Kent Baxley CC: stable@vger.kernel.org [v3.14+] Signed-off-by: Jani Nikula --- drivers/gpu/drm/i915/intel_panel.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index cb058408c70e..0eead16aeda7 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c @@ -1065,6 +1065,11 @@ int intel_panel_setup_backlight(struct drm_connector *connector) unsigned long flags; int ret; + if (!dev_priv->vbt.backlight.present) { + DRM_DEBUG_KMS("native backlight control not available per VBT\n"); + return 0; + } + /* set level and max in panel struct */ spin_lock_irqsave(&dev_priv->backlight_lock, flags); ret = dev_priv->display.setup_backlight(intel_connector); -- 1.7.9.5