diff options
author | Zheng Bao <fishbaozi@gmail.com> | 2023-08-25 19:20:37 +0800 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2023-09-05 12:30:16 +0000 |
commit | 730c3ba6d81aa26b6c3438a613fe964fc9e4ea3f (patch) | |
tree | 7e457e9b01e69c05864bd08324e2bfc5fc927540 | |
parent | 5a87c824286bb3928ebc416a039c1e8844d69e08 (diff) |
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>
-rw-r--r-- | src/soc/amd/common/Makefile.inc | 4 | ||||
-rw-r--r-- | util/amdfwtool/amdfwtool.c | 5 | ||||
-rw-r--r-- | util/amdfwtool/data_parse.c | 11 |
3 files changed, 14 insertions, 6 deletions
diff --git a/src/soc/amd/common/Makefile.inc b/src/soc/amd/common/Makefile.inc index 2259d01ee5..1359166d70 100644 --- a/src/soc/amd/common/Makefile.inc +++ b/src/soc/amd/common/Makefile.inc @@ -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 "/") diff --git a/util/amdfwtool/amdfwtool.c b/util/amdfwtool/amdfwtool.c index fc7a531f34..c93bcfecd4 100644 --- a/util/amdfwtool/amdfwtool.c +++ b/util/amdfwtool/amdfwtool.c @@ -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); diff --git a/util/amdfwtool/data_parse.c b/util/amdfwtool/data_parse.c index 64cae54a6c..728feae053 100644 --- a/util/amdfwtool/data_parse.c +++ b/util/amdfwtool/data_parse.c @@ -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++; |