Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39fbc9c8 authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915: check VBT for supported backlight type



The only supported types are none and PWM. Other values are obsolete or
reserved, don't add them.

Tested-by: default avatarKamal Mostafa <kamal@canonical.com>
Tested-by: default avatarMartin <bugs@mrvanes.com>
Tested-by: default avatar <jrg.otte@gmail.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 2ab1bc9d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1308,6 +1308,7 @@ struct intel_vbt_data {

	struct {
		u16 pwm_freq_hz;
		bool present;
		bool active_low_pwm;
	} backlight;

+10 −0
Original line number Diff line number Diff line
@@ -287,6 +287,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;
@@ -299,6 +302,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, "
+3 −0
Original line number Diff line number Diff line
@@ -374,6 +374,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;