summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorZick Wei <zick.wei@quanta.corp-partner.google.com>2018-08-30 10:00:37 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-09-02 22:51:05 -0700
commitbe9683a42d06097161ae09919dcfedd218a3c576 (patch)
tree659b4d050e402c317b3970950c4f9651f759c513 /board
parent6fed8a71463c9dfda78872c167ae52d8a330e458 (diff)
downloadchrome-ec-be9683a42d06097161ae09919dcfedd218a3c576.tar.gz
meep: Add Power LED behavior
Add Power LED behavior to meet spec: System is ON(S0):LED solid ON White. System is Suspend/S0ix: LED blink White(1 sec on, 1 sec off). System is OFF: LED OFF. BUG=none BRANCH=none TEST=manual Check Power LED solid on White when system is ON(S0). Check Power LED blink White(1 sec on, 1 sec off) when system is Suspend/S0ix. Check Power LED off when system is OFF. Change-Id: I0e53a51446735dee0296e9f2c5eb3ceb84313720 Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/1196642 Commit-Ready: Devin Lu <Devin.Lu@quantatw.com> Tested-by: Devin Lu <Devin.Lu@quantatw.com> Reviewed-by: Diana Z <dzigterman@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/meep/board.h1
-rw-r--r--board/meep/gpio.inc2
-rw-r--r--board/meep/led.c51
3 files changed, 44 insertions, 10 deletions
diff --git a/board/meep/board.h b/board/meep/board.h
index b11019c086..341c053b52 100644
--- a/board/meep/board.h
+++ b/board/meep/board.h
@@ -28,6 +28,7 @@
#define CONFIG_CMD_ACCEL_INFO
#define CONFIG_LED_COMMON
+#define OCTOPUS_POWER_LED
/* Sensors */
/* TODO(b/111842131): confirm lid accelerometer matches yorp */
diff --git a/board/meep/gpio.inc b/board/meep/gpio.inc
index d48fa9c481..b05068d011 100644
--- a/board/meep/gpio.inc
+++ b/board/meep/gpio.inc
@@ -139,7 +139,7 @@ GPIO(USB2_OTG_ID, PIN(8, 3), GPIO_ODR_LOW) /* USB_OTG */
/* LED */
GPIO(BAT_LED_AMBER_L, PIN(C, 3), GPIO_OUT_HIGH) /* LED_1_L */
GPIO(BAT_LED_WHITE_L, PIN(C, 4), GPIO_OUT_HIGH) /* LED_2_L */
-GPIO(LED_3_L, PIN(D, 7), GPIO_OUT_HIGH)
+GPIO(PWR_LED_WHITE_L, PIN(D, 7), GPIO_OUT_HIGH) /* LED_3_L */
/* Keyboard Backlight */
GPIO(KB_BL_PWR_EN, PIN(6, 2), GPIO_OUT_LOW)
diff --git a/board/meep/led.c b/board/meep/led.c
index 1b2f58c7bd..ccf2f2f045 100644
--- a/board/meep/led.c
+++ b/board/meep/led.c
@@ -34,10 +34,32 @@ const struct led_descriptor
{LED_OFF, 1 * LED_ONE_SEC} },
};
-const enum ec_led_id supported_led_ids[] = { EC_LED_ID_BATTERY_LED };
+const struct led_descriptor
+ led_pwr_state_table[PWR_LED_NUM_STATES][LED_NUM_PHASES] = {
+ [PWR_LED_STATE_ON] = {{EC_LED_COLOR_WHITE, LED_INDEFINITE} },
+ [PWR_LED_STATE_SUSPEND_AC] = {{EC_LED_COLOR_WHITE, 1 * LED_ONE_SEC},
+ {LED_OFF, 1 * LED_ONE_SEC} },
+ [PWR_LED_STATE_SUSPEND_NO_AC] = {{EC_LED_COLOR_WHITE, 1 * LED_ONE_SEC},
+ {LED_OFF, 1 * LED_ONE_SEC} },
+ [PWR_LED_STATE_OFF] = {{LED_OFF, LED_INDEFINITE} },
+};
+
+const enum ec_led_id supported_led_ids[] = {
+ EC_LED_ID_BATTERY_LED,
+ EC_LED_ID_POWER_LED
+};
const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
+void led_set_color_power(enum ec_led_colors color)
+{
+ if (color == EC_LED_COLOR_WHITE)
+ gpio_set_level(GPIO_PWR_LED_WHITE_L, LED_ON_LVL);
+ else
+ /* LED_OFF and unsupported colors */
+ gpio_set_level(GPIO_PWR_LED_WHITE_L, LED_OFF_LVL);
+}
+
void led_set_color_battery(enum ec_led_colors color)
{
switch (color) {
@@ -58,18 +80,29 @@ void led_set_color_battery(enum ec_led_colors color)
void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
{
- brightness_range[EC_LED_COLOR_WHITE] = 1;
- brightness_range[EC_LED_COLOR_AMBER] = 1;
+ if (led_id == EC_LED_ID_BATTERY_LED) {
+ brightness_range[EC_LED_COLOR_WHITE] = 1;
+ brightness_range[EC_LED_COLOR_AMBER] = 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)
{
- if (brightness[EC_LED_COLOR_WHITE] != 0)
- led_set_color_battery(EC_LED_COLOR_WHITE);
- else if (brightness[EC_LED_COLOR_AMBER] != 0)
- led_set_color_battery(EC_LED_COLOR_AMBER);
- else
- led_set_color_battery(LED_OFF);
+ if (led_id == EC_LED_ID_BATTERY_LED) {
+ if (brightness[EC_LED_COLOR_WHITE] != 0)
+ led_set_color_battery(EC_LED_COLOR_WHITE);
+ else if (brightness[EC_LED_COLOR_AMBER] != 0)
+ led_set_color_battery(EC_LED_COLOR_AMBER);
+ else
+ led_set_color_battery(LED_OFF);
+ } else if (led_id == EC_LED_ID_POWER_LED) {
+ if (brightness[EC_LED_COLOR_WHITE] != 0)
+ led_set_color_power(EC_LED_COLOR_WHITE);
+ else
+ led_set_color_power(LED_OFF);
+ }
return EC_SUCCESS;
}