From c9b7af69b57a18be0cfe5cea25deed2562695fff Mon Sep 17 00:00:00 2001 From: Zhenyu Wang Date: Fri, 10 Jul 2009 14:39:59 +0800 Subject: [PATCH] --- yaml --- r: 155271 b: refs/heads/master c: 5019914ca3b7517b2d82db2e92e3f683ac48e535 h: refs/heads/master i: 155269: 385e416413e7973ab2a549e2a64c917b2d25f51c 155267: 9bffd21ca4887d1194d0718ae96593ac76099196 155263: 3da52288f5954d79c4d4329cfb7c40b2d05f9ec0 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/intel_bios.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 24db78ff8694..cf34e25a6b2f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d05ca301997c94c2ef3c112b15319d13fa8cddab +refs/heads/master: 5019914ca3b7517b2d82db2e92e3f683ac48e535 diff --git a/trunk/drivers/gpu/drm/i915/intel_bios.c b/trunk/drivers/gpu/drm/i915/intel_bios.c index da22863c05c0..7cc447191028 100644 --- a/trunk/drivers/gpu/drm/i915/intel_bios.c +++ b/trunk/drivers/gpu/drm/i915/intel_bios.c @@ -97,6 +97,7 @@ static void parse_lfp_panel_data(struct drm_i915_private *dev_priv, struct bdb_header *bdb) { + struct drm_device *dev = dev_priv->dev; struct bdb_lvds_options *lvds_options; struct bdb_lvds_lfp_data *lvds_lfp_data; struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; @@ -132,7 +133,14 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv, entry = (struct bdb_lvds_lfp_data_entry *) ((uint8_t *)lvds_lfp_data->data + (lfp_data_size * lvds_options->panel_type)); - dvo_timing = &entry->dvo_timing; + + /* On IGDNG mobile, LVDS data block removes panel fitting registers. + So dec 2 dword from dvo_timing offset */ + if (IS_IGDNG(dev)) + dvo_timing = (struct lvds_dvo_timing *) + ((u8 *)&entry->dvo_timing - 8); + else + dvo_timing = &entry->dvo_timing; panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);