Message ID | 1397039735-2561-1-git-send-email-jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Apr 09, 2014 at 01:35:34PM +0300, Jani Nikula wrote: > The only supported types are none and PWM. Other values are obsolete or > reserved, don't add them. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/intel_bios.c | 10 ++++++++++ > drivers/gpu/drm/i915/intel_bios.h | 3 +++ > 3 files changed, 14 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 55addaaa8222..03f4c866bf3e 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -1154,6 +1154,7 @@ struct intel_vbt_data { > struct edp_power_seq edp_pps; > > struct { > + bool present; > u16 pwm_freq_hz; > bool active_low_pwm; Could pack the bools next to each other. Otherwise the series looks good. Obviously I can't tell whether the VBT can be trusted on this, but at least the code matches the spec I have. So for the series: Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > } backlight; > diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c > index 9b986775c4b0..862ca04f7a44 100644 > --- a/drivers/gpu/drm/i915/intel_bios.c > +++ b/drivers/gpu/drm/i915/intel_bios.c > @@ -309,6 +309,9 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb) > const struct bdb_lfp_backlight_data *backlight_data; > const struct bdb_lfp_backlight_data_entry *entry; > > + /* Err to enabling backlight if no backlight block. */ > + dev_priv->vbt.backlight.present = true; > + > backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT); > if (!backlight_data) > return; > @@ -321,6 +324,13 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb) > > entry = &backlight_data->data[panel_type]; > > + dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM; > + if (!dev_priv->vbt.backlight.present) { > + DRM_DEBUG_KMS("PWM backlight not present in VBT (type %u)\n", > + entry->type); > + return; > + } > + > dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; > dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm; > DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, " > diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h > index d02e5f93c362..036a79922391 100644 > --- a/drivers/gpu/drm/i915/intel_bios.h > +++ b/drivers/gpu/drm/i915/intel_bios.h > @@ -389,6 +389,9 @@ struct bdb_lvds_lfp_data { > struct bdb_lvds_lfp_data_entry data[16]; > } __packed; > > +#define BDB_BACKLIGHT_TYPE_NONE 0 > +#define BDB_BACKLIGHT_TYPE_PWM 2 > + > struct bdb_lfp_backlight_data_entry { > u8 type:2; > u8 active_low_pwm:1; > -- > 1.7.9.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 55addaaa8222..03f4c866bf3e 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1154,6 +1154,7 @@ struct intel_vbt_data { struct edp_power_seq edp_pps; struct { + bool present; u16 pwm_freq_hz; bool active_low_pwm; } backlight; diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index 9b986775c4b0..862ca04f7a44 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c @@ -309,6 +309,9 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb) const struct bdb_lfp_backlight_data *backlight_data; const struct bdb_lfp_backlight_data_entry *entry; + /* Err to enabling backlight if no backlight block. */ + dev_priv->vbt.backlight.present = true; + backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT); if (!backlight_data) return; @@ -321,6 +324,13 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb) entry = &backlight_data->data[panel_type]; + dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM; + if (!dev_priv->vbt.backlight.present) { + DRM_DEBUG_KMS("PWM backlight not present in VBT (type %u)\n", + entry->type); + return; + } + dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm; DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, " diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h index d02e5f93c362..036a79922391 100644 --- a/drivers/gpu/drm/i915/intel_bios.h +++ b/drivers/gpu/drm/i915/intel_bios.h @@ -389,6 +389,9 @@ struct bdb_lvds_lfp_data { struct bdb_lvds_lfp_data_entry data[16]; } __packed; +#define BDB_BACKLIGHT_TYPE_NONE 0 +#define BDB_BACKLIGHT_TYPE_PWM 2 + struct bdb_lfp_backlight_data_entry { u8 type:2; u8 active_low_pwm:1;
The only supported types are none and PWM. Other values are obsolete or reserved, don't add them. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/i915_drv.h | 1 + drivers/gpu/drm/i915/intel_bios.c | 10 ++++++++++ drivers/gpu/drm/i915/intel_bios.h | 3 +++ 3 files changed, 14 insertions(+)