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>
diff --git a/payloads/libpayload/drivers/i8042/keyboard.c b/payloads/libpayload/drivers/i8042/keyboard.c
index cb386e9..91a51bb 100644
--- a/payloads/libpayload/drivers/i8042/keyboard.c
+++ b/payloads/libpayload/drivers/i8042/keyboard.c
@@ -253,6 +253,31 @@
 	STATE_IGNORE,
 } 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 state_time;
 
@@ -305,20 +330,23 @@
 
 	case STATE_SELF_TEST:
 		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;
+			}
 			break;
 		}
 
 		const uint8_t self_test_result = i8042_read_data_ps2();
 		switch (self_test_result) {
 		case 0xaa:
-			/* Success! */
+			debug("INFO: Keyboard self-test succeeded.\n");
 			next_state = STATE_CONFIGURE;
 			break;
 		case 0xfc:
 		case 0xfd:
 			/* Failure. Try again. */
+			debug("WARNING: Keyboard self-test failed.\n");
 			next_state = STATE_START_SELF_TEST;
 			break;
 		default:
@@ -387,6 +415,7 @@
 	}
 
 	if (keyboard_state != next_state) {
+		debug("INFO: Keyboard advancing state to '%s'.\n", state_name(next_state));
 		keyboard_state = next_state;
 		state_time = timer_us(0);
 	}