diff options
-rw-r--r-- | zephyr/projects/corsola/src/krabby/led.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/zephyr/projects/corsola/src/krabby/led.c b/zephyr/projects/corsola/src/krabby/led.c index d07ec46004..7b3aaf095b 100644 --- a/zephyr/projects/corsola/src/krabby/led.c +++ b/zephyr/projects/corsola/src/krabby/led.c @@ -3,11 +3,13 @@ * found in the LICENSE file. */ +#include "chipset.h" #include "ec_commands.h" #include "gpio.h" +#include "hooks.h" #include "led_common.h" #include "led_onoff_states.h" -#include "chipset.h" +#include "pwm.h" __override const int led_charge_lvl_1 = 5; __override const int led_charge_lvl_2 = 95; @@ -46,16 +48,29 @@ const enum ec_led_id supported_led_ids[] = { const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); +const enum pwm_channel LED_POWER_WHITE = NAMED_PWM(ec_led1_odl); +const enum pwm_channel LED_BATTERY_AMBER = NAMED_PWM(ec_led2_odl); +const enum pwm_channel LED_BATTERY_WHITE = NAMED_PWM(ec_led3_odl); + __override void led_set_color_battery(enum ec_led_colors color) { + pwm_enable(LED_BATTERY_AMBER, color == EC_LED_COLOR_AMBER); + pwm_enable(LED_BATTERY_WHITE, color == EC_LED_COLOR_WHITE); } __override void led_set_color_power(enum ec_led_colors color) { + pwm_enable(LED_POWER_WHITE, color == EC_LED_COLOR_WHITE); } void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) { + if (led_id == EC_LED_ID_BATTERY_LED) { + brightness_range[EC_LED_COLOR_AMBER] = 1; + brightness_range[EC_LED_COLOR_WHITE] = 1; + } else if (led_id == EC_LED_ID_POWER_LED) { + brightness_range[EC_LED_COLOR_WHITE] = 1; + } } int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) @@ -77,15 +92,10 @@ int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) return EC_SUCCESS; } -__override enum led_states board_led_get_state(enum led_states desired_state) +void board_led_init(void) { - if (desired_state == STATE_BATTERY_ERROR) { - if (chipset_in_state(CHIPSET_STATE_ON)) - return desired_state; - else if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) - return STATE_DISCHARGE_S3; - else - return STATE_DISCHARGE_S5; - } - return desired_state; + pwm_set_duty(LED_POWER_WHITE, 100); + pwm_set_duty(LED_BATTERY_AMBER, 100); + pwm_set_duty(LED_BATTERY_WHITE, 100); } +DECLARE_HOOK(HOOK_INIT, board_led_init, HOOK_PRIO_DEFAULT); |