vboot: Remove the inital RMA screen

Do not show the initial RMA screen, go directly to vendor data entry. We
do not want to give the user to the option to skip the RMA process.

BUG=b:138812835
TEST=FEATURES=test emerge-drallion vboot_reference
     emerge-drallion depthcharge chromeos-bootimage
     Inital RMA screen no longer appears
BRANCH=drallion

Change-Id: I0d0f59e3915acd9082c148b69250a0e5d537c273
Signed-off-by: Mathew King <mathewk@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2150509
Reviewed-by: Simon Glass <sjg@chromium.org>
diff --git a/firmware/lib/vboot_ui_legacy_wilco.c b/firmware/lib/vboot_ui_legacy_wilco.c
index 1471c9d..2971a1b 100644
--- a/firmware/lib/vboot_ui_legacy_wilco.c
+++ b/firmware/lib/vboot_ui_legacy_wilco.c
@@ -133,9 +133,17 @@
  * Prompt the user to confirm the serial number and write to memory
  */
 static vb2_error_t vb2_confirm_vendor_data_ui(struct vb2_context *ctx,
-					      char* data_value, VbScreenData *data)
+					      char* data_value)
 {
-	VbDisplayScreen(ctx, VB_SCREEN_CONFIRM_VENDOR_DATA, 1, data);
+	VbScreenData data = {
+		.vendor_data = {
+			.input_text = data_value,
+			.flags = 0,
+			.selected_index = 0,
+		}
+	};
+
+	VbDisplayScreen(ctx, VB_SCREEN_CONFIRM_VENDOR_DATA, 1, &data);
 	/* We'll loop until the user decides what to do */
 	do {
 		uint32_t key_confirm = VbExKeyboardRead();
@@ -149,23 +157,18 @@
 		case 0:
 			/* Nothing pressed */
 			break;
-		case VB_KEY_ESC:
-			/* Escape pressed - return to developer screen */
-			VB2_DEBUG("Confirm Vendor Data UI - user "
-				  "pressed Esc: exit to Developer screen\n");
-			return VB2_SUCCESS;
 		case VB_KEY_RIGHT:
 		case VB_KEY_LEFT:
-			data->vendor_data.selected_index =
-				data->vendor_data.selected_index ^ 1;
+			data.vendor_data.selected_index =
+				data.vendor_data.selected_index ^ 1;
 			VbDisplayScreen(ctx, VB_SCREEN_CONFIRM_VENDOR_DATA,
-					1, data);
+					1, &data);
 			VB2_DEBUG("selected_index:%d\n",
-				  data->vendor_data.selected_index);
+				  data.vendor_data.selected_index);
 			break;
 		case VB_KEY_ENTER:
 			/* Enter pressed - write vendor data */
