mb/starlabs/starlite_adl: Add CFR option to use native panel resolution

Add a CFR option to boot using the native panel resolution, rather than
a fixed/scaled video mode. This option selects between two VBT files:
one with the 'fixed mode' flag enabled, and one with it disabled.

This feature is mainly a workaround to a GNOME-related bug which
causes the creation of a 2nd display at the boot resolution. This
2nd display being a lower/different resolution than the native
panel resolution causes severe flickering/artifacting rendering
the display unusable unless this 2nd phantom display is disabled
on every boot.

Change-Id: I275b5f8455fed58c0167e3a69db27bbc21577db0
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/87494
Reviewed-by: Alicja Michalska <ahplka19@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Sean Rhodes <sean@starlabs.systems>
This commit is contained in:
Matt DeVillier 2025-04-17 11:41:10 -05:00
commit 3593314cf5
4 changed files with 21 additions and 0 deletions

View file

@ -197,6 +197,14 @@ 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,
});
static struct sm_obj_form performance = {
.ui_name = "Performance",
.obj_list = (const struct sm_object *[]) {
@ -234,6 +242,7 @@ static struct sm_obj_form devices = {
.ui_name = "Devices",
.obj_list = (const struct sm_object *[]) {
&accelerometer,
&display_native_res,
#if CONFIG(SOC_INTEL_TIGERLAKE) || CONFIG(SOC_INTEL_ALDERLAKE) || CONFIG(SOC_INTEL_RAPTORLAKE)
&gna,
#endif

View file

@ -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)

View file

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <drivers/intel/gma/opregion.h>
#include <soc/ramstage.h>
#include <option.h>
void mainboard_silicon_init_params(FSP_S_CONFIG *supd)
{
@ -13,3 +15,11 @@ void mainboard_silicon_init_params(FSP_S_CONFIG *supd)
supd->PchSerialIoI2cSdaPinMux[0] = 0x1947c404; // GPP_H4
supd->PchSerialIoI2cSclPinMux[0] = 0x1947a405; // GPP_H5
}
const char *mainboard_vbt_filename(void)
{
if (get_uint_option("display_native_res", 0) == 1)
return "vbt_native_res.bin";
return "vbt.bin";
}