soc/amd/common/psp_verstage: Write postcodes after ESPI init

On boards where PSP uses ESPI to write postcodes, update the verstage to
do it after ESPI initialization.

BUG=b:224543620
TEST=Build and boot to OS in Nipperkin. Ensure that there are no
attempts to write the post code from PSP verstage before ESPI
initialization.

Change-Id: I1b78931c741c75dc845c9b34e3b2b896221f2364
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62880
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Mohan Viswanathan
Reviewed-by: Raul Rangel <rrangel@chromium.org>
diff --git a/src/soc/amd/cezanne/Kconfig b/src/soc/amd/cezanne/Kconfig
index 81cf974..48944c8 100644
--- a/src/soc/amd/cezanne/Kconfig
+++ b/src/soc/amd/cezanne/Kconfig
@@ -345,6 +345,14 @@
 	help
 	  Disables the output of port80 post codes from PSP.
 
+config PSP_POSTCODES_ON_ESPI
+	bool "Use eSPI bus for PSP post codes"
+	depends on !PSP_DISABLE_POSTCODES
+	default y
+	help
+	  Select to send PSP port80 post codes on eSPI bus.
+	  If not selected, PSP port80 codes will be sent on LPC bus.
+
 config PSP_INIT_ESPI
 	bool "Initialize eSPI in PSP Stage 2 Boot Loader"
 	help
diff --git a/src/soc/amd/common/psp_verstage/psp_verstage.c b/src/soc/amd/common/psp_verstage/psp_verstage.c
index 9d0fb22..d64c257 100644
--- a/src/soc/amd/common/psp_verstage/psp_verstage.c
+++ b/src/soc/amd/common/psp_verstage/psp_verstage.c
@@ -206,16 +206,21 @@
 	/*
 	 * Do not use printk() before console_init()
 	 * Do not use post_code() before verstage_mainboard_init()
+	 * Do not use svc_write_postcode before verstage_soc_espi_init() if PSP uses ESPI
+	 * to write postcodes.
 	 */
 	timestamp_init(timestamp_get());
-	svc_write_postcode(POSTCODE_ENTERED_PSP_VERSTAGE);
+	if (!CONFIG(PSP_POSTCODES_ON_ESPI))
+		svc_write_postcode(POSTCODE_ENTERED_PSP_VERSTAGE);
 	svc_debug_print("Entering verstage on PSP\n");
 	memset(&_bss_start, '\0', &_bss_end - &_bss_start);
 
-	svc_write_postcode(POSTCODE_CONSOLE_INIT);
+	if (!CONFIG(PSP_POSTCODES_ON_ESPI))
+		svc_write_postcode(POSTCODE_CONSOLE_INIT);
 	console_init();
 
-	svc_write_postcode(POSTCODE_EARLY_INIT);
+	if (!CONFIG(PSP_POSTCODES_ON_ESPI))
+		svc_write_postcode(POSTCODE_EARLY_INIT);
 	retval = verstage_soc_early_init();
 	if (retval) {
 		/*