aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/broadwell/igd.c
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2014-10-09 16:13:24 -0700
committerStefan Reinauer <stefan.reinauer@coreboot.org>2015-04-13 20:25:03 +0200
commit49efaf260f2289322110dcf21900146046439d37 (patch)
tree7a755a43985ad59c0c23b3f92868f22bc4e4e07e /src/soc/intel/broadwell/igd.c
parent8d978a88e6ccfa809879667de4098068be8efb5c (diff)
broadwell: Work around VBIOS framebuffer issue
The first 64 bytes of the framebuffer contain garbage after running the option rom and after calling the VBE mode set with the flag to clear the framebuffer. Work around this issue by clearing the first 64 bytes in the framebuffer in the broadwell graphics setup code after it executes the VBIOS. BUG=chrome-os-partner:32771 BRANCH=samus,auron TEST=build and boot on samus in dev mode, check for graphical corruption Change-Id: I0381e32a5ea17e13c4ed598835999c12136418cf Signed-off-by: Stefan Reinauer <reinauer@chromium.org> Original-Commit-Id: f29c1b0b7c100cf290f82de671042823032f71c9 Original-Change-Id: I072bc913f7daea16e4861a7549e1b4ec85cde4cd Original-Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/222676 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/9464 Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones <marc.jones@se-eng.com>
Diffstat (limited to 'src/soc/intel/broadwell/igd.c')
-rw-r--r--src/soc/intel/broadwell/igd.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/soc/intel/broadwell/igd.c b/src/soc/intel/broadwell/igd.c
index 38189ddeeb..4257ff3cf7 100644
--- a/src/soc/intel/broadwell/igd.c
+++ b/src/soc/intel/broadwell/igd.c
@@ -530,6 +530,15 @@ static void igd_init(struct device *dev)
reg_script_run_on_dev(dev, haswell_late_init_script);
}
+ if (gfx_get_init_done()) {
+ /*
+ * Work around VBIOS issue that is not clearing first 64
+ * bytes of the framebuffer during VBE mode set.
+ */
+ struct resource *fb = find_resource(dev, PCI_BASE_ADDRESS_2);
+ memset((void *)((u32)fb->base), 0, 64);
+ }
+
if (!gfx_get_init_done() && acpi_slp_type != 3) {
/*
* Enable DDI-A if the Option ROM did not execute: