summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Reinecke <nr@das-labor.org>2015-10-03 17:32:38 +0200
committerAlexandru Gagniuc <mr.nuke.me@gmail.com>2015-10-04 08:01:41 +0000
commitb142b84afb2f870f68a16bac59568242ac04600f (patch)
tree1e5658ab4ec132a8406154358a592831f30c59d8
parent715a18e451a454ed5d6c3e9215802ad7b94885ee (diff)
northbridge/intel/nehalem: Fix native VGA init
Building an image for the Lenovo X201 with native graphics initialization selected fails due to the changes introduced by commit a3b898aa (edid: Clean-up the edid struct). Same as in 11738 / 11585 / 11491 Change-Id: I4233a4ce2f5423c7ebdad68e8059cd34ac61cfaa Signed-off-by: Nicolas Reinecke <nr@das-labor.org> Reviewed-on: http://review.coreboot.org/11787 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
-rw-r--r--src/northbridge/intel/nehalem/gma.c32
1 files changed, 17 insertions, 15 deletions
diff --git a/src/northbridge/intel/nehalem/gma.c b/src/northbridge/intel/nehalem/gma.c
index 609701de95..9abbdea5c9 100644
--- a/src/northbridge/intel/nehalem/gma.c
+++ b/src/northbridge/intel/nehalem/gma.c
@@ -644,6 +644,7 @@ static void intel_gma_init(const struct northbridge_intel_nehalem_config *info,
int i;
u8 edid_data[128];
struct edid edid;
+ struct edid_mode *mode;
u32 hactive, vactive, right_border, bottom_border;
int hpolarity, vpolarity;
u32 vsync, hsync, vblank, hblank, hfront_porch, vfront_porch;
@@ -703,25 +704,26 @@ static void intel_gma_init(const struct northbridge_intel_nehalem_config *info,
intel_gmbus_stop(mmio + PCH_GMBUS0);
decode_edid(edid_data,
sizeof(edid_data), &edid);
+ mode = &edid.mode;
/* Disable screen memory to prevent garbage from appearing. */
vga_sr_write(1, vga_sr_read(1) | 0x20);
hactive = edid.x_resolution;
vactive = edid.y_resolution;
- right_border = edid.hborder;
- bottom_border = edid.vborder;
- hpolarity = (edid.phsync == '-');
- vpolarity = (edid.pvsync == '-');
- vsync = edid.vspw;
- hsync = edid.hspw;
- vblank = edid.vbl;
- hblank = edid.hbl;
- hfront_porch = edid.hso;
- vfront_porch = edid.vso;
-
- target_frequency = info->gfx.lvds_dual_channel ? edid.pixel_clock
- : (2 * edid.pixel_clock);
+ right_border = mode->hborder;
+ bottom_border = mode->vborder;
+ hpolarity = (mode->phsync == '-');
+ vpolarity = (mode->pvsync == '-');
+ vsync = mode->vspw;
+ hsync = mode->hspw;
+ vblank = mode->vbl;
+ hblank = mode->hbl;
+ hfront_porch = mode->hso;
+ vfront_porch = mode->vso;
+
+ target_frequency = info->gfx.lvds_dual_channel ? mode->pixel_clock
+ : (2 * mode->pixel_clock);
vga_textmode_init();
#if IS_ENABLED(CONFIG_FRAMEBUFFER_KEEP_VESA_MODE)
vga_sr_write(1, 1);
@@ -788,8 +790,8 @@ static void intel_gma_init(const struct northbridge_intel_nehalem_config *info,
return;
}
- link_m1 = ((uint64_t)link_n1 * edid.pixel_clock) / link_frequency;
- data_m1 = ((uint64_t)data_n1 * 18 * edid.pixel_clock)
+ link_m1 = ((uint64_t)link_n1 * mode->pixel_clock) / link_frequency;
+ data_m1 = ((uint64_t)data_n1 * 18 * mode->pixel_clock)
/ (link_frequency * 8 * (info->gfx.lvds_num_lanes ? : 4));
printk(BIOS_INFO, "bringing up panel at resolution %d x %d\n",