Skip to content

Commit 39fbc9c

Browse files
committed
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: Kamal Mostafa <kamal@canonical.com> Tested-by: Martin <bugs@mrvanes.com> Tested-by: jrg.otte@gmail.com Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
1 parent 2ab1bc9 commit 39fbc9c

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

drivers/gpu/drm/i915/i915_drv.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,6 +1308,7 @@ struct intel_vbt_data {
13081308

13091309
struct {
13101310
u16 pwm_freq_hz;
1311+
bool present;
13111312
bool active_low_pwm;
13121313
} backlight;
13131314

drivers/gpu/drm/i915/intel_bios.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,9 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
287287
const struct bdb_lfp_backlight_data *backlight_data;
288288
const struct bdb_lfp_backlight_data_entry *entry;
289289

290+
/* Err to enabling backlight if no backlight block. */
291+
dev_priv->vbt.backlight.present = true;
292+
290293
backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
291294
if (!backlight_data)
292295
return;
@@ -299,6 +302,13 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
299302

300303
entry = &backlight_data->data[panel_type];
301304

305+
dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
306+
if (!dev_priv->vbt.backlight.present) {
307+
DRM_DEBUG_KMS("PWM backlight not present in VBT (type %u)\n",
308+
entry->type);
309+
return;
310+
}
311+
302312
dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
303313
dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
304314
DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "

drivers/gpu/drm/i915/intel_bios.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,9 @@ struct bdb_lvds_lfp_data {
374374
struct bdb_lvds_lfp_data_entry data[16];
375375
} __packed;
376376

377+
#define BDB_BACKLIGHT_TYPE_NONE 0
378+
#define BDB_BACKLIGHT_TYPE_PWM 2
379+
377380
struct bdb_lfp_backlight_data_entry {
378381
u8 type:2;
379382
u8 active_low_pwm:1;

0 commit comments

Comments
 (0)