event: Use an event to replace last_stage_init()

Add a new event which handles this function. Convert existing use of
the function to use the new event instead.

Make sure that EVENT is enabled by affected boards, by selecting it from
the LAST_STAGE_INIT option. For x86, enable it by default since all boards
need it.

For controlcenterdc, inline the get_tpm() function and make sure the event
is not built in SPL.

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/common/Kconfig b/common/Kconfig
index 0b09bd6..d916194 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -720,6 +720,7 @@
 
 config LAST_STAGE_INIT
 	bool "Call board-specific as last setup step"
+	select EVENT
 	help
 	  Some boards need to perform initialisation immediately before control
 	  is passed to the command-line interpreter (e.g. for initializations
diff --git a/common/board_r.c b/common/board_r.c
index 7c1fbc6..ad9a3cf 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -773,15 +773,8 @@
 #ifdef CONFIG_POST
 	initr_post,
 #endif
-#ifdef CONFIG_LAST_STAGE_INIT
 	INIT_FUNC_WATCHDOG_RESET
-	/*
-	 * Some parts can be only initialized if all others (like
-	 * Interrupts) are up and running (i.e. the PC-style ISA
-	 * keyboard).
-	 */
-	last_stage_init,
-#endif
+	INITCALL_EVENT(EVT_LAST_STAGE_INIT),
 #if defined(CFG_PRAM)
 	initr_mem,
 #endif
diff --git a/common/event.c b/common/event.c
index 8a61908..4845104 100644
--- a/common/event.c
+++ b/common/event.c
@@ -36,6 +36,7 @@
 	/* init hooks */
 	"misc_init_f",
 	"fsp_init_r",
+	"last_stage_init",
 
 	/* Fpga load hook */
 	"fpga_load",