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; }