Sorry, this is the wrong patch, please disregard. On Tue, Nov 1, 2011 at 6:58 PM, Simon Que <s...@chromium.org> wrote:
> Use 0x1000 as the default backlight PWM max value and period. This is > passed in as a module parameter to i915_drv and is used to program the > PWM registers. It can be set to other values based on the needs of each > system. > > Signed-off-by: Simon Que <s...@chromium.org> > --- > drivers/gpu/drm/i915/i915_reg.h | 1 + > drivers/gpu/drm/i915/intel_panel.c | 29 +++++++++++++++++------------ > 2 files changed, 18 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h > b/drivers/gpu/drm/i915/i915_reg.h > index 5d5def7..a832028 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -3275,6 +3275,7 @@ > #define PWM_POLARITY_ACTIVE_HIGH2 (0 << 28) > > #define BLC_PWM_PCH_CTL2 0xc8254 > +#define BLC_PWM_PCH_FREQ_SHIFT 16 > > #define PCH_PP_STATUS 0xc7200 > #define PCH_PP_CONTROL 0xc7204 > diff --git a/drivers/gpu/drm/i915/intel_panel.c > b/drivers/gpu/drm/i915/intel_panel.c > index 05f500c..b5d2244 100644 > --- a/drivers/gpu/drm/i915/intel_panel.c > +++ b/drivers/gpu/drm/i915/intel_panel.c > @@ -133,27 +133,32 @@ static u32 i915_read_blc_pwm_ctl(struct > drm_i915_private *dev_priv) > { > u32 val; > > - /* Restore the CTL value if it lost, e.g. GPU reset */ > - > + /* Restore the CTL value if it was lost, e.g. GPU reset */ > + /* Use the default PWM max if none is available. */ > if (HAS_PCH_SPLIT(dev_priv->dev)) { > val = I915_READ(BLC_PWM_PCH_CTL2); > - if (dev_priv->saveBLC_PWM_CTL2 == 0) { > + if (dev_priv->saveBLC_PWM_CTL2 == 0 && val == 0) > + dev_priv->saveBLC_PWM_CTL2 = > + i915_max_backlight << > BLC_PWM_PCH_FREQ_SHIFT; > + else if (dev_priv->saveBLC_PWM_CTL2 == 0) > dev_priv->saveBLC_PWM_CTL2 = val; > - } else if (val == 0) { > + if (val == 0) { > I915_WRITE(BLC_PWM_PCH_CTL2, > - dev_priv->saveBLC_PWM_CTL); > - val = dev_priv->saveBLC_PWM_CTL; > + dev_priv->saveBLC_PWM_CTL2); > + val = dev_priv->saveBLC_PWM_CTL2; > } > } else { > val = I915_READ(BLC_PWM_CTL); > - if (dev_priv->saveBLC_PWM_CTL == 0) { > + if (dev_priv->saveBLC_PWM_CTL == 0 && val == 0) { > + dev_priv->saveBLC_PWM_CTL = i915_max_backlight > + << BACKLIGHT_MODULATION_FREQ_SHIFT; > + } else if (dev_priv->saveBLC_PWM_CTL == 0) { > dev_priv->saveBLC_PWM_CTL = val; > dev_priv->saveBLC_PWM_CTL2 = > I915_READ(BLC_PWM_CTL2); > - } else if (val == 0) { > - I915_WRITE(BLC_PWM_CTL, > - dev_priv->saveBLC_PWM_CTL); > - I915_WRITE(BLC_PWM_CTL2, > - dev_priv->saveBLC_PWM_CTL2); > + } > + if (val == 0) { > + I915_WRITE(BLC_PWM_CTL, dev_priv->saveBLC_PWM_CTL); > + I915_WRITE(BLC_PWM_CTL2, > dev_priv->saveBLC_PWM_CTL2); > val = dev_priv->saveBLC_PWM_CTL; > } > } > -- > 1.7.2.3 > >
_______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx