Skip to content

Commit

Permalink
drm/i915: Parse LFP brightness control field in VBT
Browse files Browse the repository at this point in the history
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: Deepak M <m.deepak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/eee2f7b683a081f006a7df1ddad9b20fbf53c48c.1461676337.git.jani.nikula@intel.com
  • Loading branch information
Deepak M authored and Jani Nikula committed May 2, 2016
1 parent ea9d976 commit 9a41e17
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
9 changes: 9 additions & 0 deletions drivers/gpu/drm/i915/intel_bios.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
8 changes: 8 additions & 0 deletions drivers/gpu/drm/i915/intel_bios.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 6 additions & 0 deletions drivers/gpu/drm/i915/intel_vbt_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 9a41e17

Please sign in to comment.