diff --git a/src/mainboard/starlabs/starbook/Kconfig b/src/mainboard/starlabs/starbook/Kconfig index b266ba60c7..be0ed13177 100644 --- a/src/mainboard/starlabs/starbook/Kconfig +++ b/src/mainboard/starlabs/starbook/Kconfig @@ -264,4 +264,9 @@ config BOARD_SUPPORTS_HOTPLUG default y if BOARD_STARLABS_STARBOOK_ADL default n +config BOARD_USES_FIXED_MODE_VBT + bool + default y if BOARD_STARLABS_STARBOOK_ADL_N || BOARD_STARLABS_STARBOOK_MTL + default n + endif diff --git a/src/mainboard/starlabs/starbook/cfr.c b/src/mainboard/starlabs/starbook/cfr.c index 5fed679631..5acb1a2d8d 100644 --- a/src/mainboard/starlabs/starbook/cfr.c +++ b/src/mainboard/starlabs/starbook/cfr.c @@ -57,6 +57,9 @@ static struct sm_obj_form devices = { .ui_name = "Devices", .obj_list = (const struct sm_object *[]) { &card_reader, + #if CONFIG(BOARD_USES_FIXED_MODE_VBT) + &display_native_res, + #endif #if CONFIG(BOARD_HAS_FPR) &fingerprint_reader, #endif diff --git a/src/mainboard/starlabs/starbook/cfr.h b/src/mainboard/starlabs/starbook/cfr.h index 554062aeeb..6270e7a50f 100644 --- a/src/mainboard/starlabs/starbook/cfr.h +++ b/src/mainboard/starlabs/starbook/cfr.h @@ -209,4 +209,12 @@ static const struct sm_object bluetooth_rtd3 = SM_DECLARE_BOOL({ .default_value = true, }); +static const struct sm_object display_native_res = SM_DECLARE_BOOL({ + .opt_name = "display_native_res", + .ui_name = "Display: Use Native Resolution", + .ui_helptext = "Enabled: use the native panel resolution at boot.\n" + "Disabled: use a fixed/scaled video mode at boot.", + .default_value = false, +}); + #endif /* _STARBOOK_CFR_H_ */ diff --git a/src/mainboard/starlabs/starbook/mainboard.c b/src/mainboard/starlabs/starbook/mainboard.c index d394f2579d..4141475a5d 100644 --- a/src/mainboard/starlabs/starbook/mainboard.c +++ b/src/mainboard/starlabs/starbook/mainboard.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include #include #include #include @@ -25,3 +26,11 @@ static void init_mainboard(void *chip_info) struct chip_operations mainboard_ops = { .init = init_mainboard, }; + +const char *mainboard_vbt_filename(void) +{ + if (CONFIG(BOARD_USES_FIXED_MODE_VBT) && get_uint_option("display_native_res", 0) == 1) + return "vbt_native_res.bin"; + + return "vbt.bin"; +} diff --git a/src/mainboard/starlabs/starbook/variants/adl_n/Makefile.mk b/src/mainboard/starlabs/starbook/variants/adl_n/Makefile.mk index 9abc069b38..bfea7ef255 100644 --- a/src/mainboard/starlabs/starbook/variants/adl_n/Makefile.mk +++ b/src/mainboard/starlabs/starbook/variants/adl_n/Makefile.mk @@ -8,3 +8,5 @@ ramstage-y += devtree.c ramstage-y += gpio.c ramstage-y += hda_verb.c ramstage-y += ramstage.c + +$(call add_vbt_to_cbfs, vbt_native_res.bin, data_native_res.vbt) diff --git a/src/mainboard/starlabs/starbook/variants/adl_n/data_native_res.vbt b/src/mainboard/starlabs/starbook/variants/adl_n/data_native_res.vbt new file mode 100644 index 0000000000..d4b86ca216 Binary files /dev/null and b/src/mainboard/starlabs/starbook/variants/adl_n/data_native_res.vbt differ diff --git a/src/mainboard/starlabs/starbook/variants/mtl/Makefile.mk b/src/mainboard/starlabs/starbook/variants/mtl/Makefile.mk index 2a505c35c7..53efc2f0fe 100644 --- a/src/mainboard/starlabs/starbook/variants/mtl/Makefile.mk +++ b/src/mainboard/starlabs/starbook/variants/mtl/Makefile.mk @@ -7,3 +7,5 @@ romstage-y += romstage.c ramstage-y += devtree.c ramstage-y += gpio.c ramstage-y += hda_verb.c + +$(call add_vbt_to_cbfs, vbt_native_res.bin, data_native_res.vbt) diff --git a/src/mainboard/starlabs/starbook/variants/mtl/data_native_res.vbt b/src/mainboard/starlabs/starbook/variants/mtl/data_native_res.vbt new file mode 100644 index 0000000000..228f85636c Binary files /dev/null and b/src/mainboard/starlabs/starbook/variants/mtl/data_native_res.vbt differ