From 3593314cf5faea25700df5f2b05429340cb9796a Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Thu, 17 Apr 2025 11:41:10 -0500 Subject: [PATCH] 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/87494 Reviewed-by: Alicja Michalska Tested-by: build bot (Jenkins) Reviewed-by: Sean Rhodes --- src/mainboard/starlabs/starlite_adl/cfr.c | 9 +++++++++ .../starlite_adl/variants/mk_v/Makefile.mk | 2 ++ .../variants/mk_v/data_native_res.vbt | Bin 0 -> 9216 bytes .../starlite_adl/variants/mk_v/ramstage.c | 10 ++++++++++ 4 files changed, 21 insertions(+) create mode 100644 src/mainboard/starlabs/starlite_adl/variants/mk_v/data_native_res.vbt diff --git a/src/mainboard/starlabs/starlite_adl/cfr.c b/src/mainboard/starlabs/starlite_adl/cfr.c index 3292835c08..cd58641e1a 100644 --- a/src/mainboard/starlabs/starlite_adl/cfr.c +++ b/src/mainboard/starlabs/starlite_adl/cfr.c @@ -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 diff --git a/src/mainboard/starlabs/starlite_adl/variants/mk_v/Makefile.mk b/src/mainboard/starlabs/starlite_adl/variants/mk_v/Makefile.mk index 9abc069b38..bfea7ef255 100644 --- a/src/mainboard/starlabs/starlite_adl/variants/mk_v/Makefile.mk +++ b/src/mainboard/starlabs/starlite_adl/variants/mk_v/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/starlite_adl/variants/mk_v/data_native_res.vbt b/src/mainboard/starlabs/starlite_adl/variants/mk_v/data_native_res.vbt new file mode 100644 index 0000000000000000000000000000000000000000..556fa45c615329baa9a00e20c58f7318887d2ef7 GIT binary patch literal 9216 zcmeHMT})g>6h3qB?y_AM*$TE>Y;g(=1uSq`TBKwX?(%218?to1u0c( zOnQwxkQkGjm{i&{aWye9_#iJnyN{T@keW0;Xu_LK*m%`IHSd`i9UG6;cf>BdJv}kWL+wExID0lW9-BHd z9gFh8;nxCO*ei6kT^t*a^4^Q*Mq^Vg97Z%~^M=E9jfXk+y;`p|*88-EBapN-G_@Q# zTIlNNZ13v{1-k=7!M@#cP!Wz9O~>SbY+FmJ~4S|YV6Io zrg>F+HTR*PT4`6h%-biXChK@$e4GymoeO**b|E(PZY)|?=n{q!nyLLLuQ z?Dxo8c&wn1Km;7+RnqB}RBKJC6|Qy~NvR1JNaZQD({ATnf_4I8|u z9H^~I7eKBXlzuXj$<-*fYsp@jO8Rz^7E1fa#*)S{?!mS$o~_vm+I8z z0v9b8++}mcYfHCLzrJoGy{)g?0J=@8GV^E?g?x1$fu}^Es+<(HG0TWp*aT%NYliKH zvcim=&&y5CIpxL^7FOIczso$x?L`MEnY^{bF!{TX!tx z;KQ+2T^n8W>3Sk#!9ntn;~uu>g5(?fhZp*(OzSdJVv`k-Pm2@8L5P67v&a6}Xq>^z4k?vzqI#CL0MtzERTd@%7m z!h%uIEa!umNm1nr!ksK)AlG@ zajb^(kLQh8!sFP^5?FB#Hz6^x3djX<9l*(Ct3+Kay~4}o)JwKlNQ*AN+**P`6oa`L z`TgYdja7CvF{&6l@577YNR^*_P?xWh$n!mCu*;+U_s_7q%(~`^pS+YAne387Qu9sg z1duJ;=66R2Tn>4*+U9ZO-OnSCM<9uar)-F^TCo6fv6hp*R__(rSRr)5T_BTgD|*epx?nSjhZrI1lz$rf!Dh~4__C}g%c!@Kx03(-}Y zRm)-1ddC(r5rghnA}{qr78TlHE56NeNkD#}P~Z~BD?PkXccWDXmy! #include +#include 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"; +}