mb/prodrive/hermes: Generalise `check_signature` function

Allow to specify which signature is to be checked.

Change-Id: Ica874b1c4283fdb8dbd702c34ccb3315a2cf160d
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/48147
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Angel Pons 2020-11-30 10:44:42 +01:00 committed by Patrick Georgi
parent 36854a831e
commit f9f129a5dc
4 changed files with 6 additions and 6 deletions

View File

@ -9,13 +9,13 @@
* Check Signature in EEPROM (M24C32-FMN6TP) * Check Signature in EEPROM (M24C32-FMN6TP)
* If signature is there we assume that that the content is valid * If signature is there we assume that that the content is valid
*/ */
int check_signature(u8 addr) int check_signature(u8 addr, const size_t offset, const uint64_t signature)
{ {
u8 blob[8] = {0}; u8 blob[8] = {0};
if (!read_write_config(addr, blob, EEPROM_OFFSET_FSP_SIGNATURE, 0, ARRAY_SIZE(blob))) { if (!read_write_config(addr, blob, offset, 0, ARRAY_SIZE(blob))) {
/* Check signature */ /* Check signature */
if (*(uint64_t *)blob == FSP_UPD_SIGNATURE) { if (*(uint64_t *)blob == signature) {
printk(BIOS_DEBUG, "CFG EEPROM: Signature valid.\n"); printk(BIOS_DEBUG, "CFG EEPROM: Signature valid.\n");
return 1; return 1;
} }

View File

@ -17,7 +17,7 @@ void mainboard_silicon_init_params(FSP_S_CONFIG *params)
params->SataLedEnable = 1; params->SataLedEnable = 1;
/* Overwrite params */ /* Overwrite params */
if (!check_signature(I2C_ADDR_EEPROM)) if (!check_signature(I2C_ADDR_EEPROM, EEPROM_OFFSET_FSP_SIGNATURE, FSP_UPD_SIGNATURE))
return; return;
for (u8 i = 0; i <= ARRAY_SIZE(parmas_list); i++) { for (u8 i = 0; i <= ARRAY_SIZE(parmas_list); i++) {

View File

@ -19,7 +19,7 @@ void mainboard_memory_init_params(FSPM_UPD *memupd)
cannonlake_memcfg_init(&memupd->FspmConfig, variant_memcfg_config()); cannonlake_memcfg_init(&memupd->FspmConfig, variant_memcfg_config());
/* Overwrite memupd */ /* Overwrite memupd */
if (!check_signature(I2C_ADDR_EEPROM)) if (!check_signature(I2C_ADDR_EEPROM, EEPROM_OFFSET_FSP_SIGNATURE, FSP_UPD_SIGNATURE))
return; return;
for (size_t i = 0; i < ARRAY_SIZE(parmas_list); i++) { for (size_t i = 0; i < ARRAY_SIZE(parmas_list); i++) {

View File

@ -30,4 +30,4 @@ typedef struct {
bool read_write_config(u8 addr, void *blob, size_t read_offset, size_t write_offset, bool read_write_config(u8 addr, void *blob, size_t read_offset, size_t write_offset,
size_t size); size_t size);
int check_signature(u8 addr); int check_signature(u8 addr, const size_t offset, const uint64_t signature);