diff options
author | Kevin K Wong <kevin.k.wong@intel.com> | 2016-03-08 18:10:46 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-04-15 21:29:14 -0700 |
commit | 9ac90eeee909249c63a0800d5aac5d3a924f6d3c (patch) | |
tree | 66427a74db310f8a2ab9c2dd0147d85bd4960b30 | |
parent | afac683448775b4bafad13a60bd3190fee68b6c4 (diff) | |
download | chrome-ec-9ac90eeee909249c63a0800d5aac5d3a924f6d3c.tar.gz |
amenia: update charge LED control
used the same charge LED control as kunimitsu
BUG=none
BRANCH=none
TEST=make buildall, verified LED is changing with AC present.
Change-Id: I20324b21ee832d1187daac2ca57c61b8851f9de3
Signed-off-by: Kevin K Wong <kevin.k.wong@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/331784
Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r-- | board/amenia/board.c | 4 | ||||
-rw-r--r-- | board/amenia/gpio.inc | 4 | ||||
-rw-r--r-- | board/amenia/led.c | 86 |
3 files changed, 44 insertions, 50 deletions
diff --git a/board/amenia/board.c b/board/amenia/board.c index 6121167ebf..767a491883 100644 --- a/board/amenia/board.c +++ b/board/amenia/board.c @@ -322,8 +322,8 @@ void board_hibernate_late(void) int i; const uint32_t hibernate_pins[][2] = { /* Turn off LEDs in hibernate */ - {GPIO_CHARGE_LED_1, GPIO_OUTPUT | GPIO_LOW}, - {GPIO_CHARGE_LED_2, GPIO_OUTPUT | GPIO_LOW}, + {GPIO_BAT_LED_BLUE, GPIO_INPUT | GPIO_PULL_UP}, + {GPIO_BAT_LED_AMBER, GPIO_INPUT | GPIO_PULL_UP}, /* * Set PD wake low so that it toggles high to generate a wake * event once we leave hibernate. diff --git a/board/amenia/gpio.inc b/board/amenia/gpio.inc index 38b076405d..be8cb6b159 100644 --- a/board/amenia/gpio.inc +++ b/board/amenia/gpio.inc @@ -53,8 +53,8 @@ GPIO(I2C3_SDA, PIN(D, 0), GPIO_INPUT) /* B66 * is functional. */ /* LED */ -GPIO(CHARGE_LED_1, PIN(B, 7), GPIO_OUT_LOW) /* A57 - PWM5 for CHARGE_LED1 */ -GPIO(CHARGE_LED_2, PIN(C, 0), GPIO_OUT_LOW) /* B61 - PWM6 for CHARGE_LED2 */ +GPIO(BAT_LED_BLUE, PIN(B, 7), GPIO_OUT_LOW) /* A57 - PWM5 for CHARGE_LED1 */ +GPIO(BAT_LED_AMBER, PIN(C, 0), GPIO_OUT_LOW) /* B61 - PWM6 for CHARGE_LED2 */ /* Power Control*/ GPIO(V5A_EN, PIN(C, 4), GPIO_OUT_LOW) /* B64 - PWM2 for V5A_EN */ diff --git a/board/amenia/led.c b/board/amenia/led.c index 7f65cccd2e..2380366d85 100644 --- a/board/amenia/led.c +++ b/board/amenia/led.c @@ -15,16 +15,16 @@ #include "led_common.h" #include "util.h" -#define BAT_LED_ON 1 -#define BAT_LED_OFF 0 +#define BAT_LED_ON 0 +#define BAT_LED_OFF 1 #define CRITICAL_LOW_BATTERY_PERCENTAGE 3 #define LOW_BATTERY_PERCENTAGE 10 -#define LED_TOTAL_4SECS_TICKS 16 -#define LED_TOTAL_2SECS_TICKS 8 -#define LED_ON_1SEC_TICKS 4 -#define LED_ON_2SECS_TICKS 8 +#define LED_TOTAL_4SECS_TICKS 4 +#define LED_TOTAL_2SECS_TICKS 2 +#define LED_ON_1SEC_TICKS 1 +#define LED_ON_2SECS_TICKS 2 const enum ec_led_id supported_led_ids[] = { EC_LED_ID_BATTERY_LED}; @@ -33,9 +33,8 @@ const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); enum led_color { LED_OFF = 0, - LED_RED, + LED_BLUE, LED_AMBER, - LED_GREEN, LED_COLOR_COUNT /* Number of colors, not a color itself */ }; @@ -43,20 +42,16 @@ static int bat_led_set_color(enum led_color color) { switch (color) { case LED_OFF: - gpio_set_level(GPIO_BAT_LED_RED, BAT_LED_OFF); - gpio_set_level(GPIO_BAT_LED_GREEN, BAT_LED_OFF); + gpio_set_level(GPIO_BAT_LED_BLUE, BAT_LED_OFF); + gpio_set_level(GPIO_BAT_LED_AMBER, BAT_LED_OFF); break; - case LED_RED: - gpio_set_level(GPIO_BAT_LED_RED, BAT_LED_ON); - gpio_set_level(GPIO_BAT_LED_GREEN, BAT_LED_OFF); + case LED_BLUE: + gpio_set_level(GPIO_BAT_LED_BLUE, BAT_LED_ON); + gpio_set_level(GPIO_BAT_LED_AMBER, BAT_LED_OFF); break; case LED_AMBER: - gpio_set_level(GPIO_BAT_LED_RED, BAT_LED_ON); - gpio_set_level(GPIO_BAT_LED_GREEN, BAT_LED_ON); - break; - case LED_GREEN: - gpio_set_level(GPIO_BAT_LED_RED, BAT_LED_OFF); - gpio_set_level(GPIO_BAT_LED_GREEN, BAT_LED_ON); + gpio_set_level(GPIO_BAT_LED_BLUE, BAT_LED_OFF); + gpio_set_level(GPIO_BAT_LED_AMBER, BAT_LED_ON); break; default: return EC_ERROR_UNKNOWN; @@ -66,23 +61,23 @@ static int bat_led_set_color(enum led_color color) void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) { - brightness_range[EC_LED_COLOR_RED] = 1; - brightness_range[EC_LED_COLOR_GREEN] = 1; + brightness_range[EC_LED_COLOR_BLUE] = 1; + brightness_range[EC_LED_COLOR_AMBER] = 1; } -static int amenia_led_set_color_battery(enum led_color color) +static int led_set_color_battery(enum led_color color) { return bat_led_set_color(color); } -static int amenia_led_set_color(enum ec_led_id led_id, enum led_color color) +static int led_set_color(enum ec_led_id led_id, enum led_color color) { int rv; led_auto_control(led_id, 0); switch (led_id) { case EC_LED_ID_BATTERY_LED: - rv = amenia_led_set_color_battery(color); + rv = led_set_color_battery(color); break; default: return EC_ERROR_UNKNOWN; @@ -92,20 +87,17 @@ static int amenia_led_set_color(enum ec_led_id led_id, enum led_color color) int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) { - if (brightness[EC_LED_COLOR_RED] != 0 && - brightness[EC_LED_COLOR_GREEN] != 0) - amenia_led_set_color(led_id, LED_AMBER); - else if (brightness[EC_LED_COLOR_RED] != 0) - amenia_led_set_color(led_id, LED_RED); - else if (brightness[EC_LED_COLOR_GREEN] != 0) - amenia_led_set_color(led_id, LED_GREEN); + if (brightness[EC_LED_COLOR_BLUE] != 0) + led_set_color(led_id, LED_BLUE); + else if (brightness[EC_LED_COLOR_AMBER] != 0) + led_set_color(led_id, LED_AMBER); else - amenia_led_set_color(led_id, LED_OFF); + led_set_color(led_id, LED_OFF); return EC_SUCCESS; } -static void amenia_led_set_battery(void) +static void led_set_battery(void) { static int battery_ticks; uint32_t chflags = charge_get_flags(); @@ -118,37 +110,39 @@ static void amenia_led_set_battery(void) */ switch (charge_get_state()) { case PWR_STATE_CHARGE: - amenia_led_set_color_battery(LED_AMBER); + led_set_color_battery(LED_AMBER); break; case PWR_STATE_DISCHARGE: /* Less than 3%, blink one second every two second */ - if (charge_get_percent() < CRITICAL_LOW_BATTERY_PERCENTAGE) - amenia_led_set_color_battery( + if (!chipset_in_state(CHIPSET_STATE_ANY_OFF) && + charge_get_percent() < CRITICAL_LOW_BATTERY_PERCENTAGE) + led_set_color_battery( (battery_ticks % LED_TOTAL_2SECS_TICKS < LED_ON_1SEC_TICKS) ? LED_AMBER : LED_OFF); /* Less than 10%, blink one second every four seconds */ - else if (charge_get_percent() < LOW_BATTERY_PERCENTAGE) - amenia_led_set_color_battery( + else if (!chipset_in_state(CHIPSET_STATE_ANY_OFF) && + charge_get_percent() < LOW_BATTERY_PERCENTAGE) + led_set_color_battery( (battery_ticks % LED_TOTAL_4SECS_TICKS < LED_ON_1SEC_TICKS) ? LED_AMBER : LED_OFF); else - amenia_led_set_color_battery(LED_OFF); + led_set_color_battery(LED_OFF); break; case PWR_STATE_ERROR: - amenia_led_set_color_battery( + led_set_color_battery( (battery_ticks % LED_TOTAL_2SECS_TICKS < - LED_ON_1SEC_TICKS) ? LED_RED : LED_OFF); + LED_ON_1SEC_TICKS) ? LED_AMBER : LED_OFF); break; case PWR_STATE_CHARGE_NEAR_FULL: - amenia_led_set_color_battery(LED_GREEN); + led_set_color_battery(LED_BLUE); break; case PWR_STATE_IDLE: /* External power connected in IDLE */ if (chflags & CHARGE_FLAG_FORCE_IDLE) - amenia_led_set_color_battery( + led_set_color_battery( (battery_ticks % LED_TOTAL_4SECS_TICKS < - LED_ON_2SECS_TICKS) ? LED_GREEN : LED_AMBER); + LED_ON_2SECS_TICKS) ? LED_AMBER : LED_BLUE); else - amenia_led_set_color_battery(LED_GREEN); + led_set_color_battery(LED_BLUE); break; default: /* Other states don't alter LED behavior */ @@ -160,6 +154,6 @@ static void amenia_led_set_battery(void) static void led_second(void) { if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED)) - amenia_led_set_battery(); + led_set_battery(); } DECLARE_HOOK(HOOK_SECOND, led_second, HOOK_PRIO_DEFAULT); |