-			if (data->vendor_data.selected_index == 0) {
+			if (data.vendor_data.selected_index == 0) {
 				VB2_DEBUG("Confirm Vendor Data UI - user "
 					  "selected YES: "
 					  "write vendor data (%s) to VPD\n",
@@ -195,7 +198,7 @@
 		default:
 			VB2_DEBUG("Confirm Vendor Data UI - pressed "
 				  "key %#x\n", key_confirm);
-			VbCheckDisplayKey(ctx, key_confirm, data);
+			VbCheckDisplayKey(ctx, key_confirm, &data);
 			break;
 		}
 		VbExSleepMs(KEY_DELAY_MS);
@@ -205,65 +208,27 @@
 
 vb2_error_t vb2_vendor_data_ui(struct vb2_context *ctx)
 {
+	vb2_error_t ret;
 	char data_value[VENDOR_DATA_LENGTH + 1];
 
-	VbScreenData data = {.vendor_data = {data_value, 0, 0}};
-	VbDisplayScreen(ctx, VB_COMPLETE_VENDOR_DATA, 0, NULL);
+	data_value[0] = '\0';
 
 	do {
-		uint32_t key_set = VbExKeyboardRead();
+		VB2_DEBUG("Vendor Data UI - Enter VD set screen\n");
 
-		if (vb2_want_shutdown(ctx, key_set)) {
-			VB2_DEBUG("Vendor Data UI - shutdown requested!\n");
-			return VBERROR_SHUTDOWN_REQUESTED;
-		}
+		ret = vb2_enter_vendor_data_ui(ctx, data_value);
+		if (ret)
+			return ret;
 
-		switch (key_set) {
-		case 0:
-			/* Nothing pressed - do nothing. */
-			break;
-		case VB_KEY_ESC:
-			/* ESC pressed - boot normally */
-			VB2_DEBUG("Vendor Data UI - boot normally\n");
+		/* Vendor data was not entered just return */
+		if (vendor_data_length(data_value) == 0)
 			return VB2_SUCCESS;
-			break;
-		case VB_KEY_ENTER:
-			data_value[0] = '\0';
-			do {
-				/* ENTER pressed -
-				   enter vendor data set screen */
-				VB2_DEBUG("Vendor Data UI - Enter VD set "
-					  "screen\n");
-				vb2_error_t ret = vb2_enter_vendor_data_ui(
-					ctx, data_value);
 
-				if (ret)
-					return ret;
-
-				/* Vendor data was not entered just return */
-				if (vendor_data_length(data_value) == 0) {
-					return VB2_SUCCESS;
-				}
-
-				/* Reset confirmation answer to YES */
-				data.vendor_data.selected_index = 0;
-
-				ret = vb2_confirm_vendor_data_ui(
-					ctx, data_value, &data);
-
-				if (ret)
-					return ret;
-
-				/* Break if vendor data confirmed */
-				if (data.vendor_data.selected_index == 0)
-					return VB2_SUCCESS;
-			} while (1);
-			break;
-		default:
-			break;
-        }
+		ret = vb2_confirm_vendor_data_ui(ctx, data_value);
+		if (ret)
+			return ret;
 	} while (1);
-    return VB2_SUCCESS;
+	return VB2_SUCCESS;
 }
 
 vb2_error_t vb2_check_diagnostic_key(struct vb2_context *ctx,
diff --git a/tests/vboot_legacy_clamshell_tests.c b/tests/vboot_legacy_clamshell_tests.c
index f31adcd..0d5594a 100644
--- a/tests/vboot_legacy_clamshell_tests.c
+++ b/tests/vboot_legacy_clamshell_tests.c
@@ -897,7 +897,6 @@
 	/* Enter set vendor data and reboot */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '3';
 	mock_keypress[3] = '2';
@@ -912,7 +911,6 @@
 	/* Enter set vendor data; don't confirm and esc */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '3';
 	mock_keypress[3] = '2';
@@ -929,7 +927,6 @@
 	/* Enter set vendor data; esc, don't confirm, and change last character */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '3';
 	mock_keypress[3] = '2';
@@ -949,7 +946,6 @@
 	/* Enter set vendor data; extra keys ignored */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '3';
 	mock_keypress[3] = '2';
@@ -965,7 +961,6 @@
 	/* Enter set vendor data; converts case */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = 'a';
 	mock_keypress[2] = 'B';
 	mock_keypress[3] = 'Y';
@@ -980,7 +975,6 @@
 	/* Enter set vendor data; backspace works */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = 'A';
 	mock_keypress[2] = 'B';
 	mock_keypress[3] = 'C';
@@ -999,7 +993,6 @@
 	/* Enter set vendor data; invalid chars don't print */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '-';
 	mock_keypress[3] = '^';
@@ -1019,7 +1012,6 @@
 	/* Enter set vendor data; invalid chars don't print with backspace */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '-';
 	mock_keypress[3] = VB_KEY_BACKSPACE;  /* Should delete 4 */
@@ -1037,7 +1029,6 @@
 	/* Enter set vendor data; backspace only doesn't underrun */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = 'A';
 	mock_keypress[2] = VB_KEY_BACKSPACE;
 	mock_keypress[3] = VB_KEY_BACKSPACE;
@@ -1055,7 +1046,6 @@
 	/* Enter set vendor data; vowels not allowed after first char */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = 'A';
 	mock_keypress[2] = 'A';
 	mock_keypress[3] = 'B';
@@ -1075,7 +1065,6 @@
 	/* Enter set vendor data; too short */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '1';
 	mock_keypress[2] = '2';
 	mock_keypress[3] = '3';
@@ -1092,7 +1081,6 @@
 	/* Enter set vendor data; esc from set screen */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = VB_KEY_ESC;
 	vbtlk_expect_fixed = 1;
 	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
@@ -1102,7 +1090,6 @@
 	/* Enter set vendor data; esc from set screen with tag */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '3';
 	mock_keypress[3] = '2';
@@ -1116,7 +1103,6 @@
 	/* Enter set vendor data; esc from confirm screen */
 	ResetMocks();
 	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
 	mock_keypress[1] = '4';
 	mock_keypress[2] = '3';
 	mock_keypress[3] = '2';
@@ -1128,15 +1114,6 @@
 		"Enter set vendor data esc from set screen");
 	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
 
-	/* Escape from vendor data warning screen */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ESC;  /* Enter vendor data setting */
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data esc, don't confirm, change last character");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
 	VB2_DEBUG("...done.\n");
 }