diff --git a/src/ec/starlabs/merlin/Kconfig b/src/ec/starlabs/merlin/Kconfig index c21ac68a0a..e650c81772 100644 --- a/src/ec/starlabs/merlin/Kconfig +++ b/src/ec/starlabs/merlin/Kconfig @@ -94,6 +94,12 @@ config EC_STARLABS_POWER_LED bool "Enable lowering the brightess of the Power LED" default y help - Select the in the mainboard supports reducing the LED brightness + Select if the mainboard supports reducing the power LED brightness + +config EC_STARLABS_CHARGE_LED + bool "Enable lowering the brightess of the Charge LED" + default y + help + Select if the mainboard supports reducing the charge LED brightness endif diff --git a/src/ec/starlabs/merlin/cfr.h b/src/ec/starlabs/merlin/cfr.h index 51b3adad1a..170ec7a0dd 100644 --- a/src/ec/starlabs/merlin/cfr.h +++ b/src/ec/starlabs/merlin/cfr.h @@ -98,6 +98,13 @@ static const struct sm_object lid_switch = SM_DECLARE_ENUM({ SM_ENUM_VALUE_END }, }); +const struct sm_enum_value led_brightness[] = { + { "Normal", LED_NORMAL }, + { "Reduced", LED_REDUCED }, + { "Off", LED_OFF }, + SM_ENUM_VALUE_END +}; + /* * Power LED Brightness */ @@ -106,9 +113,16 @@ static const struct sm_object power_led = SM_DECLARE_ENUM({ .ui_name = "Power LED Brightness", .ui_helptext = "Control the maximum brightness of the power LED", .default_value = LED_NORMAL, - .values = (const struct sm_enum_value[]) { - { "Normal", LED_NORMAL }, - { "Reduced", LED_REDUCED }, - { "Off", LED_OFF }, - SM_ENUM_VALUE_END }, + .values = led_brightness, +}); + +/* + * Charge LED Brightness + */ +static const struct sm_object charge_led = SM_DECLARE_ENUM({ + .opt_name = "charge_led", + .ui_name = "Charge LED Brightness", + .ui_helptext = "Control the maximum brightness of the charge LED", + .default_value = LED_NORMAL, + .values = led_brightness, }); diff --git a/src/ec/starlabs/merlin/ite.c b/src/ec/starlabs/merlin/ite.c index c239b061ad..953c9e3de6 100644 --- a/src/ec/starlabs/merlin/ite.c +++ b/src/ec/starlabs/merlin/ite.c @@ -345,7 +345,7 @@ static void merlin_init(struct device *dev) * Default: 0 * */ - const uint8_t power_led[] = { + const uint8_t led_brightness[] = { LED_NORMAL, LED_REDUCED, LED_OFF @@ -355,8 +355,27 @@ static void merlin_init(struct device *dev) ec_write(ECRAM_POWER_LED, get_ec_value_from_option("power_led", LED_NORMAL, - power_led, - ARRAY_SIZE(power_led), + led_brightness, + ARRAY_SIZE(led_brightness), + UINT_MAX, + UINT_MAX)); + + /* + * Charge LED Brightness + * + * Setting: charge_led + * + * Values: 0, 1, 2 + * Default: 0 + * + */ + + if (CONFIG(EC_STARLABS_CHARGE_LED)) + ec_write(ECRAM_CHARGE_LED, + get_ec_value_from_option("charge_led", + LED_NORMAL, + led_brightness, + ARRAY_SIZE(led_brightness), UINT_MAX, UINT_MAX)); } diff --git a/src/ec/starlabs/merlin/variants/glk/ecdefs.h b/src/ec/starlabs/merlin/variants/glk/ecdefs.h index ed518f400a..d5bfc037d3 100644 --- a/src/ec/starlabs/merlin/variants/glk/ecdefs.h +++ b/src/ec/starlabs/merlin/variants/glk/ecdefs.h @@ -19,6 +19,7 @@ #define ECRAM_KBL_TIMEOUT 0x1a #define ECRAM_FN_LOCK_STATE 0x2c #define ECRAM_FN_CTRL_REVERSE 0x2d +#define ECRAM_CHARGE_LED dead_code_t(uint8_t) #define ECRAM_MAX_CHARGE dead_code_t(uint8_t) #define ECRAM_FAN_MODE dead_code_t(uint8_t) #define ECRAM_CHARGING_SPEED dead_code_t(uint8_t) diff --git a/src/ec/starlabs/merlin/variants/glkr/ecdefs.h b/src/ec/starlabs/merlin/variants/glkr/ecdefs.h index 6d469b2785..3836820895 100644 --- a/src/ec/starlabs/merlin/variants/glkr/ecdefs.h +++ b/src/ec/starlabs/merlin/variants/glkr/ecdefs.h @@ -22,6 +22,7 @@ #define ECRAM_KBL_TIMEOUT 0x12 #define ECRAM_FN_LOCK_STATE 0x15 #define ECRAM_FN_CTRL_REVERSE 0x13 +#define ECRAM_CHARGE_LED dead_code_t(uint8_t) #define ECRAM_MAX_CHARGE dead_code_t(uint8_t) #define ECRAM_FAN_MODE dead_code_t(uint8_t) #define ECRAM_CHARGING_SPEED dead_code_t(uint8_t) diff --git a/src/ec/starlabs/merlin/variants/kbl/ecdefs.h b/src/ec/starlabs/merlin/variants/kbl/ecdefs.h index b0f743f711..206ccf2715 100644 --- a/src/ec/starlabs/merlin/variants/kbl/ecdefs.h +++ b/src/ec/starlabs/merlin/variants/kbl/ecdefs.h @@ -20,6 +20,7 @@ #define ECRAM_FN_LOCK_STATE 0x2c #define ECRAM_FAN_MODE 0x42 #define ECRAM_FN_CTRL_REVERSE 0x43 +#define ECRAM_CHARGE_LED dead_code_t(uint8_t) #define ECRAM_MAX_CHARGE dead_code_t(uint8_t) #define ECRAM_CHARGING_SPEED dead_code_t(uint8_t) #define ECRAM_LID_SWITCH dead_code_t(uint8_t) diff --git a/src/ec/starlabs/merlin/variants/merlin/ecdefs.h b/src/ec/starlabs/merlin/variants/merlin/ecdefs.h index 4fab635f3d..f924ad0fbf 100644 --- a/src/ec/starlabs/merlin/variants/merlin/ecdefs.h +++ b/src/ec/starlabs/merlin/variants/merlin/ecdefs.h @@ -19,6 +19,7 @@ #define ECRAM_TRACKPAD_STATE 0x0c #define ECRAM_FN_LOCK_STATE 0x0f #define ECRAM_FN_CTRL_REVERSE 0x17 +#define ECRAM_CHARGE_LED 0x18 #define ECRAM_MAX_CHARGE 0x1a #define ECRAM_FAN_MODE 0x1b #define ECRAM_CHARGING_SPEED 0x1d