diff options
author | Nicolas Boichat <drinkcat@google.com> | 2017-06-03 14:05:19 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-06-03 03:57:39 -0700 |
commit | 698cf1e2682ca8e13f1af9aeba4351add610d86f (patch) | |
tree | 5fa4295ef1f97354845baf18c6397998cbdbac14 | |
parent | 35f4d8acaa40050f10158459a04e0bf9b24149c6 (diff) | |
download | chrome-ec-698cf1e2682ca8e13f1af9aeba4351add610d86f.tar.gz |
poppy: Update led control logic to obey manual controls
Also fix color name mixup.
BRANCH=none
BUG=b:37970194
TEST=ectool [left|right] [white|amber|auto] work fine
TEST=left/right LED still light up properly when charging
Change-Id: I330dc70d057b73da799b30762873dedb119da4d8
Reviewed-on: https://chromium-review.googlesource.com/523203
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Shen-En Shih <petershih@chromium.org>
-rw-r--r-- | board/poppy/led.c | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/board/poppy/led.c b/board/poppy/led.c index 0219cce908..aebd25c60f 100644 --- a/board/poppy/led.c +++ b/board/poppy/led.c @@ -43,7 +43,7 @@ static void side_led_set_color(int port, enum led_color color) void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) { - brightness_range[EC_LED_COLOR_YELLOW] = 1; + brightness_range[EC_LED_COLOR_AMBER] = 1; brightness_range[EC_LED_COLOR_WHITE] = 1; } @@ -64,7 +64,7 @@ int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) if (brightness[EC_LED_COLOR_WHITE] != 0) side_led_set_color(port, LED_WHITE); - else if (brightness[EC_LED_COLOR_YELLOW] != 0) + else if (brightness[EC_LED_COLOR_AMBER] != 0) side_led_set_color(port, LED_AMBER); else side_led_set_color(port, LED_OFF); @@ -80,8 +80,10 @@ static void set_active_port_color(enum led_color color) { int port = charge_manager_get_active_charge_port(); - side_led_set_color(0, (port == 0) ? color : LED_OFF); - side_led_set_color(1, (port == 1) ? color : LED_OFF); + if (led_auto_control_is_enabled(EC_LED_ID_LEFT_LED)) + side_led_set_color(0, (port == 0) ? color : LED_OFF); + if (led_auto_control_is_enabled(EC_LED_ID_RIGHT_LED)) + side_led_set_color(1, (port == 1) ? color : LED_OFF); } static void board_led_set_battery(void) @@ -101,13 +103,16 @@ static void board_led_set_battery(void) * TODO(b/37970194): Do we really want to blink on low battery? * If yes, what's the threshold? In S0 only? */ - if (charge_get_percent() < 12) - side_led_set_color(0, - (battery_ticks & 0x4) ? LED_WHITE : LED_OFF); - else - side_led_set_color(0, LED_OFF); + if (led_auto_control_is_enabled(EC_LED_ID_LEFT_LED)) { + if (charge_get_percent() < 12) + side_led_set_color(0, + (battery_ticks & 0x4) ? LED_WHITE : LED_OFF); + else + side_led_set_color(0, LED_OFF); + } - side_led_set_color(1, LED_OFF); + if (led_auto_control_is_enabled(EC_LED_ID_RIGHT_LED)) + side_led_set_color(1, LED_OFF); break; case PWR_STATE_ERROR: set_active_port_color((battery_ticks & 0x2) ? @@ -132,8 +137,7 @@ static void board_led_set_battery(void) /* Called by hook task every TICK */ static void led_tick(void) { - if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED)) - board_led_set_battery(); + board_led_set_battery(); } DECLARE_HOOK(HOOK_TICK, led_tick, HOOK_PRIO_DEFAULT); @@ -143,14 +147,16 @@ void led_control(enum ec_led_id led_id, enum ec_led_state state) enum led_color color; if (state == LED_STATE_RESET) { - led_auto_control(EC_LED_ID_BATTERY_LED, 1); + led_auto_control(EC_LED_ID_LEFT_LED, 1); + led_auto_control(EC_LED_ID_RIGHT_LED, 1); board_led_set_battery(); return; } color = state ? LED_WHITE : LED_OFF; - led_auto_control(EC_LED_ID_BATTERY_LED, 0); + led_auto_control(EC_LED_ID_LEFT_LED, 0); + led_auto_control(EC_LED_ID_RIGHT_LED, 0); side_led_set_color(0, color); side_led_set_color(1, color); |