diff options
author | Zick Wei <zick.wei@quanta.corp-partner.google.com> | 2018-08-30 10:00:37 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-09-02 22:51:05 -0700 |
commit | be9683a42d06097161ae09919dcfedd218a3c576 (patch) | |
tree | 659b4d050e402c317b3970950c4f9651f759c513 | |
parent | 6fed8a71463c9dfda78872c167ae52d8a330e458 (diff) | |
download | chrome-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>
-rw-r--r-- | board/meep/board.h | 1 | ||||
-rw-r--r-- | board/meep/gpio.inc | 2 | ||||
-rw-r--r-- | board/meep/led.c | 51 |
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; } |