Remove PULSE and TEST sequences from lightbar module

PULSE and TEST sequences are not used anywhere. Remove them to save
flash space. Also, fix msleep(MSEC) calls in the unit test; it's
essentially usleep(SECOND) written in an incorrect way.

BUG=chrome-os-partner:32203
TEST=make buildall
BRANCH=None

Change-Id: I61ba897df632538eb89364a4c913d5fee87f3864
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/220711
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
This commit is contained in:
Vic Yang
2014-10-01 10:33:29 +08:00
committed by chrome-internal-fetch
parent a3ddf04ca9
commit 91cfdd0dac
6 changed files with 50 additions and 161 deletions

View File

@@ -223,32 +223,6 @@ void lb_on(void)
controller_write(1, 0x01, 0x20);
}
/*
* This sets up the auto-cycling features of the controllers to make a
* semi-random pattern of slowly fading colors. This is interesting only
* because it doesn't require any effort from the EC.
*/
void lb_start_builtin_cycle(void)
{
int r = scale(255, MAX_RED);
int g = scale(255, MAX_BLUE);
int b = scale(255, MAX_GREEN);
struct initdata_s pulse_vals[] = {
{0x11, 0xce},
{0x12, 0x67},
{0x13, 0xef},
{0x15, b},
{0x16, r},
{0x17, g},
{0x18, b},
{0x19, r},
{0x1a, g},
};
set_from_array(pulse_vals, ARRAY_SIZE(pulse_vals));
controller_write(1, 0x13, 0xcd); /* this one's different */
}
static const uint8_t dump_reglist[] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0f,

View File

@@ -639,75 +639,6 @@ static uint32_t sequence_S5(void)
return 0;
}
/* Used by factory. */
static uint32_t sequence_TEST_inner(void)
{
int i, k, r, g, b;
int kmax = 254;
int kstep = 8;
static const struct rgb_s testcolors[] = {
{0xff, 0x00, 0x00},
{0xff, 0xff, 0x00},
{0x00, 0xff, 0x00},
{0x00, 0x00, 0xff},
{0x00, 0xff, 0xff},
{0xff, 0x00, 0xff},
{0xff, 0xff, 0xff},
};
lb_init();
lb_on();
for (i = 0; i < ARRAY_SIZE(testcolors); i++) {
for (k = 0; k <= kmax; k += kstep) {
r = testcolors[i].r ? k : 0;
g = testcolors[i].g ? k : 0;
b = testcolors[i].b ? k : 0;
lb_set_rgb(NUM_LEDS, r, g, b);
WAIT_OR_RET(10000);
}
for (k = kmax; k >= 0; k -= kstep) {
r = testcolors[i].r ? k : 0;
g = testcolors[i].g ? k : 0;
b = testcolors[i].b ? k : 0;
lb_set_rgb(NUM_LEDS, r, g, b);
WAIT_OR_RET(10000);
}
}
lb_set_rgb(NUM_LEDS, 0, 0, 0);
return 0;
}
static uint32_t sequence_TEST(void)
{
int tmp;
uint32_t r;
/* Force brightness to max, then restore it */
tmp = lb_get_brightness();
lb_set_brightness(255);
r = sequence_TEST_inner();
lb_set_brightness(tmp);
return r;
}
static uint32_t sequence_PULSE(void)
{
uint32_t msg;
lb_init();
lb_on();
lb_start_builtin_cycle();
/* Not using WAIT_OR_RET() here, because we want to clean up when we're
* done. The only way out is to get a message. */
msg = task_wait_event(-1);
lb_init();
return TASK_EVENT_CUSTOM(msg);
}
/* The AP is going to poke at the lightbar directly, so we don't want the EC
* messing with it. We'll just sit here and ignore all other messages until
* we're told to continue (or until we think the AP is shutting down).
@@ -1351,7 +1282,6 @@ void lightbar_task(void)
case LIGHTBAR_S3S5:
st.cur_seq = LIGHTBAR_S5;
break;
case LIGHTBAR_TEST:
case LIGHTBAR_STOP:
case LIGHTBAR_RUN:
case LIGHTBAR_ERROR:

View File

@@ -233,7 +233,6 @@ void lb_on(void)
fake_power = 1;
update_window();
};
void lb_start_builtin_cycle(void) { };
void lb_hc_cmd_dump(struct ec_response_lightbar *out)
{
printf("lightbar is %s\n", fake_power ? "on" : "off");

View File

@@ -28,8 +28,6 @@ void lb_init(void);
void lb_off(void);
/* Enable the LED current. */
void lb_on(void);
/* Instruct the IC to run a built-in sequence of color changes. */
void lb_start_builtin_cycle(void);
/* Fill in the response fields for the LIGHTBAR_CMD_DUMP command. */
void lb_hc_cmd_dump(struct ec_response_lightbar *out);
/* Write the IC controller register given by the LIGHTBAR_CMD_REG command. */

