diff --git a/util/amdfwtool/amdfwtool.c b/util/amdfwtool/amdfwtool.c index af24697bca..6cd991110a 100644 --- a/util/amdfwtool/amdfwtool.c +++ b/util/amdfwtool/amdfwtool.c @@ -675,6 +675,7 @@ static void fill_psp_directory_to_efs(embedded_firmware *amd_romsig, void *pspdi case PLATFORM_RENOIR: case PLATFORM_GENOA: case PLATFORM_FAEGAN: + case PLATFORM_STRIXHALO: default: /* for combo, it is also combo_psp_directory */ amd_romsig->new_psp_directory = @@ -707,6 +708,7 @@ static void fill_bios_directory_to_efs(embedded_firmware *amd_romsig, void *bios case PLATFORM_PHOENIX: case PLATFORM_GLINDA: case PLATFORM_FAEGAN: + case PLATFORM_STRIXHALO: break; case PLATFORM_CARRIZO: case PLATFORM_STONEYRIDGE: @@ -752,6 +754,9 @@ static uint32_t get_psp_id(enum platform soc_id) case PLATFORM_FAEGAN: psp_id = 0xbc0e1000; break; + case PLATFORM_STRIXHALO: + psp_id = 0xbc0e0900; + break; case PLATFORM_CARRIZO: default: psp_id = 0; @@ -1620,6 +1625,7 @@ static int set_efs_table(uint8_t soc_id, amd_cb_config *cb_config, case PLATFORM_GLINDA: case PLATFORM_GENOA: case PLATFORM_FAEGAN: + case PLATFORM_STRIXHALO: amd_romsig->spi_readmode_f17_mod_30_3f = cb_config->efs_spi_readmode; amd_romsig->spi_fastspeed_f17_mod_30_3f = cb_config->efs_spi_speed; switch (cb_config->efs_spi_micron_flag) { @@ -1679,6 +1685,7 @@ static bool is_initial_alignment_required(enum platform soc_id) case PLATFORM_PHOENIX: case PLATFORM_GLINDA: case PLATFORM_FAEGAN: + case PLATFORM_STRIXHALO: return false; default: return true; diff --git a/util/amdfwtool/amdfwtool.h b/util/amdfwtool/amdfwtool.h index fe3f72b85d..e0fae5e697 100644 --- a/util/amdfwtool/amdfwtool.h +++ b/util/amdfwtool/amdfwtool.h @@ -35,6 +35,7 @@ enum platform { PLATFORM_GLINDA, PLATFORM_GENOA, PLATFORM_FAEGAN, + PLATFORM_STRIXHALO, }; typedef enum _amd_fw_type { diff --git a/util/amdfwtool/data_parse.c b/util/amdfwtool/data_parse.c index 2ea37efd67..961b6a1c18 100644 --- a/util/amdfwtool/data_parse.c +++ b/util/amdfwtool/data_parse.c @@ -119,6 +119,8 @@ static enum platform identify_platform(char *soc_name) return PLATFORM_GENOA; else if (!strcasecmp(soc_name, "Faegan")) return PLATFORM_FAEGAN; + else if (!strcasecmp(soc_name, "Strixhalo")) + return PLATFORM_STRIXHALO; else return PLATFORM_UNKNOWN; } @@ -791,7 +793,8 @@ static uint8_t process_one_line(char *oneline, regmatch_t *match, char *dir, static bool needs_ish(enum platform platform_type) { if (platform_type == PLATFORM_MENDOCINO || platform_type == PLATFORM_PHOENIX || - platform_type == PLATFORM_GLINDA || platform_type == PLATFORM_FAEGAN) + platform_type == PLATFORM_GLINDA || platform_type == PLATFORM_FAEGAN || + platform_type == PLATFORM_STRIXHALO) return true; else return false; @@ -818,6 +821,7 @@ static bool is_second_gen(enum platform platform_type) case PLATFORM_GLINDA: case PLATFORM_GENOA: case PLATFORM_FAEGAN: + case PLATFORM_STRIXHALO: return true; case PLATFORM_UNKNOWN: default: diff --git a/util/amdfwtool/signed_psp.c b/util/amdfwtool/signed_psp.c index 18215a04c2..14d0a13b9b 100644 --- a/util/amdfwtool/signed_psp.c +++ b/util/amdfwtool/signed_psp.c @@ -41,6 +41,7 @@ static uint16_t get_psp_fw_type(enum platform soc_id, struct amd_fw_header *head case PLATFORM_PHOENIX: case PLATFORM_GLINDA: case PLATFORM_FAEGAN: + case PLATFORM_STRIXHALO: /* Fallback to fw_type if fw_id is not populated, which serves the same purpose on older SoCs. */ return header->fw_id ? header->fw_id : header->fw_type;