summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2012-05-21 15:21:27 -0700
committerBill Richardson <wfrichar@chromium.org>2012-05-21 16:28:55 -0700
commit40bb0ad88ce5c0fc87180ef3a24c690df3750d08 (patch)
tree0f1a86819bc20047e9f28edb76b6f948444d5aad
parent790d3d87216cb2d00b76f941cd6bcc80c3741069 (diff)
downloadchrome-ec-40bb0ad88ce5c0fc87180ef3a24c690df3750d08.tar.gz
Turn on light bar subtly for factory
BUG=chrome-os-partner:9850 TEST=manual Open the lid. The lightbar should turn on. Change-Id: I14d1316e6b0cac7a7e2f5b08b7d14b6bbdfa5830 Signed-off-by: Bill Richardson <wfrichar@chromium.org>
-rw-r--r--common/lightbar.c100
1 files changed, 30 insertions, 70 deletions
diff --git a/common/lightbar.c b/common/lightbar.c
index a24bae9006..e07eaf7ae4 100644
--- a/common/lightbar.c
+++ b/common/lightbar.c
@@ -119,7 +119,7 @@ static inline uint8_t scale(int val, int max)
static void lightbar_init_vals(void)
{
- CPRINTF("[%T LB init_vals]\n");
+ CPRINTF("[%T LB_init_vals]\n");
set_from_array(init_vals, ARRAY_SIZE(init_vals));
memset(current, 0, sizeof(current));
}
@@ -146,7 +146,7 @@ static void setrgb(int led, int red, int green, int blue)
static void lightbar_off(void)
{
- CPRINTF("[%T LB off]\n");
+ CPRINTF("[%T LB_off]\n");
/* Just go into standby mode. No register values should change. */
controller_write(0, 0x01, 0x00);
controller_write(1, 0x01, 0x00);
@@ -154,7 +154,7 @@ static void lightbar_off(void)
static void lightbar_on(void)
{
- CPRINTF("[%T LB on]\n");
+ CPRINTF("[%T LB_on]\n");
/* Come out of standby mode. */
controller_write(0, 0x01, 0x20);
controller_write(1, 0x01, 0x20);
@@ -176,7 +176,7 @@ static void lightbar_setrgb(int led, int red, int green, int blue)
static inline void lightbar_brightness(int newval)
{
int i;
- CPRINTF("[%T LB bright %d]\n", newval);
+ CPRINTF("[%T LB_bright 0x%02x]\n", newval);
brightness = newval;
for (i = 0; i < NUM_LEDS; i++)
lightbar_setrgb(i, current[i][0],
@@ -213,15 +213,7 @@ static const struct {
/* CPU is off */
static uint32_t sequence_S5(void)
{
- int i;
-
- /* Do something short to indicate S5. We might see it. */
- lightbar_on();
- for (i = 0; i < NUM_LEDS; i++)
- lightbar_setrgb(i, 255, 0, 0);
- WAIT_OR_RET(2000000);
-
- /* Then just wait forever. */
+ /* Just wait forever. */
lightbar_off();
WAIT_OR_RET(-1);
return 0;
@@ -242,33 +234,17 @@ static uint32_t sequence_S5S3(void)
* We might see it. */
lightbar_on();
for (i = 0; i < NUM_LEDS; i++)
- lightbar_setrgb(i, 255, 255, 255);
+ lightbar_setrgb(i, 0, 255, 0);
WAIT_OR_RET(500000);
-
return 0;
}
/* CPU is fully on */
static uint32_t sequence_S0(void)
{
- int l = 0;
- int n = 0;
-
lightbar_on();
-
- while (1) {
- l = l % NUM_LEDS;
- n = n % 5;
- if (n == 4)
- lightbar_setrgb(l, 0, 0, 0);
- else
- lightbar_setrgb(l, testy[n].r,
- testy[n].g, testy[n].b);
- l++;
- n++;
- WAIT_OR_RET(50000);
- }
-
+ lightbar_setrgb(NUM_LEDS, 255, 255, 255);
+ WAIT_OR_RET(-1);
return 0;
}
@@ -276,11 +252,6 @@ static uint32_t sequence_S0(void)
static uint32_t sequence_S0S3(void)
{
lightbar_on();
- lightbar_setrgb(0, 0, 0, 255);
- lightbar_setrgb(1, 255, 0, 0);
- lightbar_setrgb(2, 255, 255, 0);
- lightbar_setrgb(3, 0, 255, 0);
- WAIT_OR_RET(200000);
lightbar_setrgb(0, 0, 0, 0);
WAIT_OR_RET(200000);
lightbar_setrgb(1, 0, 0, 0);
@@ -294,41 +265,31 @@ static uint32_t sequence_S0S3(void)
/* CPU is sleeping */
static uint32_t sequence_S3(void)
{
- int i = 0;
lightbar_off();
lightbar_init_vals();
- lightbar_setrgb(0, 0, 0, 0);
- lightbar_setrgb(1, 0, 0, 0);
- lightbar_setrgb(2, 0, 0, 0);
- lightbar_setrgb(3, 0, 0, 0);
+ lightbar_setrgb(NUM_LEDS, 0, 0, 0);
while (1) {
WAIT_OR_RET(3000000);
lightbar_on();
- i = i % NUM_LEDS;
/* FIXME: indicate battery level? */
- lightbar_setrgb(i, testy[i].r, testy[i].g, testy[i].b);
+ lightbar_setrgb(NUM_LEDS, 255, 255, 255);
WAIT_OR_RET(100000);
- lightbar_setrgb(i, 0, 0, 0);
- i++;
+ lightbar_setrgb(NUM_LEDS, 0, 0, 0);
lightbar_off();
}
-
return 0;
}
/* CPU is waking from sleep */
static uint32_t sequence_S3S0(void)
{
+ int i;
lightbar_init_vals();
lightbar_on();
- lightbar_setrgb(0, 0, 0, 255);
- WAIT_OR_RET(200000);
- lightbar_setrgb(1, 255, 0, 0);
- WAIT_OR_RET(200000);
- lightbar_setrgb(2, 255, 255, 0);
- WAIT_OR_RET(200000);
- lightbar_setrgb(3, 0, 255, 0);
- WAIT_OR_RET(200000);
+ for (i = 0; i < NUM_LEDS; i++) {
+ lightbar_setrgb(i, 255, 255, 255);
+ WAIT_OR_RET(200000);
+ }
return 0;
}
@@ -341,9 +302,8 @@ static uint32_t sequence_S3S5(void)
* We might see it. */
lightbar_on();
for (i = 0; i < NUM_LEDS; i++)
- lightbar_setrgb(i, 0, 0, 255);
+ lightbar_setrgb(i, 255, 0, 0);
WAIT_OR_RET(500000);
-
return 0;
}
@@ -376,7 +336,6 @@ static uint32_t sequence_TEST(void)
WAIT_OR_RET(10000);
}
}
-
return 0;
}
@@ -425,12 +384,11 @@ static uint32_t sequence_STOP(void)
do {
msg = TASK_EVENT_CUSTOM(task_wait_event(-1));
- CPRINTF("[%T LB stop got msg %x]\n", msg);
+ CPRINTF("[%T LB_stop got msg 0x%x]\n", msg);
} while (msg != LIGHTBAR_RUN);
/* FIXME: What should we do if the host shuts down? */
- CPRINTF("[%T LB restarting]\n");
-
+ CPRINTF("[%T LB_stop->running]\n");
return 0;
}
@@ -452,7 +410,6 @@ static uint32_t sequence_ERROR(void)
lightbar_setrgb(3, 255, 255, 255);
WAIT_OR_RET(10000000);
-
return 0;
}
@@ -552,7 +509,6 @@ static uint32_t sequence_KONAMI(void)
}
brightness = tmp;
-
return 0;
}
@@ -591,22 +547,23 @@ void lightbar_task(void)
* reset than out of reset. */
lightbar_init_vals();
lightbar_off();
+ lightbar_brightness(0x40); /* default brightness */
- /* FIXME: What to do first? For now, nothing, followed by more
- nothing. */
- current_state = LIGHTBAR_STOP;
+ current_state = LIGHTBAR_S5;
previous_state = LIGHTBAR_S5;
while (1) {
CPRINTF("[%T LB task %d = %s]\n",
- current_state, lightbar_cmds[current_state]);
+ current_state, lightbar_cmds[current_state].string);
msg = lightbar_cmds[current_state].sequence();
- CPRINTF("[%T LB msg %d]\n", msg);
msg = TASK_EVENT_CUSTOM(msg);
if (msg && msg < LIGHTBAR_NUM_SEQUENCES) {
+ CPRINTF("[%T LB msg %d = %s]\n", msg,
+ lightbar_cmds[msg].string);
previous_state = current_state;
current_state = TASK_EVENT_CUSTOM(msg);
} else {
+ CPRINTF("[%T LB msg %d]\n", msg);
switch (current_state) {
case LIGHTBAR_S5S3:
current_state = LIGHTBAR_S3;
@@ -636,10 +593,13 @@ void lightbar_task(void)
/* Function to request a preset sequence from the lightbar task. */
void lightbar_sequence(enum lightbar_sequence num)
{
- CPRINTF("[%T LB seq %d]\n", num);
- if (num && num < LIGHTBAR_NUM_SEQUENCES)
+ if (num && num < LIGHTBAR_NUM_SEQUENCES) {
+ CPRINTF("[%T LB_seq %d = %s]\n", num,
+ lightbar_cmds[num].string);
task_set_event(TASK_ID_LIGHTBAR,
TASK_EVENT_WAKE | TASK_EVENT_CUSTOM(num), 0);
+ } else
+ CPRINTF("[%T LB_seq %d - ignored]\n", num);
}