amdfwtool: Add FW type FUSE_CHAIN in the config file

We don't have file for the fuse chain, but we need to set the level
for some cases.

Change-Id: Idb546f761ae10b0d19a9879a9a644b788828d523
Signed-off-by: Zheng Bao <fishbaozi@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/77506
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-by: Varshit Pandya <pandyavarshit@gmail.com>
This commit is contained in:
Zheng Bao 2023-08-25 19:20:37 +08:00 committed by Felix Held
parent 5a87c82428
commit 730c3ba6d8
3 changed files with 14 additions and 6 deletions

View File

@ -23,14 +23,14 @@ REMOVE_MP2 = /MP2/d
endif
# Steps below to generate the dependency list
# 1a: Delete any line that starts with #, FIRMWARE_LOCATION, or SOC_NAME
# 1a: Delete any line that starts with #, FIRMWARE_LOCATION, SOC_NAME, or AMD_FUSE_CHAIN
# 1b: Filter out lines containing MP2 or not, decided above.
# 1c: Use awk to return only field 2, the filename
# 2: Gather filenames with no path to add the firmware location later
# 3: Gather filenames with a path
# 4a: Add the firmware location to any files without a path to the dependencies
# 4b: add the lines containing a path to the dependencies
AMDFW_CFG_FILES = $(shell sed "/^$(POUND_SIGN)\|^FIRMWARE_LOCATION\|^SOC_NAME/d; \
AMDFW_CFG_FILES = $(shell sed "/^$(POUND_SIGN)\|^FIRMWARE_LOCATION\|^AMD_FUSE_CHAIN\|^SOC_NAME/d; \
$(REMOVE_MP2)" $(CONFIG_AMDFW_CONFIG_FILE) | \
awk '{print $$2}')
AMDFW_CFG_IN_FW_LOC = $(shell echo "$(AMDFW_CFG_FILES)" | tr ' ' '\n' | grep -v "/")

View File

@ -912,7 +912,10 @@ static void dump_psp_firmwares(amd_fw_entry *fw_table)
printf("PSP firmware components:\n");
for (index = fw_table; index->type != AMD_FW_INVALID; index++) {
if (index->filename)
if (index->type == AMD_PSP_FUSE_CHAIN)
printf(" %2x: level=%x, subprog=%x, inst=%x\n",
index->type, index->level, index->subprog, index->inst);
else if (index->filename)
printf(" %2x: level=%x, subprog=%x, inst=%x, %s\n",
index->type, index->level, index->subprog, index->inst,
index->filename);

View File

@ -176,6 +176,9 @@ static uint8_t find_register_fw_filename_psp_dir(char *fw_name, char *filename,
} else if (strcmp(fw_name, "AMD_PUBKEY_FILE") == 0) {
fw_type = AMD_FW_PSP_PUBKEY;
subprog = 0;
} else if (strcmp(fw_name, "AMD_FUSE_CHAIN") == 0) {
fw_type = AMD_PSP_FUSE_CHAIN;
subprog = 0;
} else if (strcmp(fw_name, "PSPRCVR_FILE") == 0) {
fw_type = AMD_FW_PSP_RECOVERY;
subprog = 0;
@ -499,11 +502,13 @@ static uint8_t find_register_fw_filename_psp_dir(char *fw_name, char *filename,
/* instance are not used in PSP table */
if (psp_tableptr->type == fw_type && psp_tableptr->subprog == subprog
&& psp_tableptr->inst == instance) {
psp_tableptr->filename = filename;
if (psp_tableptr->type != AMD_PSP_FUSE_CHAIN) {
psp_tableptr->filename = filename;
psp_tableptr->hash_tbl_id = hash_tbl_id;
psp_tableptr->fwid_type = fwid_type;
}
SET_LEVEL(psp_tableptr, level_to_set, PSP,
cb_config->recovery_ab);
psp_tableptr->hash_tbl_id = hash_tbl_id;
psp_tableptr->fwid_type = fwid_type;
break;
}
psp_tableptr++;