intel/fsp1_1: Fix for passing VBT when vboot requests it

In order to support vboot requesting graphics support in normal
mode the VBT needs to be passed to FSP when it is requested
outside of the usual developer/recovery path.

To make this integrate cleaner use the generic bootmode provided
display_init_required() function instead.  Also have it print a
message indicating when it does not pass VBT to GOP so it is
easier to see what happened in the console logs.

BUG=chrome-os-partner:49560
BRANCH=glados
TEST=Enable EC_SLOW_UPDATE on chell and test that when vboot
requests graphics support in normal mode FSP will get passed VBT
and bring up the panel.

Change-Id: I07bc54d37d687134b21baa60b5c278b5041241cf
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 41efd322951b8f3a8a687944832bfd89fd3014ca
Original-Change-Id: I1b68760eabbf3af1d962cb2a3199e504a7852042
Original-Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/322782
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/13074
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Duncan Laurie 2016-01-20 13:21:32 -08:00 committed by Patrick Georgi
parent 6324de17ab
commit 1249f056c1
1 changed files with 10 additions and 15 deletions

View File

@ -14,34 +14,29 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <cbfs.h> #include <bootmode.h>
#include <console/console.h> #include <console/console.h>
#include <fsp/ramstage.h> #include <fsp/ramstage.h>
#include <fsp/util.h> #include <fsp/util.h>
#include <lib.h>
#include <string.h>
#include <vendorcode/google/chromeos/chromeos.h>
/* Locate VBT and pass it to FSP GOP */ /* Locate VBT and pass it to FSP GOP */
void load_vbt(uint8_t s3_resume, SILICON_INIT_UPD *params) void load_vbt(uint8_t s3_resume, SILICON_INIT_UPD *params)
{ {
const optionrom_vbt_t *vbt_data; const optionrom_vbt_t *vbt_data = NULL;
uint32_t vbt_len; uint32_t vbt_len;
/* Check boot mode - for S3 resume path VBT loading is not needed */ /* Check boot mode - for S3 resume path VBT loading is not needed */
if (s3_resume) { if (s3_resume) {
vbt_data = NULL;
printk(BIOS_DEBUG, "S3 resume do not pass VBT to GOP\n"); printk(BIOS_DEBUG, "S3 resume do not pass VBT to GOP\n");
} else { } else if (display_init_required()) {
if (developer_mode_enabled() || recovery_mode_enabled()) {
/* Get VBT data */ /* Get VBT data */
vbt_data = fsp_get_vbt(&vbt_len); vbt_data = fsp_get_vbt(&vbt_len);
if (vbt_data != NULL) if (vbt_data != NULL)
printk(BIOS_DEBUG, "Passing VBT to GOP\n"); printk(BIOS_DEBUG, "Passing VBT to GOP\n");
else else
printk(BIOS_DEBUG, "VBT not found!\n"); printk(BIOS_DEBUG, "VBT not found!\n");
} else } else {
vbt_data = NULL; printk(BIOS_DEBUG, "Not passing VBT to GOP\n");
} }
params->GraphicsConfigPtr = (u32)vbt_data; params->GraphicsConfigPtr = (u32)vbt_data;
} }