summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSue Chen <sue.chen@quanta.corp-partner.google.com>2018-11-15 18:37:26 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-11-26 20:31:22 -0800
commit30d83c473e545ca4495ef4118f81a23735a5d4d5 (patch)
treee1f69d6dafdf18ff16f32edb38f6efac20c8b5ea
parent9d1f8bbdcf6d1614ae0962a7168205f63a602a75 (diff)
downloadchrome-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.c39
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)