Kamal Mostafa <kamal@xxxxxxxxxxxxx> writes: > Hi Luis- > > Please consider this backport for 3.5.y-stable. Thanks, > > -Kamal Thanks Kamal, I'll queue it for the 3.5 kernel. The reason I had dropped it initially was that it was tagged to stable v3.8+. Cheers, -- Luis > > ---------- >8 ---------- > commit e85843bec6c2ea7c10ec61238396891cc2b753a9 upstream. > > BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=47941 > BugLink: https://bugs.launchpad.net/bugs/1163720 > BugLink: https://bugs.launchpad.net/bugs/1162026 > > Some machines suffer from non-functional backlight controls if > BLM_PCH_PWM_ENABLE is set, so provide a quirk to avoid doing so. > Apply this quirk to Dell XPS 13 models. > > Tested-by: Eric Griffith <EGriffith92@xxxxxxxxx> > Tested-by: Kent Baxley <kent.baxley@xxxxxxxxxxxxx> > Signed-off-by: Kamal Mostafa <kamal@xxxxxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > [ kamal: backport to 3.5 ] > --- > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/intel_display.c | 16 ++++++++++++++++ > drivers/gpu/drm/i915/intel_lvds.c | 3 ++- > 3 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index d85db22..bb95eda 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -329,6 +329,7 @@ enum intel_pch { > #define QUIRK_PIPEA_FORCE (1<<0) > #define QUIRK_LVDS_SSC_DISABLE (1<<1) > #define QUIRK_INVERT_BRIGHTNESS (1<<2) > +#define QUIRK_NO_PCH_PWM_ENABLE (1<<3) > > struct intel_fbdev; > struct intel_fbc_work; > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index 290d89d..05f75ff 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -6874,6 +6874,17 @@ static void quirk_invert_brightness(struct drm_device *dev) > DRM_INFO("applying inverted panel brightness quirk\n"); > } > > +/* > + * Some machines (Dell XPS13) suffer broken backlight controls if > + * BLM_PCH_PWM_ENABLE is set. > + */ > +static void quirk_no_pcm_pwm_enable(struct drm_device *dev) > +{ > + struct drm_i915_private *dev_priv = dev->dev_private; > + dev_priv->quirks |= QUIRK_NO_PCH_PWM_ENABLE; > + DRM_INFO("applying no-PCH_PWM_ENABLE quirk\n"); > +} > + > struct intel_quirk { > int device; > int subsystem_vendor; > @@ -6949,6 +6960,11 @@ static struct intel_quirk intel_quirks[] = { > > /* Acer/Packard Bell NCL20 */ > { 0x2a42, 0x1025, 0x034b, quirk_invert_brightness }, > + > + /* Dell XPS13 HD Sandy Bridge */ > + { 0x0116, 0x1028, 0x052e, quirk_no_pcm_pwm_enable }, > + /* Dell XPS13 HD and XPS13 FHD Ivy Bridge */ > + { 0x0166, 0x1028, 0x058b, quirk_no_pcm_pwm_enable }, > }; > > static void intel_init_quirks(struct drm_device *dev) > diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c > index d18c49a..440ed88 100644 > --- a/drivers/gpu/drm/i915/intel_lvds.c > +++ b/drivers/gpu/drm/i915/intel_lvds.c > @@ -1097,7 +1097,8 @@ bool intel_lvds_init(struct drm_device *dev) > goto failed; > > out: > - if (HAS_PCH_SPLIT(dev)) { > + if (HAS_PCH_SPLIT(dev) && > + !(dev_priv->quirks & QUIRK_NO_PCH_PWM_ENABLE)) { > u32 pwm; > > pipe = (I915_READ(PCH_LVDS) & LVDS_PIPEB_SELECT) ? 1 : 0; -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html