vpnor: create hostboot bootloader partition

The hostboot bootloader code doesn't use mbox.

It has specific requirements:
- The PNOR TOC should be at the 'PNOR end - TOC size - page size'
  offset. It searches for the TOC here, if not found, the search moves
  down page by page.
- The PNOR should be 64M. The page size and erase block should be 4K.
  The TOC should be 32K.

Copy what the bootloader expects to the LPC memory when mboxd starts up.
The same needs to be done in the case of an mbox reset (irrespective of
where the reset comes from).

Skiboot expects that the TOC should be at offset 0, but it uses mbox to
read the TOC. So this commit doesn't impact skiboot requirements.

Change-Id: I7de556dccfea85f2faa5f401177006a3a562494e
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/mboxd.c b/mboxd.c
index ffd8c84..43d2aa1 100644
--- a/mboxd.c
+++ b/mboxd.c
@@ -104,7 +104,7 @@
 			case SIGHUP:
 				/* Host didn't request reset -> Notify it */
 				reset_all_windows(context, SET_BMC_EVENT);
-				rc = point_to_flash(context);
+				rc = reset_lpc(context);
 				if (rc < 0) {
 					MSG_ERR("WARNING: Failed to point the "
 						"LPC bus back to flash on "
@@ -139,10 +139,10 @@
 		}
 	}
 
-	/* Best to reset windows and point back to flash for safety */
+	/* Best to reset windows and the lpc mapping for safety */
 	/* Host didn't request reset -> Notify it */
 	reset_all_windows(context, SET_BMC_EVENT);
-	rc = point_to_flash(context);
+	rc = reset_lpc(context);
 	/* Not much we can do if this fails */
 	if (rc < 0) {
 		MSG_ERR("WARNING: Failed to point the LPC bus back to flash\n"
@@ -343,8 +343,16 @@
 		goto finish;
 	}
 
-	/* Set the LPC bus mapping to point to the physical flash device */
-	rc = point_to_flash(context);
+#ifdef VIRTUAL_PNOR_ENABLED
+	vpnor_create_partition_table(context);
+
+	strcpy(context->paths.ro_loc, PARTITION_FILES_RO_LOC);
+	strcpy(context->paths.rw_loc, PARTITION_FILES_RW_LOC);
+	strcpy(context->paths.prsv_loc, PARTITION_FILES_PRSV_LOC);
+#endif
+
+	/* Set the LPC bus mapping */
+	rc = reset_lpc(context);
 	if (rc) {
 		goto finish;
 	}
@@ -354,14 +362,6 @@
 		goto finish;
 	}
 
-#ifdef VIRTUAL_PNOR_ENABLED
-	vpnor_create_partition_table(context);
-
-	strcpy(context->paths.ro_loc, PARTITION_FILES_RO_LOC);
-	strcpy(context->paths.rw_loc, PARTITION_FILES_RW_LOC);
-	strcpy(context->paths.prsv_loc, PARTITION_FILES_PRSV_LOC);
-#endif
-
 	MSG_INFO("Entering Polling Loop\n");
 	rc = poll_loop(context);