diff options
author | Justin TerAvest <teravest@chromium.org> | 2018-06-29 14:58:48 -0600 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-07-02 15:32:46 -0700 |
commit | a2ef0dabfcec633d92d40a817b31dd167246bc3c (patch) | |
tree | 561a518a8c5411d57d5f65bffcd8b1fa3570249b /board/bobba/led.c | |
parent | 90e5f21c4e104aa7861875dd4b66f2828a578fbb (diff) | |
download | chrome-ec-a2ef0dabfcec633d92d40a817b31dd167246bc3c.tar.gz |
bobba: initial files commit
The contents of Bobba are copied from yorp, with the exception of
board.c and gpio.inc, which were modified to always use V1 settings.
Bobba proto is equivalent to yorp proto2.
BRANCH=none
BUG=b:110781720
TEST=build
Change-Id: I10937ef6eb8b20fc5e58c3871c679fc80bdcca70
Signed-off-by: Justin TerAvest <teravest@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1121110
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'board/bobba/led.c')
-rw-r--r-- | board/bobba/led.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/board/bobba/led.c b/board/bobba/led.c new file mode 100644 index 0000000000..4a06831425 --- /dev/null +++ b/board/bobba/led.c @@ -0,0 +1,68 @@ +/* Copyright 2018 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * Power and battery LED control for Bobba + */ + +#include "ec_commands.h" +#include "gpio.h" +#include "led_common.h" +#include "led_states.h" + +#define LED_OFF_LVL 1 +#define LED_ON_LVL 0 + +/* Bobba: Note there is only LED for charge / power */ +const struct led_descriptor + led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = { + [STATE_CHARGING] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} }, + [STATE_CHARGING_FULL_CHARGE] = {{EC_LED_COLOR_BLUE, LED_INDEFINITE} }, + [STATE_DISCHARGE_S0] = {{EC_LED_COLOR_BLUE, LED_INDEFINITE} }, + [STATE_DISCHARGE_S3] = {{EC_LED_COLOR_AMBER, 4 * LED_ONE_SEC}, + {LED_OFF, 1 * LED_ONE_SEC} }, + [STATE_DISCHARGE_S5] = {{LED_OFF, LED_INDEFINITE} }, + [STATE_BATTERY_ERROR] = {{EC_LED_COLOR_BLUE, 2 * LED_ONE_SEC}, + {EC_LED_COLOR_AMBER, 2 * LED_ONE_SEC} }, +}; + +const enum ec_led_id supported_led_ids[] = { EC_LED_ID_BATTERY_LED }; + +const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); + +void led_set_color_battery(enum ec_led_colors color) +{ + switch (color) { + case EC_LED_COLOR_BLUE: + gpio_set_level(GPIO_BAT_LED_BLUE_L, LED_ON_LVL); + gpio_set_level(GPIO_BAT_LED_ORANGE_L, LED_OFF_LVL); + break; + case EC_LED_COLOR_AMBER: + gpio_set_level(GPIO_BAT_LED_BLUE_L, LED_OFF_LVL); + gpio_set_level(GPIO_BAT_LED_ORANGE_L, LED_ON_LVL); + break; + default: /* LED_OFF and other unsupported colors */ + gpio_set_level(GPIO_BAT_LED_BLUE_L, LED_OFF_LVL); + gpio_set_level(GPIO_BAT_LED_ORANGE_L, LED_OFF_LVL); + break; + } +} + +void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) +{ + brightness_range[EC_LED_COLOR_BLUE] = 1; + brightness_range[EC_LED_COLOR_AMBER] = 1; +} + +int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) +{ + if (brightness[EC_LED_COLOR_BLUE] != 0) + led_set_color_battery(EC_LED_COLOR_BLUE); + else if (brightness[EC_LED_COLOR_AMBER] != 0) + led_set_color_battery(EC_LED_COLOR_AMBER); + else + led_set_color_battery(LED_OFF); + + return EC_SUCCESS; +} + |