Message ID | 1448958232-26520-1-git-send-email-jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On ti, 2015-12-01 at 10:23 +0200, Jani Nikula wrote: > The only missing piece is the function to convert frequency to PWM > register value. The PWM is based on 19.2 MHz clock, except for BXT A > step, which is based on CDCLK, and which we ignore. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> On patch 1 and 2: Reviewed-by: Imre Deak <imre.deak@intel.com> For patch 3 we need an another reviewer. I also tested all three patches and they fix the backlight on BXT, before it was practically unusable: there was either no backlight at all or the backlight was flashing rapidly depending on the current backlight level. > --- > drivers/gpu/drm/i915/intel_panel.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_panel.c > b/drivers/gpu/drm/i915/intel_panel.c > index a24df35e11e7..2d1696386b0d 100644 > --- a/drivers/gpu/drm/i915/intel_panel.c > +++ b/drivers/gpu/drm/i915/intel_panel.c > @@ -1264,6 +1264,14 @@ static void > intel_backlight_device_unregister(struct intel_connector *connector) > #endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */ > > /* > + * BXT: PWM clock frequency = 19.2 MHz. > + */ > +static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 > pwm_freq_hz) > +{ > + return KHz(19200) / pwm_freq_hz; > +} > + > +/* > * SPT: This value represents the period of the PWM stream in clock > periods > * multiplied by 16 (default increment) or 128 (alternate increment > selected in > * SCHICKEN_1 bit 0). PWM clock is 24 MHz. > @@ -1750,6 +1758,7 @@ intel_panel_init_backlight_funcs(struct > intel_panel *panel) > panel->backlight.disable = bxt_disable_backlight; > panel->backlight.set = bxt_set_backlight; > panel->backlight.get = bxt_get_backlight; > + panel->backlight.hz_to_pwm = bxt_hz_to_pwm; > } else if (HAS_PCH_LPT(dev) || HAS_PCH_SPT(dev)) { > panel->backlight.setup = lpt_setup_backlight; > panel->backlight.enable = lpt_enable_backlight;
On Tue, 01 Dec 2015, Imre Deak <imre.deak@intel.com> wrote: > On ti, 2015-12-01 at 10:23 +0200, Jani Nikula wrote: >> The only missing piece is the function to convert frequency to PWM >> register value. The PWM is based on 19.2 MHz clock, except for BXT A >> step, which is based on CDCLK, and which we ignore. >> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com> > > On patch 1 and 2: > Reviewed-by: Imre Deak <imre.deak@intel.com> > > For patch 3 we need an another reviewer. > > I also tested all three patches and they fix the backlight on BXT, > before it was practically unusable: there was either no backlight at > all or the backlight was flashing rapidly depending on the current > backlight level. Pushed all three to drm-intel-next-queued, thanks for the reviews, and patch 3. BR, Jani. > >> --- >> drivers/gpu/drm/i915/intel_panel.c | 9 +++++++++ >> 1 file changed, 9 insertions(+) >> >> diff --git a/drivers/gpu/drm/i915/intel_panel.c >> b/drivers/gpu/drm/i915/intel_panel.c >> index a24df35e11e7..2d1696386b0d 100644 >> --- a/drivers/gpu/drm/i915/intel_panel.c >> +++ b/drivers/gpu/drm/i915/intel_panel.c >> @@ -1264,6 +1264,14 @@ static void >> intel_backlight_device_unregister(struct intel_connector *connector) >> #endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */ >> >> /* >> + * BXT: PWM clock frequency = 19.2 MHz. >> + */ >> +static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 >> pwm_freq_hz) >> +{ >> + return KHz(19200) / pwm_freq_hz; >> +} >> + >> +/* >> * SPT: This value represents the period of the PWM stream in clock >> periods >> * multiplied by 16 (default increment) or 128 (alternate increment >> selected in >> * SCHICKEN_1 bit 0). PWM clock is 24 MHz. >> @@ -1750,6 +1758,7 @@ intel_panel_init_backlight_funcs(struct >> intel_panel *panel) >> panel->backlight.disable = bxt_disable_backlight; >> panel->backlight.set = bxt_set_backlight; >> panel->backlight.get = bxt_get_backlight; >> + panel->backlight.hz_to_pwm = bxt_hz_to_pwm; >> } else if (HAS_PCH_LPT(dev) || HAS_PCH_SPT(dev)) { >> panel->backlight.setup = lpt_setup_backlight; >> panel->backlight.enable = lpt_enable_backlight;
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index a24df35e11e7..2d1696386b0d 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c @@ -1264,6 +1264,14 @@ static void intel_backlight_device_unregister(struct intel_connector *connector) #endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */ /* + * BXT: PWM clock frequency = 19.2 MHz. + */ +static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) +{ + return KHz(19200) / pwm_freq_hz; +} + +/* * SPT: This value represents the period of the PWM stream in clock periods * multiplied by 16 (default increment) or 128 (alternate increment selected in * SCHICKEN_1 bit 0). PWM clock is 24 MHz. @@ -1750,6 +1758,7 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel) panel->backlight.disable = bxt_disable_backlight; panel->backlight.set = bxt_set_backlight; panel->backlight.get = bxt_get_backlight; + panel->backlight.hz_to_pwm = bxt_hz_to_pwm; } else if (HAS_PCH_LPT(dev) || HAS_PCH_SPT(dev)) { panel->backlight.setup = lpt_setup_backlight; panel->backlight.enable = lpt_enable_backlight;
The only missing piece is the function to convert frequency to PWM register value. The PWM is based on 19.2 MHz clock, except for BXT A step, which is based on CDCLK, and which we ignore. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/intel_panel.c | 9 +++++++++ 1 file changed, 9 insertions(+)