From 781a8a98f105ed40199863f90e7243f8eee382e8 Mon Sep 17 00:00:00 2001 From: Sean Rhodes Date: Fri, 30 Jan 2026 20:02:57 +0000 Subject: [PATCH] starlabs/starlite_adl: hide touchscreen CFR when accel off The touchscreen device is dependent on the accelerometer on starlite_adl, so offer the touchscreen CFR option only when the accelerometer option is enabled. Implement a new weak cfr_touchscreen_update() callback in the starlabs common CFR code and override it in starlite_adl to suppress the touchscreen option when accelerometer is disabled Change-Id: I4bab6ccb92c40190014ab55200ff214064d5d2ae Signed-off-by: Sean Rhodes Reviewed-on: https://review.coreboot.org/c/coreboot/+/91024 Tested-by: build bot (Jenkins) Reviewed-by: Matt DeVillier --- src/mainboard/starlabs/common/cfr/cfr.c | 5 +++++ src/mainboard/starlabs/common/include/common/cfr.h | 3 ++- src/mainboard/starlabs/starlite_adl/cfr.c | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/mainboard/starlabs/common/cfr/cfr.c b/src/mainboard/starlabs/common/cfr/cfr.c index 70899d21b1..44ee68323e 100644 --- a/src/mainboard/starlabs/common/cfr/cfr.c +++ b/src/mainboard/starlabs/common/cfr/cfr.c @@ -9,6 +9,11 @@ void __weak cfr_card_reader_update(struct sm_object *new_obj) (void)new_obj; } +void __weak cfr_touchscreen_update(struct sm_object *new_obj) +{ + (void)new_obj; +} + static const struct cfr_default_override starlabs_cfr_overrides[] = { CFR_OVERRIDE_ENUM("pciexp_aspm", ASPM_L0S_L1), CFR_OVERRIDE_END diff --git a/src/mainboard/starlabs/common/include/common/cfr.h b/src/mainboard/starlabs/common/include/common/cfr.h index 4613b94fbd..b62b39701e 100644 --- a/src/mainboard/starlabs/common/include/common/cfr.h +++ b/src/mainboard/starlabs/common/include/common/cfr.h @@ -8,6 +8,7 @@ #include void cfr_card_reader_update(struct sm_object *new_obj); +void cfr_touchscreen_update(struct sm_object *new_obj); void starlabs_cfr_register_overrides(void); static const struct sm_object accelerometer = SM_DECLARE_BOOL({ @@ -131,7 +132,7 @@ static const struct sm_object touchscreen = SM_DECLARE_BOOL({ .ui_name = "Touchscreen", .ui_helptext = "Enable or disable the built-in touch-screen", .default_value = true, -}); +}, WITH_CALLBACK(cfr_touchscreen_update)); static const struct sm_object vpu = SM_DECLARE_BOOL({ .opt_name = "vpu", diff --git a/src/mainboard/starlabs/starlite_adl/cfr.c b/src/mainboard/starlabs/starlite_adl/cfr.c index 9526992fd5..004cd75945 100644 --- a/src/mainboard/starlabs/starlite_adl/cfr.c +++ b/src/mainboard/starlabs/starlite_adl/cfr.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -19,6 +20,12 @@ void cfr_card_reader_update(struct sm_object *new_obj) new_obj->sm_bool.flags = CFR_OPTFLAG_SUPPRESS; } +void cfr_touchscreen_update(struct sm_object *new_obj) +{ + if (get_uint_option("accelerometer", 1) == 0) + new_obj->sm_bool.flags = CFR_OPTFLAG_SUPPRESS; +} + static struct sm_obj_form performance_group = { .ui_name = "Performance", .obj_list = (const struct sm_object *[]) {