summaryrefslogtreecommitdiff
path: root/payloads/libpayload
diff options
context:
space:
mode:
Diffstat (limited to 'payloads/libpayload')
-rw-r--r--payloads/libpayload/arch/i386/coreboot.c21
-rw-r--r--payloads/libpayload/drivers/options.c2
-rw-r--r--payloads/libpayload/drivers/video/corebootfb.c6
3 files changed, 13 insertions, 16 deletions
diff --git a/payloads/libpayload/arch/i386/coreboot.c b/payloads/libpayload/arch/i386/coreboot.c
index 5037011efa..fc22d9a05a 100644
--- a/payloads/libpayload/arch/i386/coreboot.c
+++ b/payloads/libpayload/arch/i386/coreboot.c
@@ -78,12 +78,6 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
info->serial = ((struct cb_serial *)ptr);
}
-static void cb_parse_version(void *ptr, struct sysinfo_t *info)
-{
- struct cb_string *ver = ptr;
- info->cb_version = (char *)ver->string;
-}
-
#ifdef CONFIG_CHROMEOS
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
{
@@ -109,24 +103,27 @@ static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
{
struct cb_vdat *vdat = (struct cb_vdat *) ptr;
- info->vdat_addr = vdat->vdat_addr;
+ info->vdat_addr = phys_to_virt(vdat->vdat_addr);
info->vdat_size = vdat->vdat_size;
}
#endif
static void cb_parse_tstamp(unsigned char *ptr, struct sysinfo_t *info)
{
- info->tstamp_table = ((struct cb_cbmem_tab *)ptr)->cbmem_tab;
+ struct cb_cbmem_tab *const cbmem = (struct cb_cbmem_tab *)ptr;
+ info->tstamp_table = phys_to_virt(cbmem->cbmem_tab);
}
static void cb_parse_cbmem_cons(unsigned char *ptr, struct sysinfo_t *info)
{
- info->cbmem_cons = ((struct cb_cbmem_tab *)ptr)->cbmem_tab;
+ struct cb_cbmem_tab *const cbmem = (struct cb_cbmem_tab *)ptr;
+ info->cbmem_cons = phys_to_virt(cbmem->cbmem_tab);
}
static void cb_parse_mrc_cache(unsigned char *ptr, struct sysinfo_t *info)
{
- info->mrc_cache = ((struct cb_cbmem_tab *)ptr)->cbmem_tab;
+ struct cb_cbmem_tab *const cbmem = (struct cb_cbmem_tab *)ptr;
+ info->mrc_cache = phys_to_virt(cbmem->cbmem_tab);
}
#ifdef CONFIG_NVRAM
@@ -153,7 +150,7 @@ static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
static void cb_parse_string(unsigned char *ptr, char **info)
{
- *info = (char *)((struct cb_string *)ptr)->string;
+ *info = (char *)phys_to_virt(((struct cb_string *)ptr)->string);
}
static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
@@ -205,7 +202,7 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
cb_parse_serial(ptr, info);
break;
case CB_TAG_VERSION:
- cb_parse_version(ptr, info);
+ cb_parse_string(ptr, &info->cb_version);
break;
case CB_TAG_EXTRA_VERSION:
cb_parse_string(ptr, &info->extra_version);
diff --git a/payloads/libpayload/drivers/options.c b/payloads/libpayload/drivers/options.c
index a01f977620..d15d81be57 100644
--- a/payloads/libpayload/drivers/options.c
+++ b/payloads/libpayload/drivers/options.c
@@ -54,7 +54,7 @@ struct nvram_accessor *use_mem = &(struct nvram_accessor) {
struct cb_cmos_option_table *get_system_option_table(void)
{
- return phys_to_virt(lib_sysinfo.option_table);
+ return lib_sysinfo.option_table;
}
int options_checksum_valid(const struct nvram_accessor *nvram)
diff --git a/payloads/libpayload/drivers/video/corebootfb.c b/payloads/libpayload/drivers/video/corebootfb.c
index 0fb1740785..5672d1f375 100644
--- a/payloads/libpayload/drivers/video/corebootfb.c
+++ b/payloads/libpayload/drivers/video/corebootfb.c
@@ -63,11 +63,11 @@ static const u32 vga_colors[] = {
};
/* Addresses for the various components */
-static unsigned long fbinfo;
+static struct cb_framebuffer *fbinfo;
static unsigned long fbaddr;
static unsigned long chars;
-#define FI ((struct cb_framebuffer *) phys_to_virt(fbinfo))
+#define FI (fbinfo)
#define FB ((unsigned char *) phys_to_virt(fbaddr))
#define CHARS ((unsigned short *) phys_to_virt(chars))
@@ -233,7 +233,7 @@ static int corebootfb_init(void)
if (lib_sysinfo.framebuffer == NULL)
return -1;
- fbinfo = (unsigned long)lib_sysinfo.framebuffer;
+ fbinfo = lib_sysinfo.framebuffer;
fbaddr = FI->physical_address;