From f61ecfa1542d4b1692256a3229413167a0ab1b4b Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Mon, 1 Dec 2025 20:34:03 -0600 Subject: [PATCH] mb/google/link: Add CFR option menu support Add CFR option menu support when using edk2 payload and SMMSTORE. Include relevant items from Sandy/Ivybridge, C216 SB, and ChromeEC. TEST=build/boot google/link, verify CFR option functionality. Change-Id: I08cccf136f20018aee925372b5c181bf4b55e0cd Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/90319 Reviewed-by: Jason Glenesk Tested-by: build bot (Jenkins) --- src/mainboard/google/link/Kconfig | 1 + src/mainboard/google/link/Makefile.mk | 2 ++ src/mainboard/google/link/cfr.c | 38 +++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/mainboard/google/link/cfr.c diff --git a/src/mainboard/google/link/Kconfig b/src/mainboard/google/link/Kconfig index 17c41bd8dd..86dd014f2a 100644 --- a/src/mainboard/google/link/Kconfig +++ b/src/mainboard/google/link/Kconfig @@ -7,6 +7,7 @@ config BOARD_SPECIFIC_OPTIONS select AZALIA_USE_LEGACY_VERB_TABLE select ACPI_GNVS_USB_CHARGECTL select BOARD_ROMSIZE_KB_8192 + select DRIVERS_OPTION_CFR_ENABLED if PAYLOAD_EDK2 && SMMSTORE select EC_GOOGLE_CHROMEEC select EC_GOOGLE_CHROMEEC_AUTO_FAN_CTRL select EC_GOOGLE_CHROMEEC_LPC diff --git a/src/mainboard/google/link/Makefile.mk b/src/mainboard/google/link/Makefile.mk index 6b3f1b568c..c057bdc178 100644 --- a/src/mainboard/google/link/Makefile.mk +++ b/src/mainboard/google/link/Makefile.mk @@ -15,3 +15,5 @@ bootblock-y += gpio.c romstage-y += gpio.c bootblock-y += early_init.c romstage-y += early_init.c + +ramstage-$(CONFIG_DRIVERS_OPTION_CFR) += cfr.c diff --git a/src/mainboard/google/link/cfr.c b/src/mainboard/google/link/cfr.c new file mode 100644 index 0000000000..fb40c308d2 --- /dev/null +++ b/src/mainboard/google/link/cfr.c @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include +#include +#include + +static struct sm_obj_form system = { + .ui_name = "System", + .obj_list = (const struct sm_object *[]) { + &gfx_uma_size, + &me_state, + &me_state_prev, + &nmi, + &sata_mode, + NULL + }, +}; + +static struct sm_obj_form ec = { + .ui_name = "ChromeEC Embedded Controller", + .obj_list = (const struct sm_object *[]) { + &auto_fan_control, + &ec_kb_backlight, + NULL + }, +}; +static struct sm_obj_form *sm_root[] = { + &system, + &ec, + NULL +}; + +void mb_cfr_setup_menu(struct lb_cfr *cfr_root) +{ + cfr_write_setup_menu(cfr_root, sm_root); +}