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

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
...@@ -1492,6 +1492,7 @@ struct intel_vbt_data { ...@@ -1492,6 +1492,7 @@ struct intel_vbt_data {
bool present; bool present;
bool active_low_pwm; bool active_low_pwm;
u8 min_brightness; /* min_brightness/255 of max */ u8 min_brightness; /* min_brightness/255 of max */
enum intel_backlight_type type;
} backlight; } backlight;
/* MIPI DSI */ /* MIPI DSI */
......
...@@ -318,6 +318,15 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, ...@@ -318,6 +318,15 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
return; 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.pwm_freq_hz = entry->pwm_freq_hz;
dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm; dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
dev_priv->vbt.backlight.min_brightness = entry->min_brightness; dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
......
...@@ -30,6 +30,14 @@ ...@@ -30,6 +30,14 @@
#ifndef _INTEL_BIOS_H_ #ifndef _INTEL_BIOS_H_
#define _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 { struct edp_power_seq {
u16 t1_t3; u16 t1_t3;
u16 t8; u16 t8;
......
...@@ -446,10 +446,16 @@ struct bdb_lfp_backlight_data_entry { ...@@ -446,10 +446,16 @@ struct bdb_lfp_backlight_data_entry {
u8 obsolete3; u8 obsolete3;
} __packed; } __packed;
struct bdb_lfp_backlight_control_method {
u8 type:4;
u8 controller:4;
} __packed;
struct bdb_lfp_backlight_data { struct bdb_lfp_backlight_data {
u8 entry_size; u8 entry_size;
struct bdb_lfp_backlight_data_entry data[16]; struct bdb_lfp_backlight_data_entry data[16];
u8 level[16]; u8 level[16];
struct bdb_lfp_backlight_control_method backlight_control[16];
} __packed; } __packed;
struct aimdb_header { struct aimdb_header {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment