From 207b3b4e5fb4a1397a15f0b22061ea025e9ff4a1 Mon Sep 17 00:00:00 2001 From: Ryan Zhang Date: Thu, 14 Sep 2017 11:10:32 +0800 Subject: [PATCH] Fizz: add CONFIG_LED_COMMON This is used for factory test with following command 1. ectool command ectool led power query ectool led power green=100 ectool led power red=100 ectool led power amber=100 ectool led power off ectool led power auto 2. console command led debug >> enter debug mode led green led red led amber led off led debug >> exit debug mode BUG=b:65651340 BRANCH=master TEST=`ectool ...` works good Change-Id: Icb87e479075d90f509d60121a3e1df0afe66d41f Signed-off-by: Ryan Zhang Signed-off-by: Daisuke Nojiri Reviewed-on: https://chromium-review.googlesource.com/666418 --- board/fizz/board.h | 1 + board/fizz/led.c | 31 ++++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/board/fizz/board.h b/board/fizz/board.h index 1259dea23d..f988fae2dc 100644 --- a/board/fizz/board.h +++ b/board/fizz/board.h @@ -21,6 +21,7 @@ #define CONFIG_BUTTON_RECOVERY #define CONFIG_DEDICATED_RECOVERY_BUTTON #define CONFIG_EMULATED_SYSRQ +#define CONFIG_LED_COMMON #define CONFIG_KEYBOARD_PROTOCOL_MKBP #define CONFIG_MKBP_USE_HOST_EVENT #define CONFIG_CASE_CLOSED_DEBUG_EXTERNAL diff --git a/board/fizz/led.c b/board/fizz/led.c index 0227f8498f..4c5a778001 100644 --- a/board/fizz/led.c +++ b/board/fizz/led.c @@ -15,7 +15,8 @@ #include "timer.h" #include "util.h" -static int led_debug; +const enum ec_led_id supported_led_ids[] = {EC_LED_ID_POWER_LED}; +const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); enum led_color { LED_OFF = 0, @@ -114,7 +115,7 @@ void led_task(void *u) while (1) { start = get_time().le.lo; - if (!led_debug) + if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED)) led_set_power(); interval = get_time().le.lo - start; if (task_frequency_us > interval) @@ -135,7 +136,8 @@ static void led_init(void) set_task_frequency(40 * MSEC); /* From users' perspective, system-on means AP-on */ - set_color(EC_LED_ID_POWER_LED, LED_OFF, 0); + if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED)) + set_color(EC_LED_ID_POWER_LED, LED_OFF, 0); } /* After pwm_pin_init() */ DECLARE_HOOK(HOOK_INIT, led_init, HOOK_PRIO_DEFAULT); @@ -148,8 +150,8 @@ static int command_led(int argc, char **argv) return EC_ERROR_PARAM_COUNT; if (!strcasecmp(argv[1], "debug")) { - led_debug ^= 1; - ccprintf("led_debug %s\n", led_debug ? "on" : "off"); + led_auto_control(id, !led_auto_control_is_enabled(id)); + ccprintf("o%s\n", led_auto_control_is_enabled(id) ? "ff" : "n"); } else if (!strcasecmp(argv[1], "off")) { set_color(id, LED_OFF, 0); } else if (!strcasecmp(argv[1], "red")) { @@ -171,3 +173,22 @@ DECLARE_CONSOLE_COMMAND(led, command_led, "[debug|red|green|amber|off|num]", "Turn on/off LED. If a number is given, it changes led" "task frequency (msec)."); + +void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) +{ + brightness_range[EC_LED_COLOR_RED] = 100; + brightness_range[EC_LED_COLOR_GREEN] = 100; + brightness_range[EC_LED_COLOR_AMBER] = 100; +} + +int led_set_brightness(enum ec_led_id id, const uint8_t *brightness) +{ + if (brightness[EC_LED_COLOR_RED]) + return set_color(id, LED_RED, brightness[EC_LED_COLOR_RED]); + else if (brightness[EC_LED_COLOR_GREEN]) + return set_color(id, LED_GREEN, brightness[EC_LED_COLOR_GREEN]); + else if (brightness[EC_LED_COLOR_AMBER]) + return set_color(id, LED_AMBER, brightness[EC_LED_COLOR_AMBER]); + else + return set_color(id, LED_OFF, 0); +}