diff options
author | Sue Chen <sue.chen@quanta.corp-partner.google.com> | 2018-11-15 18:37:26 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-11-26 20:31:22 -0800 |
commit | 30d83c473e545ca4495ef4118f81a23735a5d4d5 (patch) | |
tree | e1f69d6dafdf18ff16f32edb38f6efac20c8b5ea | |
parent | 9d1f8bbdcf6d1614ae0962a7168205f63a602a75 (diff) | |
download | chrome-ec-30d83c473e545ca4495ef4118f81a23735a5d4d5.tar.gz |
Nami: Add new LED behavior for factory mode
The factory mode is indicated by blue on for 2sec & amber on for 2sec.
BUG=none
BRANCH=firmware-nami-10775.B
TEST=Check charge led is blue on 2sec Amber on 2sec when factory testing
Change-Id: Ifc3786151ccef29e709587f8f5b3d3306a6b344f
Signed-off-by: Sue Chen <sue.chen@quanta.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/1351512
Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r-- | board/nami/led.c | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/board/nami/led.c b/board/nami/led.c index 8b02bd3351..c46ae0e5b8 100644 --- a/board/nami/led.c +++ b/board/nami/led.c @@ -49,7 +49,7 @@ enum led_color { LED_AMBER, LED_WHITE, LED_WARM_WHITE, - + LED_FACTORY, /* Number of colors, not a color itself */ LED_COLOR_COUNT }; @@ -101,6 +101,7 @@ typedef struct led_pattern led_patterns[LED_CHARGE_STATE_COUNT] * Discharge in S3/S0ix Pulsing (rising for 2 sec , falling for 2 sec) * Discharge in S5 Off * Battery Error Amber on 1sec off 1sec + * Factory mode White on 2sec, Amber on 2sec */ const static led_patterns battery_pattern_0 = { /* discharging: s0, s3, s5 */ @@ -173,6 +174,7 @@ const static led_patterns power_pattern_2 = { * Discharge in S3: Amber on 1 sec off 3 sec * Discharge in S5: Off * Battery Error: Amber on 1sec off 1sec + * Factory mode : Blue on 2sec, Amber on 2sec */ const static led_patterns battery_pattern_3 = { /* discharging: s0, s3, s5 */ @@ -189,6 +191,8 @@ static led_patterns const *patterns[2]; static struct led_pattern battery_error = {LED_AMBER, BLINK(10)}; /* Pattern for low state of charge. Only battery LED is supported. */ static struct led_pattern low_battery = {LED_WHITE, BLINK(10)}; +/* Pattern for factory mode. Blinking 2-color battery LED. */ +static struct led_pattern battery_factory = {LED_FACTORY, BLINK(20)}; static int low_battery_soc; static void led_charge_hook(void); static enum led_power_state power_state; @@ -196,6 +200,7 @@ static enum led_power_state power_state; static void led_init(void) { uint32_t oem = PROJECT_NAMI; + cbi_get_oem_id(&oem); switch (oem) { @@ -257,12 +262,19 @@ static int set_color_battery(enum led_color color, int duty) led1 = 1; led2 = 1; break; + case LED_FACTORY: + break; default: return EC_ERROR_UNKNOWN; } - pwm_set_duty(PWM_CH_LED1, led1 ? duty : 0); - pwm_set_duty(PWM_CH_LED2, led2 ? duty : 0); + if (color != LED_FACTORY) { + pwm_set_duty(PWM_CH_LED1, led1 ? duty : 0); + pwm_set_duty(PWM_CH_LED2, led2 ? duty : 0); + } else { + pwm_set_duty(PWM_CH_LED1, duty ? 100 : 0); + pwm_set_duty(PWM_CH_LED2, duty ? 0 : 100); + } return EC_SUCCESS; } @@ -395,6 +407,14 @@ static void led_alert(int enable) led_charge_hook(); } +static void led_factory(int enable) +{ + if (enable) + start_tick(EC_LED_ID_BATTERY_LED, &battery_factory); + else + led_charge_hook(); +} + void config_led(enum ec_led_id id, enum led_charge_state charge) { const led_patterns *pattern; @@ -447,6 +467,13 @@ static void call_handler(void) config_led(EC_LED_ID_POWER_LED, 0); led_alert(1); break; + case PWR_STATE_IDLE: + /* External power connected in IDLE. This is also used to show + * factory mode when 'ectool chargecontrol idle' is run during + * factory process. */ + if (charge_get_flags() & CHARGE_FLAG_FORCE_IDLE) + led_factory(1); + break; default: ; } @@ -494,6 +521,7 @@ static int command_led(int argc, char **argv) { enum ec_led_id id = EC_LED_ID_BATTERY_LED; static int alert = 0; + static int factory; if (argc < 2) return EC_ERROR_PARAM_COUNT; @@ -520,13 +548,16 @@ static int command_led(int argc, char **argv) s5(); } else if (!strcasecmp(argv[1], "conf")) { print_config(id); + } else if (!strcasecmp(argv[1], "factory")) { + factory = !factory; + led_factory(factory); } else { return EC_ERROR_PARAM1; } return EC_SUCCESS; } DECLARE_CONSOLE_COMMAND(led, command_led, - "[debug|red|green|amber|off|alert|s0|s3|s5|conf]", + "[debug|red|green|amber|off|alert|s0|s3|s5|conf|factory]", "Turn on/off LED."); void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) |