libpayload/keyboard: Add debug output to all state transitions
Change-Id: I643a821d4c41fc068f2bab0bd571b0a4a359f59a Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/47591 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
@@ -253,6 +253,31 @@ static enum keyboard_state {
|
|||||||
STATE_IGNORE,
|
STATE_IGNORE,
|
||||||
} keyboard_state;
|
} keyboard_state;
|
||||||
|
|
||||||
|
#define STATE_NAMES_ENTRY(name) [STATE_##name] = #name
|
||||||
|
static const char *const state_names[] = {
|
||||||
|
STATE_NAMES_ENTRY(INIT),
|
||||||
|
STATE_NAMES_ENTRY(SIMPLIFIED_INIT),
|
||||||
|
STATE_NAMES_ENTRY(DISABLE_SCAN),
|
||||||
|
STATE_NAMES_ENTRY(DRAIN_INPUT),
|
||||||
|
STATE_NAMES_ENTRY(DISABLE_TRANSLATION),
|
||||||
|
STATE_NAMES_ENTRY(START_SELF_TEST),
|
||||||
|
STATE_NAMES_ENTRY(SELF_TEST),
|
||||||
|
STATE_NAMES_ENTRY(CONFIGURE),
|
||||||
|
STATE_NAMES_ENTRY(CONFIGURE_SET1),
|
||||||
|
STATE_NAMES_ENTRY(ENABLE_TRANSLATION),
|
||||||
|
STATE_NAMES_ENTRY(ENABLE_SCAN),
|
||||||
|
STATE_NAMES_ENTRY(RUNNING),
|
||||||
|
STATE_NAMES_ENTRY(IGNORE),
|
||||||
|
};
|
||||||
|
|
||||||
|
__attribute__((unused))
|
||||||
|
static const char *state_name(enum keyboard_state state)
|
||||||
|
{
|
||||||
|
if (state >= ARRAY_SIZE(state_names) || !state_names[state])
|
||||||
|
return "<unknown>";
|
||||||
|
return state_names[state];
|
||||||
|
}
|
||||||
|
|
||||||
static uint64_t keyboard_time;
|
static uint64_t keyboard_time;
|
||||||
static uint64_t state_time;
|
static uint64_t state_time;
|
||||||
|
|
||||||
@@ -305,20 +330,23 @@ static void keyboard_poll(void)
|
|||||||
|
|
||||||
case STATE_SELF_TEST:
|
case STATE_SELF_TEST:
|
||||||
if (!i8042_data_ready_ps2()) {
|
if (!i8042_data_ready_ps2()) {
|
||||||
if (timer_us(state_time) > 5*1000*1000)
|
if (timer_us(state_time) > 5*1000*1000) {
|
||||||
|
debug("WARNING: Keyboard self-test timed out.\n");
|
||||||
next_state = STATE_DISABLE_SCAN;
|
next_state = STATE_DISABLE_SCAN;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t self_test_result = i8042_read_data_ps2();
|
const uint8_t self_test_result = i8042_read_data_ps2();
|
||||||
switch (self_test_result) {
|
switch (self_test_result) {
|
||||||
case 0xaa:
|
case 0xaa:
|
||||||
/* Success! */
|
debug("INFO: Keyboard self-test succeeded.\n");
|
||||||
next_state = STATE_CONFIGURE;
|
next_state = STATE_CONFIGURE;
|
||||||
break;
|
break;
|
||||||
case 0xfc:
|
case 0xfc:
|
||||||
case 0xfd:
|
case 0xfd:
|
||||||
/* Failure. Try again. */
|
/* Failure. Try again. */
|
||||||
|
debug("WARNING: Keyboard self-test failed.\n");
|
||||||
next_state = STATE_START_SELF_TEST;
|
next_state = STATE_START_SELF_TEST;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -387,6 +415,7 @@ static void keyboard_poll(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (keyboard_state != next_state) {
|
if (keyboard_state != next_state) {
|
||||||
|
debug("INFO: Keyboard advancing state to '%s'.\n", state_name(next_state));
|
||||||
keyboard_state = next_state;
|
keyboard_state = next_state;
|
||||||
state_time = timer_us(0);
|
state_time = timer_us(0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user