intel/fsp2_0: Add soc_validate_fsp_version for FSP version check
Only need to check this once so check it at romstage where the console is usually ready. Also define union fsp_revision to avoid code duplication. Change-Id: I628014e05bd567462f50af2633fbf48f3dc412bc Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/47559 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Marc Jones <marc@marcjonesconsulting.com> Reviewed-by: Jonathan Zhang <jonzhang@fb.com>
This commit is contained in:
parent
982f64d1b7
commit
5b47d77047
|
@ -5,15 +5,7 @@
|
||||||
|
|
||||||
void fsp_print_header_info(const struct fsp_header *hdr)
|
void fsp_print_header_info(const struct fsp_header *hdr)
|
||||||
{
|
{
|
||||||
union {
|
union fsp_revision revision;
|
||||||
uint32_t val;
|
|
||||||
struct {
|
|
||||||
uint8_t bld_num;
|
|
||||||
uint8_t revision;
|
|
||||||
uint8_t minor;
|
|
||||||
uint8_t major;
|
|
||||||
} rev;
|
|
||||||
} revision;
|
|
||||||
|
|
||||||
revision.val = hdr->fsp_revision;
|
revision.val = hdr->fsp_revision;
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,16 @@ struct hob_resource {
|
||||||
uint64_t length;
|
uint64_t length;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
union fsp_revision {
|
||||||
|
uint32_t val;
|
||||||
|
struct {
|
||||||
|
uint8_t bld_num;
|
||||||
|
uint8_t revision;
|
||||||
|
uint8_t minor;
|
||||||
|
uint8_t major;
|
||||||
|
} rev;
|
||||||
|
};
|
||||||
|
|
||||||
#if CONFIG_UDK_VERSION < CONFIG_UDK_2017_VERSION
|
#if CONFIG_UDK_VERSION < CONFIG_UDK_2017_VERSION
|
||||||
enum resource_type {
|
enum resource_type {
|
||||||
EFI_RESOURCE_SYSTEM_MEMORY = 0,
|
EFI_RESOURCE_SYSTEM_MEMORY = 0,
|
||||||
|
@ -90,6 +100,7 @@ void fsp_find_bootloader_tolum(struct range_entry *re);
|
||||||
void fsp_get_version(char *buf);
|
void fsp_get_version(char *buf);
|
||||||
void lb_string_platform_blob_version(struct lb_header *header);
|
void lb_string_platform_blob_version(struct lb_header *header);
|
||||||
void report_fspt_output(void);
|
void report_fspt_output(void);
|
||||||
|
void soc_validate_fsp_version(const struct fsp_header *hdr);
|
||||||
|
|
||||||
/* Fill in header and validate sanity of component within region device. */
|
/* Fill in header and validate sanity of component within region device. */
|
||||||
enum cb_err fsp_validate_component(struct fsp_header *hdr,
|
enum cb_err fsp_validate_component(struct fsp_header *hdr,
|
||||||
|
|
|
@ -85,6 +85,9 @@ enum cb_err fsp_validate_component(struct fsp_header *hdr,
|
||||||
return CB_ERR;
|
return CB_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ENV_ROMSTAGE)
|
||||||
|
soc_validate_fsp_version(hdr);
|
||||||
|
|
||||||
return CB_SUCCESS;
|
return CB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,15 +216,7 @@ enum cb_err fsp_load_component(struct fsp_load_descriptor *fspld, struct fsp_hea
|
||||||
void fsp_get_version(char *buf)
|
void fsp_get_version(char *buf)
|
||||||
{
|
{
|
||||||
struct fsp_header *hdr = &fsps_hdr;
|
struct fsp_header *hdr = &fsps_hdr;
|
||||||
union {
|
union fsp_revision revision;
|
||||||
uint32_t val;
|
|
||||||
struct {
|
|
||||||
uint8_t bld_num;
|
|
||||||
uint8_t revision;
|
|
||||||
uint8_t minor;
|
|
||||||
uint8_t major;
|
|
||||||
} rev;
|
|
||||||
} revision;
|
|
||||||
|
|
||||||
revision.val = hdr->fsp_revision;
|
revision.val = hdr->fsp_revision;
|
||||||
snprintf(buf, FSP_VER_LEN, "%u.%u-%u.%u.%u.%u", (hdr->spec_version >> 4),
|
snprintf(buf, FSP_VER_LEN, "%u.%u-%u.%u.%u.%u", (hdr->spec_version >> 4),
|
||||||
|
@ -243,3 +238,8 @@ void lb_string_platform_blob_version(struct lb_header *header)
|
||||||
rec->size = ALIGN_UP(sizeof(*rec) + len + 1, 8);
|
rec->size = ALIGN_UP(sizeof(*rec) + len + 1, 8);
|
||||||
memcpy(rec->string, fsp_version, len+1);
|
memcpy(rec->string, fsp_version, len+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__weak void soc_validate_fsp_version(const struct fsp_header *hdr)
|
||||||
|
{
|
||||||
|
printk(BIOS_DEBUG, "%s not implemented.\n", __func__);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue