From 80861a9f69998c1d760cef536a9b078cf82bdd99 Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Fri, 17 Oct 2025 11:07:28 -0500 Subject: [PATCH] mb/starlabs/starlite_adl: Add CFR option for USB card reader Add a CFR setup menu option to enable/disable the USB micro-SD card reader, but restrict it to newer boards which use the MXC accelerometer, as those boards have the card reader on USB2 port 4, rather than shared with the detachable keyboard on port 3. TEST=build/boot on starlite_adl boards with and without the MXC accelerometer, verify only boards with it have the CFR option to disable the card reader shown, and that the option works as expected. Change-Id: I9255d008c6f322d01390ed9f19e4e963cf04eeb6 Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/89626 Tested-by: build bot (Jenkins) Reviewed-by: Sean Rhodes --- src/mainboard/starlabs/starlite_adl/cfr.c | 19 +++++++++++++++++++ .../starlite_adl/variants/mk_v/devicetree.cb | 4 +++- .../starlite_adl/variants/mk_v/devtree.c | 4 ++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/mainboard/starlabs/starlite_adl/cfr.c b/src/mainboard/starlabs/starlite_adl/cfr.c index 2e36e99b6f..a7ebe498aa 100644 --- a/src/mainboard/starlabs/starlite_adl/cfr.c +++ b/src/mainboard/starlabs/starlite_adl/cfr.c @@ -5,6 +5,9 @@ #include #include #include +#include +#include +#include #include static const struct sm_object accelerometer = SM_DECLARE_BOOL({ @@ -14,6 +17,21 @@ static const struct sm_object accelerometer = SM_DECLARE_BOOL({ .default_value = true, }); +static void update_card_reader(const struct sm_object *obj, struct sm_object *new) +{ + struct device *mxc_accel = DEV_PTR(mxc6655); + + if (!i2c_dev_detect(i2c_busdev(mxc_accel), mxc_accel->path.i2c.device)) + new->sm_bool.flags = CFR_OPTFLAG_SUPPRESS; +} + +static const struct sm_object card_reader = SM_DECLARE_BOOL({ + .opt_name = "card_reader", + .ui_name = "Card Reader", + .ui_helptext = "Enable or disable the built-in card reader", + .default_value = true, +}, WITH_CALLBACK(update_card_reader)); + #if CONFIG(SOC_INTEL_TIGERLAKE) || CONFIG(SOC_INTEL_ALDERLAKE) || CONFIG(SOC_INTEL_RAPTORLAKE) static const struct sm_object gna = SM_DECLARE_BOOL({ .opt_name = "gna", @@ -147,6 +165,7 @@ static struct sm_obj_form devices = { .ui_name = "Devices", .obj_list = (const struct sm_object *[]) { &accelerometer, + &card_reader, &display_native_res, #if CONFIG(SOC_INTEL_TIGERLAKE) || CONFIG(SOC_INTEL_ALDERLAKE) || CONFIG(SOC_INTEL_RAPTORLAKE) &gna, diff --git a/src/mainboard/starlabs/starlite_adl/variants/mk_v/devicetree.cb b/src/mainboard/starlabs/starlite_adl/variants/mk_v/devicetree.cb index 598e2724d0..857d626197 100644 --- a/src/mainboard/starlabs/starlite_adl/variants/mk_v/devicetree.cb +++ b/src/mainboard/starlabs/starlite_adl/variants/mk_v/devicetree.cb @@ -85,6 +85,8 @@ chip soc/intel/alderlake # Internal Bluetooth 1874 mil register "usb2_ports[9]" = "USB2_PORT_SHORT(OC_SKIP)" + register "usb2_ports[3]" = "USB2_PORT_MID(OC_SKIP)" + chip drivers/usb/acpi device ref xhci_root_hub on chip drivers/usb/acpi @@ -167,7 +169,7 @@ chip soc/intel/alderlake register "has_rotation_matrix" = "1" register "rotation_matrix" = "{1, 0, 0, 0, -1, 0, 0, 0, 1}" register "detect" = "1" - device i2c 15 on end + device i2c 15 alias mxc6655 on end end end device ref i2c2 on # Touchscreen diff --git a/src/mainboard/starlabs/starlite_adl/variants/mk_v/devtree.c b/src/mainboard/starlabs/starlite_adl/variants/mk_v/devtree.c index 08359ee7b1..8252d61756 100644 --- a/src/mainboard/starlabs/starlite_adl/variants/mk_v/devtree.c +++ b/src/mainboard/starlabs/starlite_adl/variants/mk_v/devtree.c @@ -72,4 +72,8 @@ void devtree_update(void) /* Enable/Disable GNA based on CMOS settings */ if (get_uint_option("gna", 0) == 0) gna_dev->enabled = 0; + + /* Enable/Disable Card Reader based on CMOS Settings */ + if (get_uint_option("card_reader", 1) == 0) + cfg->usb2_ports[3].enable = 0; }