uefi: Refactor the fwdb/storage setup so it can be used outside of vboot.

The network boot version of depthcharge doesn't need to set up RO/RW vboot
storage areas, but it does need to set up storage for the netboot params.
This makes the code usable by netboot.

Change-Id: Ia55dac70c727889e332ea3e2b91dbe225949dd1c
diff --git a/src/module/uefi/fwdb.c b/src/module/uefi/fwdb.c
index 14b77fe..7d16c90 100644
--- a/src/module/uefi/fwdb.c
+++ b/src/module/uefi/fwdb.c
@@ -86,15 +86,17 @@
 	return 0;
 }
 
-int uefi_prepare_fwdb_storage(void)
+int uefi_prepare_fwdb_vboot_ro(void)
 {
 	FwdbEntry ro_image_entry = {
 		.ptr = &_binary_ro_image_start,
 		.size = &_binary_ro_image_size - &ImageBase,
 	};
-	if (fwdb_access("uefi_ro_image", NULL, &ro_image_entry))
-		return 1;
+	return fwdb_access("uefi_ro_image", NULL, &ro_image_entry);
+}
 
+int uefi_prepare_fwdb_file(CHAR16 *file_name, const char *fwdb_name)
+{
 	EFI_SYSTEM_TABLE *st = uefi_system_table_ptr();
 	if (!st)
 		return 1;
@@ -129,10 +131,7 @@
 		return 1;
 	}
 
-	int ret = insert_file_into_fwdb(root, L"depthcharge\\rwa",
-					"uefi_rw_a_image");
-	ret = ret || insert_file_into_fwdb(root, L"depthcharge\\rwb",
-					   "uefi_rw_b_image");
+	int ret = insert_file_into_fwdb(root, file_name, fwdb_name);
 
 	status = root->Close(root);
 	if (status != EFI_SUCCESS) {
diff --git a/src/module/uefi/fwdb.h b/src/module/uefi/fwdb.h
index a92886f..367837d 100644
--- a/src/module/uefi/fwdb.h
+++ b/src/module/uefi/fwdb.h
@@ -23,7 +23,10 @@
 #ifndef __MODULE_UEFI_FWDB_H__
 #define __MODULE_UEFI_FWDB_H__
 
-int uefi_prepare_fwdb_storage(void);
+#include "uefi/uefi.h"
+
+int uefi_prepare_fwdb_vboot_ro(void);
+int uefi_prepare_fwdb_file(CHAR16 *file_name, const char *fwdb_name);
 int uefi_prepare_fwdb_e820_map(void);
 int uefi_prepare_fwdb_acpi_rsdp(void);
 
diff --git a/src/module/uefi/uefi.c b/src/module/uefi/uefi.c
index f3ef270..c61fe84 100644
--- a/src/module/uefi/uefi.c
+++ b/src/module/uefi/uefi.c
@@ -28,14 +28,13 @@
 
 void module_main(void)
 {
-	if (uefi_prepare_fwdb_storage())
+	if (uefi_prepare_fwdb_vboot_ro() ||
+	    uefi_prepare_fwdb_file(L"depthcharge\\rwa", "uefi_rw_a_image") ||
+	    uefi_prepare_fwdb_file(L"depthcharge\\rwb", "uefi_rw_b_image") ||
+	    uefi_prepare_fwdb_e820_map() ||
+	    uefi_prepare_fwdb_acpi_rsdp()) {
 		halt();
-
-	if (uefi_prepare_fwdb_e820_map())
-		halt();
-
-	if (uefi_prepare_fwdb_acpi_rsdp())
-		halt();
+	}
 
 	if (vboot_init())
 		halt();