util/amdfwtool: add support for Strix Halo SoC

For amdfwtool, the Strix Halo SoC is similar to the Glinda SoC. Main
difference is the ISH PSP ID which was taken from the ISH table from the
UEFI reference implementation.

Change-Id: I6262dc8d72144ccdcd814586ef72684c15d3561d
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/91638
Reviewed-by: Ritul Guru <rguru@amd.com>
Reviewed-by: Alicja Michalska <ahplka19@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Felix Held 2026-03-10 15:30:05 +01:00
commit 5d6061d0ba
4 changed files with 14 additions and 1 deletions

View file

@ -675,6 +675,7 @@ static void fill_psp_directory_to_efs(embedded_firmware *amd_romsig, void *pspdi
case PLATFORM_RENOIR: case PLATFORM_RENOIR:
case PLATFORM_GENOA: case PLATFORM_GENOA:
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
case PLATFORM_STRIXHALO:
default: default:
/* for combo, it is also combo_psp_directory */ /* for combo, it is also combo_psp_directory */
amd_romsig->new_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_PHOENIX:
case PLATFORM_GLINDA: case PLATFORM_GLINDA:
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
case PLATFORM_STRIXHALO:
break; break;
case PLATFORM_CARRIZO: case PLATFORM_CARRIZO:
case PLATFORM_STONEYRIDGE: case PLATFORM_STONEYRIDGE:
@ -752,6 +754,9 @@ static uint32_t get_psp_id(enum platform soc_id)
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
psp_id = 0xbc0e1000; psp_id = 0xbc0e1000;
break; break;
case PLATFORM_STRIXHALO:
psp_id = 0xbc0e0900;
break;
case PLATFORM_CARRIZO: case PLATFORM_CARRIZO:
default: default:
psp_id = 0; 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_GLINDA:
case PLATFORM_GENOA: case PLATFORM_GENOA:
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
case PLATFORM_STRIXHALO:
amd_romsig->spi_readmode_f17_mod_30_3f = cb_config->efs_spi_readmode; 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; amd_romsig->spi_fastspeed_f17_mod_30_3f = cb_config->efs_spi_speed;
switch (cb_config->efs_spi_micron_flag) { 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_PHOENIX:
case PLATFORM_GLINDA: case PLATFORM_GLINDA:
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
case PLATFORM_STRIXHALO:
return false; return false;
default: default:
return true; return true;

View file

@ -35,6 +35,7 @@ enum platform {
PLATFORM_GLINDA, PLATFORM_GLINDA,
PLATFORM_GENOA, PLATFORM_GENOA,
PLATFORM_FAEGAN, PLATFORM_FAEGAN,
PLATFORM_STRIXHALO,
}; };
typedef enum _amd_fw_type { typedef enum _amd_fw_type {

View file

@ -119,6 +119,8 @@ static enum platform identify_platform(char *soc_name)
return PLATFORM_GENOA; return PLATFORM_GENOA;
else if (!strcasecmp(soc_name, "Faegan")) else if (!strcasecmp(soc_name, "Faegan"))
return PLATFORM_FAEGAN; return PLATFORM_FAEGAN;
else if (!strcasecmp(soc_name, "Strixhalo"))
return PLATFORM_STRIXHALO;
else else
return PLATFORM_UNKNOWN; 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) static bool needs_ish(enum platform platform_type)
{ {
if (platform_type == PLATFORM_MENDOCINO || platform_type == PLATFORM_PHOENIX || 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; return true;
else else
return false; return false;
@ -818,6 +821,7 @@ static bool is_second_gen(enum platform platform_type)
case PLATFORM_GLINDA: case PLATFORM_GLINDA:
case PLATFORM_GENOA: case PLATFORM_GENOA:
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
case PLATFORM_STRIXHALO:
return true; return true;
case PLATFORM_UNKNOWN: case PLATFORM_UNKNOWN:
default: default:

View file

@ -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_PHOENIX:
case PLATFORM_GLINDA: case PLATFORM_GLINDA:
case PLATFORM_FAEGAN: case PLATFORM_FAEGAN:
case PLATFORM_STRIXHALO:
/* Fallback to fw_type if fw_id is not populated, which serves the same /* Fallback to fw_type if fw_id is not populated, which serves the same
purpose on older SoCs. */ purpose on older SoCs. */
return header->fw_id ? header->fw_id : header->fw_type; return header->fw_id ? header->fw_id : header->fw_type;