Message ID | D42A2A322A1FCA4089E30E9A9BA36AC60C214F4A@PGSMSX102.gar.corp.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, 19 Sep 2016, "Lee, Shawn C" <shawn.c.lee@intel.com> wrote: > PWM was enabled in bios. i915 driver will save max duty to panel->backlight.max. > So *_hz_to_pwm will not be called if backlight.max not zero. And what difference does it make? BR, Jani. > > pch_ctl2 = I915_READ(BLC_PWM_PCH_CTL2); > panel->backlight.max = pch_ctl2 >> 16; > > if (!panel->backlight.max) > panel->backlight.max = get_backlight_max_vbt(connector); > > -----Original Message----- > From: Nikula, Jani > Sent: Monday, September 19, 2016 4:24 PM > To: intel-gfx@lists.freedesktop.org > Cc: Nikula, Jani <jani.nikula@intel.com>; Lee, Shawn C <shawn.c.lee@intel.com> > Subject: [PATCH v2 1/2] drm/i915/backlight: setup and cache pwm alternate increment value > > This will also be needed later on when setting up the alternate increment in backlight enable. > > Cc: Shawn Lee <shawn.c.lee@intel.com> > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/intel_drv.h | 1 + > drivers/gpu/drm/i915/intel_panel.c | 14 +++++++++++--- > 2 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index 8fd16adf069b..c3e65e515c9d 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -263,6 +263,7 @@ struct intel_panel { > bool enabled; > bool combination_mode; /* gen 2/4 only */ > bool active_low_pwm; > + bool alternate_pwm_increment; /* lpt+ */ > > /* PWM chip */ > bool util_pin_active_low; /* bxt+ */ > diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c > index c10e9b0405e8..8bc43205d6a0 100644 > --- a/drivers/gpu/drm/i915/intel_panel.c > +++ b/drivers/gpu/drm/i915/intel_panel.c > @@ -1242,10 +1242,10 @@ static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) > */ > static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) { > - struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > + struct intel_panel *panel = &connector->panel; > u32 mul; > > - if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY) > + if (panel->backlight.alternate_pwm_increment) > mul = 128; > else > mul = 16; > @@ -1261,9 +1261,10 @@ static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) { > struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > + struct intel_panel *panel = &connector->panel; > u32 mul, clock; > > - if (I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY) > + if (panel->backlight.alternate_pwm_increment) > mul = 16; > else > mul = 128; > @@ -1414,6 +1415,13 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus > struct drm_i915_private *dev_priv = to_i915(connector->base.dev); > struct intel_panel *panel = &connector->panel; > u32 pch_ctl1, pch_ctl2, val; > + bool alt; > + > + if (HAS_PCH_LPT(dev_priv)) > + alt = I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY; > + else > + alt = I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY; > + panel->backlight.alternate_pwm_increment = alt; > > pch_ctl1 = I915_READ(BLC_PWM_PCH_CTL1); > panel->backlight.active_low_pwm = pch_ctl1 & BLM_PCH_POLARITY; > -- > 2.1.4 >
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index 8fd16adf069b..c3e65e515c9d 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h @@ -263,6 +263,7 @@ struct intel_panel { bool enabled; bool combination_mode; /* gen 2/4 only */ bool active_low_pwm; + bool alternate_pwm_increment; /* lpt+ */ /* PWM chip */ bool util_pin_active_low; /* bxt+ */ diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index c10e9b0405e8..8bc43205d6a0 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c @@ -1242,10 +1242,10 @@ static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) */ static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) { - struct drm_i915_private *dev_priv = to_i915(connector->base.dev); + struct intel_panel *panel = &connector->panel; u32 mul; - if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY) + if (panel->backlight.alternate_pwm_increment) mul = 128; else mul = 16; @@ -1261,9 +1261,10 @@ static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) {