coreboot_tables: reduce redundant data structures
There are three coreboot table tags that all define some kind of memory region, and each has their own homologous struct. I'm about to add a fourth so I'll just clean this up and turn it into a generic struct lb_range instead. Change-Id: Id148b2737d442e0636d2c05e74efa1fdf844a0d3 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/167154 (cherry picked from commit 22d82ffa3f5500fbc1b785e343add25e61f4f194) Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com> Reviewed-on: http://review.coreboot.org/6456 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
parent
579538b5c7
commit
1f5487a7c0
|
@ -81,10 +81,10 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
|
||||||
#ifdef CONFIG_LP_CHROMEOS
|
#ifdef CONFIG_LP_CHROMEOS
|
||||||
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
|
struct lb_range *vbnv = (struct lb_range *)ptr;
|
||||||
|
|
||||||
info->vbnv_start = vbnv->vbnv_start;
|
info->vbnv_start = vbnv->range_start;
|
||||||
info->vbnv_size = vbnv->vbnv_size;
|
info->vbnv_size = vbnv->range_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
|
@ -101,10 +101,10 @@ static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
|
|
||||||
static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
struct cb_vdat *vdat = (struct cb_vdat *) ptr;
|
struct lb_range *vdat = (struct lb_range *)ptr;
|
||||||
|
|
||||||
info->vdat_addr = phys_to_virt(vdat->vdat_addr);
|
info->vdat_addr = phys_to_virt(vdat->range_start);
|
||||||
info->vdat_size = vdat->vdat_size;
|
info->vdat_size = vdat->range_size;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -82,18 +82,18 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
|
||||||
#ifdef CONFIG_LP_CHROMEOS
|
#ifdef CONFIG_LP_CHROMEOS
|
||||||
static void cb_parse_vboot_handoff(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_vboot_handoff(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
struct cb_vboot_handoff *vbho = (struct cb_vboot_handoff *)ptr;
|
struct lb_range *vbho = (struct lb_range *)ptr;
|
||||||
|
|
||||||
info->vboot_handoff = (void *)(uintptr_t)vbho->vboot_handoff_addr;
|
info->vboot_handoff = (void *)(uintptr_t)vbho->range_start;
|
||||||
info->vboot_handoff_size = vbho->vboot_handoff_size;
|
info->vboot_handoff_size = vbho->range_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
|
struct lb_range *vbnv = (struct lb_range *)ptr;
|
||||||
|
|
||||||
info->vbnv_start = vbnv->vbnv_start;
|
info->vbnv_start = vbnv->range_start;
|
||||||
info->vbnv_size = vbnv->vbnv_size;
|
info->vbnv_size = vbnv->range_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
|
@ -110,10 +110,10 @@ static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
|
|
||||||
static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_vdat(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
struct cb_vdat *vdat = (struct cb_vdat *) ptr;
|
struct lb_range *vdat = (struct lb_range *) ptr;
|
||||||
|
|
||||||
info->vdat_addr = phys_to_virt(vdat->vdat_addr);
|
info->vdat_addr = phys_to_virt(vdat->range_start);
|
||||||
info->vdat_size = vdat->vdat_size;
|
info->vdat_size = vdat->range_size;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -184,12 +184,14 @@ struct cb_gpios {
|
||||||
struct cb_gpio gpios[0];
|
struct cb_gpio gpios[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CB_TAG_VDAT 0x0015
|
#define CB_TAG_VDAT 0x0015
|
||||||
struct cb_vdat {
|
#define CB_TAG_VBNV 0x0019
|
||||||
|
#define CB_TAG_VBOOT_HANDOFF 0x0020
|
||||||
|
struct lb_range {
|
||||||
uint32_t tag;
|
uint32_t tag;
|
||||||
uint32_t size; /* size of the entire entry */
|
uint32_t size;
|
||||||
uint64_t vdat_addr;
|
uint64_t range_start;
|
||||||
uint32_t vdat_size;
|
uint32_t range_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CB_TAG_TIMESTAMPS 0x0016
|
#define CB_TAG_TIMESTAMPS 0x0016
|
||||||
|
@ -202,22 +204,6 @@ struct cb_cbmem_tab {
|
||||||
uint64_t cbmem_tab;
|
uint64_t cbmem_tab;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CB_TAG_VBNV 0x0019
|
|
||||||
struct cb_vbnv {
|
|
||||||
uint32_t tag;
|
|
||||||
uint32_t size;
|
|
||||||
uint32_t vbnv_start;
|
|
||||||
uint32_t vbnv_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define CB_TAG_VBOOT_HANDOFF 0x0020
|
|
||||||
struct cb_vboot_handoff {
|
|
||||||
uint32_t tag;
|
|
||||||
uint32_t size;
|
|
||||||
uint64_t vboot_handoff_addr;
|
|
||||||
uint32_t vboot_handoff_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define CB_TAG_X86_ROM_MTRR 0x0021
|
#define CB_TAG_X86_ROM_MTRR 0x0021
|
||||||
struct cb_x86_rom_mtrr {
|
struct cb_x86_rom_mtrr {
|
||||||
uint32_t tag;
|
uint32_t tag;
|
||||||
|
|
|
@ -215,13 +215,15 @@ struct lb_gpios {
|
||||||
struct lb_gpio gpios[0];
|
struct lb_gpio gpios[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LB_TAG_VDAT 0x0015
|
#define LB_TAG_VDAT 0x0015
|
||||||
struct lb_vdat {
|
#define LB_TAG_VBNV 0x0019
|
||||||
|
#define LB_TAB_VBOOT_HANDOFF 0x0020
|
||||||
|
struct lb_range {
|
||||||
uint32_t tag;
|
uint32_t tag;
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
|
|
||||||
uint64_t vdat_addr;
|
uint64_t range_start;
|
||||||
uint32_t vdat_size;
|
uint32_t range_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LB_TAG_TIMESTAMPS 0x0016
|
#define LB_TAG_TIMESTAMPS 0x0016
|
||||||
|
@ -235,24 +237,6 @@ struct lb_cbmem_ref {
|
||||||
uint64_t cbmem_addr;
|
uint64_t cbmem_addr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LB_TAG_VBNV 0x0019
|
|
||||||
struct lb_vbnv {
|
|
||||||
uint32_t tag;
|
|
||||||
uint32_t size;
|
|
||||||
|
|
||||||
uint32_t vbnv_start;
|
|
||||||
uint32_t vbnv_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define LB_TAB_VBOOT_HANDOFF 0x0020
|
|
||||||
struct lb_vboot_handoff {
|
|
||||||
uint32_t tag;
|
|
||||||
uint32_t size;
|
|
||||||
|
|
||||||
uint64_t vboot_handoff_addr;
|
|
||||||
uint32_t vboot_handoff_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define LB_TAG_X86_ROM_MTRR 0x0021
|
#define LB_TAG_X86_ROM_MTRR 0x0021
|
||||||
struct lb_x86_rom_mtrr {
|
struct lb_x86_rom_mtrr {
|
||||||
uint32_t tag;
|
uint32_t tag;
|
||||||
|
|
|
@ -169,25 +169,25 @@ static void lb_gpios(struct lb_header *header)
|
||||||
static void lb_vdat(struct lb_header *header)
|
static void lb_vdat(struct lb_header *header)
|
||||||
{
|
{
|
||||||
#if CONFIG_GENERATE_ACPI_TABLES
|
#if CONFIG_GENERATE_ACPI_TABLES
|
||||||
struct lb_vdat* vdat;
|
struct lb_range *vdat;
|
||||||
|
|
||||||
vdat = (struct lb_vdat *)lb_new_record(header);
|
vdat = (struct lb_range *)lb_new_record(header);
|
||||||
vdat->tag = LB_TAG_VDAT;
|
vdat->tag = LB_TAG_VDAT;
|
||||||
vdat->size = sizeof(*vdat);
|
vdat->size = sizeof(*vdat);
|
||||||
acpi_get_vdat_info(&vdat->vdat_addr, &vdat->vdat_size);
|
acpi_get_vdat_info(&vdat->range_start, &vdat->range_size);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lb_vbnv(struct lb_header *header)
|
static void lb_vbnv(struct lb_header *header)
|
||||||
{
|
{
|
||||||
#if CONFIG_PC80_SYSTEM
|
#if CONFIG_PC80_SYSTEM
|
||||||
struct lb_vbnv* vbnv;
|
struct lb_range *vbnv;
|
||||||
|
|
||||||
vbnv = (struct lb_vbnv *)lb_new_record(header);
|
vbnv = (struct lb_range *)lb_new_record(header);
|
||||||
vbnv->tag = LB_TAG_VBNV;
|
vbnv->tag = LB_TAG_VBNV;
|
||||||
vbnv->size = sizeof(*vbnv);
|
vbnv->size = sizeof(*vbnv);
|
||||||
vbnv->vbnv_start = CONFIG_VBNV_OFFSET + 14;
|
vbnv->range_start = CONFIG_VBNV_OFFSET + 14;
|
||||||
vbnv->vbnv_size = CONFIG_VBNV_SIZE;
|
vbnv->range_size = CONFIG_VBNV_SIZE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,16 +196,16 @@ static void lb_vboot_handoff(struct lb_header *header)
|
||||||
{
|
{
|
||||||
void *addr;
|
void *addr;
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
struct lb_vboot_handoff* vbho;
|
struct lb_range *vbho;
|
||||||
|
|
||||||
if (vboot_get_handoff_info(&addr, &size))
|
if (vboot_get_handoff_info(&addr, &size))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vbho = (struct lb_vboot_handoff *)lb_new_record(header);
|
vbho = (struct lb_range *)lb_new_record(header);
|
||||||
vbho->tag = LB_TAB_VBOOT_HANDOFF;
|
vbho->tag = LB_TAB_VBOOT_HANDOFF;
|
||||||
vbho->size = sizeof(*vbho);
|
vbho->size = sizeof(*vbho);
|
||||||
vbho->vboot_handoff_addr = (intptr_t)addr;
|
vbho->range_start = (intptr_t)addr;
|
||||||
vbho->vboot_handoff_size = size;
|
vbho->range_size = size;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline void lb_vboot_handoff(struct lb_header *header) {}
|
static inline void lb_vboot_handoff(struct lb_header *header) {}
|
||||||
|
|
Loading…
Reference in New Issue