util/amdfwtool: add PLATFORM_FAEGAN

Add the PLATFORM_FAEGAN element to the 'platform' enum and use it in the
code. The Faegan SoC is similar to the Glinda SoC, but has a different
PSP ID.

Change-Id: I40a3e9981696fc02a44fbf300d1b47060a4a398b
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/86940
Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Ana Carolina Cabral <ana.cpmelo95@gmail.com>
This commit is contained in:
Felix Held 2025-03-20 17:27:37 +01:00 committed by Matt DeVillier
commit fe344ea507
4 changed files with 14 additions and 1 deletions

View file

@ -631,6 +631,7 @@ static void fill_psp_directory_to_efs(embedded_firmware *amd_romsig, void *pspdi
case PLATFORM_LUCIENNE:
case PLATFORM_RENOIR:
case PLATFORM_GENOA:
case PLATFORM_FAEGAN:
default:
/* for combo, it is also combo_psp_directory */
amd_romsig->new_psp_directory =
@ -662,6 +663,7 @@ static void fill_bios_directory_to_efs(embedded_firmware *amd_romsig, void *bios
case PLATFORM_MENDOCINO:
case PLATFORM_PHOENIX:
case PLATFORM_GLINDA:
case PLATFORM_FAEGAN:
break;
case PLATFORM_CARRIZO:
case PLATFORM_STONEYRIDGE:
@ -704,6 +706,9 @@ static uint32_t get_psp_id(enum platform soc_id)
case PLATFORM_GENOA:
psp_id = 0xBC0C0111;
break;
case PLATFORM_FAEGAN:
psp_id = 0xbc0e1000;
break;
case PLATFORM_CARRIZO:
default:
psp_id = 0;
@ -1557,6 +1562,7 @@ static int set_efs_table(uint8_t soc_id, amd_cb_config *cb_config,
case PLATFORM_PHOENIX:
case PLATFORM_GLINDA:
case PLATFORM_GENOA:
case PLATFORM_FAEGAN:
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) {
@ -1615,6 +1621,7 @@ static bool is_initial_alignment_required(enum platform soc_id)
case PLATFORM_MENDOCINO:
case PLATFORM_PHOENIX:
case PLATFORM_GLINDA:
case PLATFORM_FAEGAN:
return false;
default:
return true;

View file

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

View file

@ -117,6 +117,8 @@ static enum platform identify_platform(char *soc_name)
return PLATFORM_GLINDA;
else if (!strcasecmp(soc_name, "Genoa"))
return PLATFORM_GENOA;
else if (!strcasecmp(soc_name, "Faegan"))
return PLATFORM_FAEGAN;
else
return PLATFORM_UNKNOWN;
}
@ -725,7 +727,8 @@ static uint8_t process_one_line(char *oneline, regmatch_t *match, char *dir,
bool needs_ish(enum platform platform_type)
{
if (platform_type == PLATFORM_MENDOCINO || platform_type == PLATFORM_PHOENIX || platform_type == PLATFORM_GLINDA)
if (platform_type == PLATFORM_MENDOCINO || platform_type == PLATFORM_PHOENIX ||
platform_type == PLATFORM_GLINDA || platform_type == PLATFORM_FAEGAN)
return true;
else
return false;
@ -746,6 +749,7 @@ static bool is_second_gen(enum platform platform_type)
case PLATFORM_PHOENIX:
case PLATFORM_GLINDA:
case PLATFORM_GENOA:
case PLATFORM_FAEGAN:
return true;
case PLATFORM_UNKNOWN:
default:

View file

@ -40,6 +40,7 @@ static uint16_t get_psp_fw_type(enum platform soc_id, struct amd_fw_header *head
case PLATFORM_MENDOCINO:
case PLATFORM_PHOENIX:
case PLATFORM_GLINDA:
case PLATFORM_FAEGAN:
/* 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;