View File

@@ -17,8 +17,6 @@
LBMSG(S3S5), /* 7 */ \
LBMSG(STOP), /* 8 */ \
LBMSG(RUN), /* 9 */ \
LBMSG(PULSE), /* A */ \
LBMSG(TEST), /* B */ \
LBMSG(KONAMI), /* C */ \
LBMSG(TAP), /* D */ \
LBMSG(PROGRAM), /* E */
LBMSG(KONAMI), /* A */ \
LBMSG(TAP), /* B */ \
LBMSG(PROGRAM), /* C */

View File

@@ -56,69 +56,69 @@ static int test_double_oneshots(void)
{
/* Start in S0 */
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
/* Invoke the oneshot */
TEST_ASSERT(set_seq(LIGHTBAR_TEST) == EC_RES_SUCCESS);
msleep(MSEC);
TEST_ASSERT(get_seq() == LIGHTBAR_TEST);
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
/* Switch to a different oneshot while that one's running */
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
/* Afterwards, it should go back to the original normal state */
msleep(30 * MSEC);
usleep(30 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
/* Same test, but with a bunch more oneshots. */
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
TEST_ASSERT(set_seq(LIGHTBAR_TEST) == EC_RES_SUCCESS);
msleep(MSEC);
TEST_ASSERT(get_seq() == LIGHTBAR_TEST);
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
TEST_ASSERT(set_seq(LIGHTBAR_PULSE) == EC_RES_SUCCESS);
msleep(MSEC);
TEST_ASSERT(get_seq() == LIGHTBAR_PULSE);
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
/* It should still go back to the original normal state */
msleep(30 * MSEC);
usleep(30 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
/* But if the interruption is a normal state, that should stick. */
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
TEST_ASSERT(set_seq(LIGHTBAR_TEST) == EC_RES_SUCCESS);
msleep(MSEC);
TEST_ASSERT(get_seq() == LIGHTBAR_TEST);
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
/* Here's a normal sequence */
TEST_ASSERT(set_seq(LIGHTBAR_S3) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
/* And another one-shot */
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
TEST_ASSERT(set_seq(LIGHTBAR_PULSE) == EC_RES_SUCCESS);
msleep(MSEC);
TEST_ASSERT(get_seq() == LIGHTBAR_PULSE);
TEST_ASSERT(set_seq(LIGHTBAR_KONAMI) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_KONAMI);
TEST_ASSERT(set_seq(LIGHTBAR_TAP) == EC_RES_SUCCESS);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_TAP);
/* It should go back to the new normal sequence */
msleep(30 * MSEC);
usleep(30 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
return EC_SUCCESS;
@@ -128,8 +128,6 @@ static int test_oneshots_norm_msg(void)
{
/* Revert to the next state when interrupted with a normal message. */
enum lightbar_sequence seqs[] = {
LIGHTBAR_PULSE,
LIGHTBAR_TEST,
LIGHTBAR_KONAMI,
LIGHTBAR_TAP,
};
@@ -138,17 +136,17 @@ static int test_oneshots_norm_msg(void)
for (i = 0; i < ARRAY_SIZE(seqs); i++) {
/* Start in S0 */
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
/* Invoke the oneshot */
TEST_ASSERT(set_seq(seqs[i]) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
/* Interrupt with S0S3 */
TEST_ASSERT(set_seq(LIGHTBAR_S0S3) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
/* It should be back right away */
TEST_ASSERT(get_seq() == LIGHTBAR_S0S3);
/* And transition on to the correct value */
msleep(30 * MSEC);
usleep(30 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
}
@@ -162,14 +160,14 @@ static int test_stop_timeout(void)
for (i = 0; i < LIGHTBAR_NUM_SEQUENCES; i++) {
/* Start in S0 */
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
/* Tell it to stop */
TEST_ASSERT(set_seq(LIGHTBAR_STOP) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_STOP);
/* Try to interrupt it */
TEST_ASSERT(set_seq(i) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
/* What happened? */
if (i == LIGHTBAR_RUN ||
i == LIGHTBAR_S0S3 || i == LIGHTBAR_S3 ||
@@ -182,7 +180,7 @@ static int test_stop_timeout(void)
/* Let it RUN again for the next iteration */
TEST_ASSERT(set_seq(LIGHTBAR_RUN) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
}
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
@@ -194,7 +192,6 @@ static int test_oneshots_timeout(void)
/* These should revert to the previous state after running */
enum lightbar_sequence seqs[] = {
LIGHTBAR_RUN,
LIGHTBAR_TEST,
LIGHTBAR_KONAMI,
LIGHTBAR_TAP,
};
@@ -202,15 +199,15 @@ static int test_oneshots_timeout(void)
for (i = 0; i < ARRAY_SIZE(seqs); i++) {
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(set_seq(seqs[i]) == EC_RES_SUCCESS);
/* Assume the oneshot sequence takes at least a second (except
* for LIGHTBAR_RUN, which returns immediately) */
if (seqs[i] != LIGHTBAR_RUN) {
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == seqs[i]);
}
msleep(30 * MSEC);
usleep(30 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
}
@@ -221,22 +218,22 @@ static int test_transition_states(void)
{
/* S5S3 */
TEST_ASSERT(set_seq(LIGHTBAR_S5S3) == EC_RES_SUCCESS);
msleep(10 * MSEC);
usleep(10 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
/* S3S0 */
TEST_ASSERT(set_seq(LIGHTBAR_S3S0) == EC_RES_SUCCESS);
msleep(10 * MSEC);
usleep(10 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
/* S0S3 */
TEST_ASSERT(set_seq(LIGHTBAR_S0S3) == EC_RES_SUCCESS);
msleep(10 * MSEC);
usleep(10 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
/* S3S5 */
TEST_ASSERT(set_seq(LIGHTBAR_S3S5) == EC_RES_SUCCESS);
msleep(10 * MSEC);
usleep(10 * SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S5);
return EC_SUCCESS;
@@ -254,31 +251,24 @@ static int test_stable_states(void)
/* It should stay there */
for (i = 0; i < 30; i++) {
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S5);
}
/* S3 is sticky, too */
TEST_ASSERT(set_seq(LIGHTBAR_S3) == EC_RES_SUCCESS);
for (i = 0; i < 30; i++) {
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S3);
}
/* And S0 */
TEST_ASSERT(set_seq(LIGHTBAR_S0) == EC_RES_SUCCESS);
for (i = 0; i < 30; i++) {
msleep(MSEC);
usleep(SECOND);
TEST_ASSERT(get_seq() == LIGHTBAR_S0);
}
/* PULSE is stable too, but nobody should care. Test it anyway. */
TEST_ASSERT(set_seq(LIGHTBAR_PULSE) == EC_RES_SUCCESS);
for (i = 0; i < 30; i++) {
msleep(MSEC);
TEST_ASSERT(get_seq() == LIGHTBAR_PULSE);
}
return EC_SUCCESS;
}