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

Commit 9a41e17d authored by Deepak M's avatar Deepak M Committed by Jani Nikula
Browse files

drm/i915: Parse LFP brightness control field in VBT



These fields in VBT indicates the PWM source which
is used and also the controller number.

v2 by Jani: check for out of bounds access, some renames, change default
type, etc.

v3 by Jani: s/INTEL_BACKLIGHT_CABC/INTEL_BACKLIGHT_DSI_DCS/

Signed-off-by: default avatarDeepak M <m.deepak@intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/eee2f7b683a081f006a7df1ddad9b20fbf53c48c.1461676337.git.jani.nikula@intel.com
parent ea9d9768
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1492,6 +1492,7 @@ struct intel_vbt_data {
		bool present;
		bool active_low_pwm;
		u8 min_brightness;	/* min_brightness/255 of max */
		enum intel_backlight_type type;
	} backlight;

	/* MIPI DSI */
+9 −0
Original line number Diff line number Diff line
@@ -318,6 +318,15 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
		return;
	}

	dev_priv->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI;
	if (bdb->version >= 191 &&
	    get_blocksize(backlight_data) >= sizeof(*backlight_data)) {
		const struct bdb_lfp_backlight_control_method *method;

		method = &backlight_data->backlight_control[panel_type];
		dev_priv->vbt.backlight.type = method->type;
	}

	dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
	dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
	dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
+8 −0
Original line number Diff line number Diff line
@@ -30,6 +30,14 @@
#ifndef _INTEL_BIOS_H_
#define _INTEL_BIOS_H_

enum intel_backlight_type {
	INTEL_BACKLIGHT_PMIC,
	INTEL_BACKLIGHT_LPSS,
	INTEL_BACKLIGHT_DISPLAY_DDI,
	INTEL_BACKLIGHT_DSI_DCS,
	INTEL_BACKLIGHT_PANEL_DRIVER_INTERFACE,
};

struct edp_power_seq {
	u16 t1_t3;
	u16 t8;
+6 −0
Original line number Diff line number Diff line
@@ -446,10 +446,16 @@ struct bdb_lfp_backlight_data_entry {
	u8 obsolete3;
} __packed;

struct bdb_lfp_backlight_control_method {
	u8 type:4;
	u8 controller:4;
} __packed;

struct bdb_lfp_backlight_data {
	u8 entry_size;
	struct bdb_lfp_backlight_data_entry data[16];
	u8 level[16];
	struct bdb_lfp_backlight_control_method backlight_control[16];
} __packed;

struct aimdb_header {