On Mon, 19 Sep 2016, Jani Nikula <jani.nikula@xxxxxxxxx> wrote: > From: Shawn Lee <shawn.c.lee@xxxxxxxxx> > > Backlight enable is supposed to do a full setup of the backlight. We > were missing the PWM alternate increment bit in the south chicken > registers on lpt+ pch. This potentially caused a PWM frequency change > when the chicken register value was lost e.g. on suspend. > > v2 by Jani, rebase on the patch caching alt increment > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97486 There's a good chance this'll also fix a bug long ago deemed NOTOURBUG... Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67454 > Cc: Cooper Chiou <cooper.chiou@xxxxxxxxx> > Cc: Wei Shun Chen <wei.shun.chang@xxxxxxxxx> > Cc: Gary C Wang <gary.c.wang@xxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Shawn Lee <shawn.c.lee@xxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_panel.c | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c > index 8bc43205d6a0..be4b4d546fd9 100644 > --- a/drivers/gpu/drm/i915/intel_panel.c > +++ b/drivers/gpu/drm/i915/intel_panel.c > @@ -841,7 +841,7 @@ static void lpt_enable_backlight(struct intel_connector *connector) > { > struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > struct intel_panel *panel = &connector->panel; > - u32 pch_ctl1, pch_ctl2; > + u32 pch_ctl1, pch_ctl2, schicken; > > pch_ctl1 = I915_READ(BLC_PWM_PCH_CTL1); > if (pch_ctl1 & BLM_PCH_PWM_ENABLE) { > @@ -850,6 +850,22 @@ static void lpt_enable_backlight(struct intel_connector *connector) > I915_WRITE(BLC_PWM_PCH_CTL1, pch_ctl1); > } > > + if (HAS_PCH_LPT(dev_priv)) { > + schicken = I915_READ(SOUTH_CHICKEN2); > + if (panel->backlight.alternate_pwm_increment) > + schicken |= LPT_PWM_GRANULARITY; > + else > + schicken &= ~LPT_PWM_GRANULARITY; > + I915_WRITE(SOUTH_CHICKEN2, schicken); > + } else { > + schicken = I915_READ(SOUTH_CHICKEN1); > + if (panel->backlight.alternate_pwm_increment) > + schicken |= SPT_PWM_GRANULARITY; > + else > + schicken &= ~SPT_PWM_GRANULARITY; > + I915_WRITE(SOUTH_CHICKEN1, schicken); > + } > + > pch_ctl2 = panel->backlight.max << 16; > I915_WRITE(BLC_PWM_PCH_CTL2, pch_ctl2); -- Jani Nikula, Intel Open Source Technology Center -- 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