summaryrefslogtreecommitdiff
path: root/board/bobba/led.c
diff options
context:
space:
mode:
authorJustin TerAvest <teravest@chromium.org>2018-06-29 14:58:48 -0600
committerchrome-bot <chrome-bot@chromium.org>2018-07-02 15:32:46 -0700
commita2ef0dabfcec633d92d40a817b31dd167246bc3c (patch)
tree561a518a8c5411d57d5f65bffcd8b1fa3570249b /board/bobba/led.c
parent90e5f21c4e104aa7861875dd4b66f2828a578fbb (diff)
downloadchrome-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.c68
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;
+}
+