From 244e8edf182a611fe65061e6bb4b9a4df70db9cd Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Thu, 24 Jul 2025 11:22:24 +0200 Subject: [PATCH] soc/amd/glinda/Kconfig: Add Faegan SoC as Glinda variant Glinda and Faegan are closely related and there's only very minimal difference from the coreboot viewpoint, so Feagan is added as Glianda variant and not as a new SoC folder. Faegan has a different CPUID, so it's added to the CPU table, and some GPIO muxes have a few more valid settings to route the MDIO pins related to the 2 XGBE controllers to GPIO pins. Signed-off-by: Maximilian Brune Change-Id: I57699089a4a3ac7ddb037f254d42cb043b816c55 Reviewed-on: https://review.coreboot.org/c/coreboot/+/90417 Reviewed-by: Felix Held Tested-by: build bot (Jenkins) --- src/soc/amd/glinda/Kconfig | 18 ++++++++-- src/soc/amd/glinda/Makefile.mk | 4 +-- src/soc/amd/glinda/cpu.c | 1 + src/soc/amd/glinda/include/soc/cpu.h | 6 ++-- src/soc/amd/glinda/include/soc/gpio.h | 48 +++++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 7 deletions(-) diff --git a/src/soc/amd/glinda/Kconfig b/src/soc/amd/glinda/Kconfig index 77008a9345..3be4725763 100644 --- a/src/soc/amd/glinda/Kconfig +++ b/src/soc/amd/glinda/Kconfig @@ -3,7 +3,7 @@ # TODO: Evaluate what can be moved to a common directory # TODO: Update for Glinda -config SOC_AMD_GLINDA +config SOC_AMD_GLINDA_BASE bool select ACPI_SOC_NVS select ARCH_X86 @@ -96,7 +96,19 @@ config SOC_AMD_GLINDA help AMD Glinda support -if SOC_AMD_GLINDA +config SOC_AMD_GLINDA + bool + select SOC_AMD_GLINDA_BASE + help + AMD Glinda support + +config SOC_AMD_FAEGAN + bool + select SOC_AMD_GLINDA_BASE + help + AMD Faegan support + +if SOC_AMD_GLINDA_BASE config CHIPSET_DEVICETREE string @@ -451,4 +463,4 @@ config RWB_REGION_ONLY endif # VBOOT_SLOTS_RW_AB && VBOOT_STARTS_BEFORE_BOOTBLOCK -endif # SOC_AMD_GLINDA +endif # SOC_AMD_GLINDA_BASE diff --git a/src/soc/amd/glinda/Makefile.mk b/src/soc/amd/glinda/Makefile.mk index e0ce02c666..1a71769701 100644 --- a/src/soc/amd/glinda/Makefile.mk +++ b/src/soc/amd/glinda/Makefile.mk @@ -3,7 +3,7 @@ # TODO: Move as much as possible to common # TODO: Update for Glinda -ifeq ($(CONFIG_SOC_AMD_GLINDA),y) +ifeq ($(CONFIG_SOC_AMD_GLINDA_BASE),y) subdirs-$(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK) += psp_verstage @@ -315,4 +315,4 @@ build_complete:: $(obj)/amdfw_a.rom $(obj)/amdfw_b.rom endif # CONFIG_SEPARATE_SIGNED_PSPFW endif -endif # ($(CONFIG_SOC_AMD_GLINDA),y) +endif # ($(CONFIG_SOC_AMD_GLINDA_BASE),y) diff --git a/src/soc/amd/glinda/cpu.c b/src/soc/amd/glinda/cpu.c index 2dcc3c5d21..d414afee4c 100644 --- a/src/soc/amd/glinda/cpu.c +++ b/src/soc/amd/glinda/cpu.c @@ -17,6 +17,7 @@ static struct device_operations cpu_dev_ops = { static struct cpu_device_id cpu_table[] = { { X86_VENDOR_AMD, GLINDA_A0_CPUID, CPUID_ALL_STEPPINGS_MASK }, { X86_VENDOR_AMD, GLINDA_B0_CPUID, CPUID_ALL_STEPPINGS_MASK }, + { X86_VENDOR_AMD, FAEGAN_A0_CPUID, CPUID_ALL_STEPPINGS_MASK }, CPU_TABLE_END }; diff --git a/src/soc/amd/glinda/include/soc/cpu.h b/src/soc/amd/glinda/include/soc/cpu.h index 834b1f94e7..0845cac5cc 100644 --- a/src/soc/amd/glinda/include/soc/cpu.h +++ b/src/soc/amd/glinda/include/soc/cpu.h @@ -3,6 +3,8 @@ #ifndef AMD_GLINDA_CPU_H #define AMD_GLINDA_CPU_H -#define GLINDA_A0_CPUID CPUID_FROM_FMS(0x1a, 0x20, 0) -#define GLINDA_B0_CPUID CPUID_FROM_FMS(0x1a, 0x24, 0) +#define GLINDA_A0_CPUID CPUID_FROM_FMS(0x1a, 0x20, 0x0) +#define GLINDA_B0_CPUID CPUID_FROM_FMS(0x1a, 0x24, 0x0) +#define FAEGAN_A0_CPUID CPUID_FROM_FMS(0x1a, 0x68, 0x0) + #endif /* AMD_GLINDA_CPU_H */ diff --git a/src/soc/amd/glinda/include/soc/gpio.h b/src/soc/amd/glinda/include/soc/gpio.h index 3104889476..7a3a3fcee1 100644 --- a/src/soc/amd/glinda/include/soc/gpio.h +++ b/src/soc/amd/glinda/include/soc/gpio.h @@ -115,18 +115,27 @@ #define GPIO_4_IOMUX_GPIOxx 0 #define GPIO_5_IOMUX_GPIOxx 0 #define GPIO_6_IOMUX_GPIOxx 0 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_6_IOMUX_MDIO0_SCL 2 +#endif #define GPIO_7_IOMUX_GPIOxx 0 #define GPIO_7_IOMUX_ZST_STUTTER_RAIL 1 #define GPIO_8_IOMUX_GPIOxx 0 #define GPIO_8_IOMUX_TMU_CLK_OUT0 1 #define GPIO_8_IOMUX_TMU_CLK_OUT1 2 #define GPIO_9_IOMUX_GPIOxx 0 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_9_IOMUX_MDIO2_SCL 2 +#endif #define GPIO_10_IOMUX_GPIOxx 0 #define GPIO_10_IOMUX_S0A3_GPIO 1 /* GPIO 10 IOMUX == 2 is also GPIOxx */ #define GPIO_10_IOMUX_DF_VRCONTEXT_0 3 #define GPIO_11_IOMUX_GPIOxx 0 #define GPIO_11_IOMUX_BLINK 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_11_IOMUX_MDIO3_SDA 2 +#endif #define GPIO_12_IOMUX_LLB_L 0 #define GPIO_12_IOMUX_GPIOxx 1 #define GPIO_16_IOMUX_USB_OC0_L 0 @@ -152,6 +161,9 @@ #define GPIO_22_IOMUX_SD0_CMD 3 #define GPIO_23_IOMUX_AC_PRES 0 #define GPIO_23_IOMUX_GPIOxx 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_23_IOMUX_MDIO2_SDA 2 +#endif #define GPIO_24_IOMUX_USB_OC3_L 0 #define GPIO_24_IOMUX_GPIOxx 1 #define GPIO_26_IOMUX_PCIE_RST0_L 0 @@ -169,11 +181,23 @@ #define GPIO_31_IOMUX_SPI2_CS3_L 3 #define GPIO_32_IOMUX_GPIOxx 0 #define GPIO_32_IOMUX_LPC_RST_L 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_32_IOMUX_MDIO3_SCL 2 +#endif #define GPIO_38_IOMUX_CLK_REQ5_L 0 #define GPIO_38_IOMUX_GPIOxx 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_38_IOMUX_MDIO1_SDA 2 +#endif #define GPIO_39_IOMUX_CLK_REQ6_L 0 #define GPIO_39_IOMUX_GPIOxx 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_39_IOMUX_MDIO1_SCL 2 +#endif #define GPIO_40_IOMUX_GPIOxx 0 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_40_IOMUX_MDIO0_SDA 2 +#endif #define GPIO_42_IOMUX_GPIOxx 0 #define GPIO_42_IOMUX_DF_VRCONTEXT_1 1 #define GPIO_67_IOMUX_SPI_ROM_REQ 0 @@ -257,13 +281,22 @@ #define GPIO_135_IOMUX_UART3_TXD 2 #define GPIO_136_IOMUX_GPIOxx 0 #define GPIO_136_IOMUX_UART2_RXD 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_136_IOMUX_XGBE_LED0 2 +#endif #define GPIO_137_IOMUX_GPIOxx 0 #define GPIO_137_IOMUX_UART2_RTS_L 1 #define GPIO_137_IOMUX_UART3_RXD 2 #define GPIO_138_IOMUX_GPIOxx 0 #define GPIO_138_IOMUX_UART2_TXD 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_138_IOMUX_XGBE_LED1 2 +#endif #define GPIO_139_IOMUX_GPIOxx 0 #define GPIO_139_IOMUX_UART2_INTR 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_139_IOMUX_XGBE_LED2 2 +#endif #define GPIO_140_IOMUX_GPIOxx 0 #define GPIO_140_IOMUX_UART0_CTS_L 1 #define GPIO_140_IOMUX_UART1_TXD 2 @@ -291,13 +324,28 @@ #define GPIO_148_IOMUX_GPIOxx 2 #define GPIO_153_IOMUX_GPIOxx 0 #define GPIO_153_IOMUX_UART4_CTS_L 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_153_IOMUX_XGBE_LED3 2 +#endif #define GPIO_154_IOMUX_GPIOxx 0 #define GPIO_154_IOMUX_UART4_RTS_L 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_154_IOMUX_XGBE_LED4 2 +#endif #define GPIO_155_IOMUX_GPIOxx 0 #define GPIO_155_IOMUX_UART4_RXD 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_155_IOMUX_XGBE_LED5 2 +#endif #define GPIO_156_IOMUX_GPIOxx 0 #define GPIO_156_IOMUX_UART4_TXD 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_156_IOMUX_XGBE_LED6 2 +#endif #define GPIO_157_IOMUX_GPIOxx 0 #define GPIO_157_IOMUX_UART4_INTR 1 +#if CONFIG(SOC_AMD_FAEGAN) +#define GPIO_157_IOMUX_XGBE_LED7 2 +#endif #endif /* AMD_GLINDA_GPIO_H */