From d13afbbbca6cecf5288314bb8d1f2e823247e6ac Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Thu, 17 Apr 2025 12:15:05 -0500 Subject: [PATCH] mb/starlabs/starbook: Add CFR option to use native panel resolution For boards for which set the 'Fixed Mode at boot' flag in the VBT, 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: Ia75727f393744caf9062763e6118c1e2601512fa Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/87493 Tested-by: build bot (Jenkins) Reviewed-by: Sean Rhodes Reviewed-by: Alicja Michalska --- src/mainboard/starlabs/starbook/Kconfig | 5 +++++ src/mainboard/starlabs/starbook/cfr.c | 3 +++ src/mainboard/starlabs/starbook/cfr.h | 8 ++++++++ src/mainboard/starlabs/starbook/mainboard.c | 9 +++++++++ .../starlabs/starbook/variants/adl_n/Makefile.mk | 2 ++ .../starbook/variants/adl_n/data_native_res.vbt | Bin 0 -> 9216 bytes .../starlabs/starbook/variants/mtl/Makefile.mk | 2 ++ .../starbook/variants/mtl/data_native_res.vbt | Bin 0 -> 7680 bytes 8 files changed, 29 insertions(+) create mode 100644 src/mainboard/starlabs/starbook/variants/adl_n/data_native_res.vbt create mode 100644 src/mainboard/starlabs/starbook/variants/mtl/data_native_res.vbt 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 0000000000000000000000000000000000000000..d4b86ca2169d2f724e70f3fdb3dfdc7e784700f1 GIT binary patch literal 9216 zcmeHMU2Gdg5T3oWFRpQjOG4|0Hf)kAbwZPzoi?PArJR2f>NY>NlSZzJ6gRb@5pHAB z6jFrLL*yY6LOKZv(h3QKgoJ_wdEps9p`gB4MM6A)lsBr17o@(?VrKUoyO-9)Pzp`C zInCYN&g|^Ww|l#Lcl##;6VyK(8jKD5j}LZ6C{hw+5L>>$^Su-ZkBv`-{1g7E!0=e` zIQDh@&!L-{%Y-ki!Ft6Bx!egln) z01+UJ0G=kwJyoxXYxk6$vf3eqJd1n@`EBHPkv~BG82NMLuaLh+{ucQ=-8K=3Cs$b2$M}_^4q8B>fh^w~^v~u8)N7 znJzJ3V~2drEwWVqXiE2iu0m0H991wdi%kR`5CL}!2x5=H37gm$l?yv2t*Wq2)SXZA zMa?$nz$Yv&IQaDzapKilcK`~7?{}ygUEk-lC0g{_O}&?K?q{-tig96U57{~jp7>ts zRvStl^m!Z{Y;M}xLvjx&erS_jOTD@WSMOz!ZvfDP6)eny4;SOgS;!r*90ggCGq|2I z!Yr^NlN<}y#;QCl&}gGmao**DXlwHGtvI%N7yZ*A4~OrT`KpCQIa_IUDtO2M%^~QI})=?d~dbQ^Dx6V z5ik)j5ik)j5ik)j5ik+>4-x49MA!>2P6McdhM%euuuk?B|L(EBm;lO$_-9oF;szDs zXiN03wOn`O4jNb#;({godfkQ}$t0eNis$uD@!Pa@naGeq8yV~2yDU-;ndug+lsHk> zXmJ{J+K)`PPU5hPx;BF@zaW4j$%2AjRxMtG?)C_QN$Uz30u5tnLY@9aQN{Lt$P>_{ zEXY97XHzN89O|@_0;n~*Zq?F?x$D0jna+|WkhSJX1g^lM*n&RwcWkC(IVjQ^xFCwU zB(p}=^Q(kQ4)yzM87^6TrN?N*-B_!POGAjo;=Hmtr9|TW!E&u=k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..228f85636c4363007d73c609814be32874765ef3 GIT binary patch literal 7680 zcmeHMUrbw782`?_ZRu)}ZlLQJ!y{X;;DFn*AtNNa<)7;YqXkB~#DtEuI$}2%V}==% zRmFstCHF;Ti;305MDc|epY4kV;|rP5_@D_sxh%ez>}?zMcg`*C3S(5~bS(Xv@1Aqd z_dDPDzVDoS&UbJ34R;LjzV4y!{()Zqv2HFXN*aZ#-otf0bp-kcN4oq&{*jK}{?22Z z*t5i|R&EkS8QbObYMM82ZYmb{4Ak+y@zJq(tf?z@;q|HU2_EbWaR2Gkv3P9q)Ko0W z2ZvwwbD^))(Q$Ds9_7a`o*j)%ws9!YfacxU(cM9poZA zDi*K~=3qPS?6|Yz&Vo{xtq^QL%KJ<~e~+DP?t38^Q^kEMPXVWu#2Q?Q*(n86c(y-q z7P=lGmy6EtcFAVo6jXp?oMnNuqSLo$1nx=(SGqcGB!d%H5UubG?u!hr%yc_N6Ztqf z8uWdW!EGn9qJN4K`8Z*W827gfuAImwaYjB)+6vs=3{G?dts7TP3UIrsqy;8Q;3!|; zs$jG7&YM7F0>y|4B6^1D>-znuF0N~fSsgSEz65?3dcv*AIm_uN9y!(CK2s%qIYE^ExMH4c<}FeC zs*Cq29}C&;Ms=ygK}#jK*lhXZS-Vf@HfYMNqYVJX=3)dMG6J3&Qq<-=CG#1|HP#PX z6Us76Y=2swZT3kgp0Kdul;thvLTN2~fzs)pwj~U{yvJpa)R?`iTP|bo7j-9B!^-9w zl4YE{;VSM)RAe>CeH)- zO4Jd_LNsXg`eI}zs<}gQ4M-bQEGD7hAFfHnK_z60LW7kT;Kj{KN(T8(&8c;YUZxEO zo=0d%l(fqAAQt(?t6FJGxX-sX=;4OkT&RRBRM>#zdGqI@PNztM$|Eipa#BIk3z;oC zdwYT-!BgjA@#Ck?#-4y1)4@l3O{ZV-P+2A1K~PEZPb<1Q{1ow;ciUqEW{qGdw^bb*&Y!}ksA9Mfn57!Cc*y)KoJ zO`ot}Ve35WAp^ElLuT5U zz<56|F*0mP{Q1P8vpQ>M3NquQg8a;sEm-!#bMw=+kXe$9lGY^_q^mTe)