diff options
author | Bruce <Bruce.Wan@quantatw.com> | 2016-11-22 09:37:41 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-12-02 03:35:05 -0800 |
commit | 20a54ee93dca6f914a356afd12b093d6913e8310 (patch) | |
tree | 991790f48760caa5999c90a5af544ac4f72ed6a9 | |
parent | 73860ca8c8566a3085149e5cd49362ef17fc28f1 (diff) | |
download | chrome-ec-20a54ee93dca6f914a356afd12b093d6913e8310.tar.gz |
pyro: support ectool control
Support ectool control logo led.
BUG=none
BRANCH=none
TEST=check ectool can control led normally.
Change-Id: I627f80db61bc66eba5cf9111dd2c440c5be85592
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/413165
Commit-Ready: Bruce Wan <Bruce.Wan@quantatw.com>
Tested-by: Bruce Wan <Bruce.Wan@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r-- | board/pyro/board.c | 2 | ||||
-rw-r--r-- | board/pyro/led.c | 34 |
2 files changed, 24 insertions, 12 deletions
diff --git a/board/pyro/board.c b/board/pyro/board.c index fd8eaa4fcd..0b1860c521 100644 --- a/board/pyro/board.c +++ b/board/pyro/board.c @@ -142,7 +142,7 @@ BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); /* PWM channels. Must be in the exactly same order as in enum pwm_channel. */ const struct pwm_t pwm_channels[] = { - [PWM_CH_LED_RED] = { 3, PWM_CONFIG_DSLEEP, 100 }, + [PWM_CH_LED_RED] = {3, PWM_CONFIG_DSLEEP | PWM_CONFIG_ACTIVE_LOW, 100}, }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); diff --git a/board/pyro/led.c b/board/pyro/led.c index 2a2be4c867..ec633b4601 100644 --- a/board/pyro/led.c +++ b/board/pyro/led.c @@ -75,8 +75,8 @@ static int led_set_color_battery(enum led_color color) /* Brightness vs. color, in the order of off, red */ static const uint8_t color_brightness[2] = { - [LED_OFF] = 100, - [LED_RED] = 0, + [LED_OFF] = 0, + [LED_RED] = 100, }; static void led_set_color_power(enum led_color color) @@ -93,13 +93,24 @@ void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) { - if (brightness[EC_LED_COLOR_GREEN] != 0) - led_set_color_battery(LED_GREEN); - else if (brightness[EC_LED_COLOR_AMBER] != 0) - led_set_color_battery(LED_AMBER); - else - led_set_color_battery(LED_OFF); - + switch (led_id) { + case EC_LED_ID_BATTERY_LED: + if (brightness[EC_LED_COLOR_GREEN] != 0) + led_set_color_battery(LED_GREEN); + else if (brightness[EC_LED_COLOR_AMBER] != 0) + led_set_color_battery(LED_AMBER); + else + led_set_color_battery(LED_OFF); + break; + case EC_LED_ID_POWER_LED: + if (brightness[EC_LED_COLOR_RED] != 0) + pwm_set_duty(PWM_CH_LED_RED, color_brightness[LED_RED]); + else + pwm_set_duty(PWM_CH_LED_RED, color_brightness[LED_OFF]); + break; + default: + break; + } return EC_SUCCESS; } @@ -141,10 +152,11 @@ static void suspend_led_update_deferred(void) ticks++; + /* 1s gradual on, 1s gradual off, 3s off */ if (ticks <= TICKS_STEP2_DIMMER) { - pwm_set_duty(PWM_CH_LED_RED, (TICKS_STEP2_DIMMER - ticks)*5); + pwm_set_duty(PWM_CH_LED_RED, ticks*5); } else if (ticks <= TICKS_STEP3_OFF) { - pwm_set_duty(PWM_CH_LED_RED, (ticks - TICKS_STEP2_DIMMER)*5); + pwm_set_duty(PWM_CH_LED_RED, (TICKS_STEP3_OFF - ticks)*5); } else { ticks = TICKS_STEP1_BRIGHTER; delay = 3000 * MSEC; |