drivers/intel/gma, soc/intel/common: improve cooperation

Instead of both featuring their own VBT loaders, use a single one.
It's the compression-enabled one from soc/intel/common, but moved to
drivers/intel/gma.

The rationale (besides making all the Kconfig fluff easier) is that
drivers/intel/gma is used in some capacity on all platforms that load a
VBT, while soc/intel/common's VBT code is for use with FSP.

BUG=b:79365806
TEST=GOOGLE_FALCO and GOOGLE_CHELL both build, exercising both affected
code paths.

Change-Id: I8d149c8b480e457a4f3e947f46d49ab45c65ccdc
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/26039
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Patrick Georgi
2018-05-03 19:15:13 +02:00
parent 60ad1a7132
commit 4a3956d7cc
5 changed files with 67 additions and 64 deletions

View File

@@ -21,48 +21,7 @@
#include <bootstate.h>
#include "vbt.h"
#define VBT_SIGNATURE 0x54425624
__weak
const char *mainboard_vbt_filename(void)
{
return "vbt.bin";
}
static char vbt_data[8 * KiB];
static int vbt_data_used;
void *locate_vbt(size_t *vbt_size)
{
uint32_t vbtsig = 0;
if (vbt_data_used == 1)
return (void *)vbt_data;
const char *filename = mainboard_vbt_filename();
size_t file_size = cbfs_boot_load_file(filename,
vbt_data, sizeof(vbt_data), CBFS_TYPE_RAW);
if (file_size == 0)
return NULL;
if (vbt_size)
*vbt_size = file_size;
memcpy(&vbtsig, vbt_data, sizeof(vbtsig));
if (vbtsig != VBT_SIGNATURE) {
printk(BIOS_ERR, "Missing/invalid signature in VBT data file!\n");
return NULL;
}
printk(BIOS_INFO, "Found a VBT of %zu bytes after decompression\n",
file_size);
vbt_data_used = 1;
return (void *)vbt_data;
}
#include <drivers/intel/gma/opregion.h>
void *vbt_get(void)
{