summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce <Bruce.Wan@quantatw.com>2016-11-22 09:37:41 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-12-02 03:35:05 -0800
commit20a54ee93dca6f914a356afd12b093d6913e8310 (patch)
tree991790f48760caa5999c90a5af544ac4f72ed6a9
parent73860ca8c8566a3085149e5cd49362ef17fc28f1 (diff)
downloadchrome-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.c2
-rw-r--r--board/pyro/led.c34
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;