soc/amd/mendocino: Update FSP-S UPD to pass boot logo

A new FSP-S UPD is added to allow passing a buffer containing boot logo
in BMP format. Update the FSP-S UPD and add a SoC specific callback to
populate the UPD.

BUG=b:294055390
TEST=Build and boot to OS in Skyrim. Pass the BMP logo buffer through
the UPD to FSP-S. Ensure that the concerned driver in FSP-S handles the
buffer.

Change-Id: Ie522956b6dfe2400ef91d43c80f2adc6d52c8415
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/78817
Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
Reviewed-by: Eric Lai <ericllai@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/soc/amd/mendocino/fsp_s_params.c b/src/soc/amd/mendocino/fsp_s_params.c
index ce450e8..e1eff32 100644
--- a/src/soc/amd/mendocino/fsp_s_params.c
+++ b/src/soc/amd/mendocino/fsp_s_params.c
@@ -6,6 +6,7 @@
 #include <amdblocks/apob_cache.h>
 #include <amdblocks/vbios_cache.h>
 #include <bootmode.h>
+#include <bootsplash.h>
 #include <console/console.h>
 #include <device/pci.h>
 #include <fsp/api.h>
@@ -52,3 +53,9 @@
 	if (!acpi_is_wakeup_s3())
 		payload_preload();
 }
+
+void soc_load_logo(FSPS_UPD *supd)
+{
+	uint32_t logo_size;
+	bmp_load_logo(&supd->FspsConfig.logo_bmp_buffer, &logo_size);
+}
diff --git a/src/vendorcode/amd/fsp/mendocino/FspsUpd.h b/src/vendorcode/amd/fsp/mendocino/FspsUpd.h
index 3ac52c0..fd250d1 100644
--- a/src/vendorcode/amd/fsp/mendocino/FspsUpd.h
+++ b/src/vendorcode/amd/fsp/mendocino/FspsUpd.h
@@ -11,7 +11,8 @@
 
 typedef struct __packed {
 	/** Offset 0x0020**/	uint32_t                    vbios_buffer;
-	/** Offset 0x0024**/	uint64_t                    gop_reserved;
+	/** Offset 0x0024**/	uint32_t                    gop_reserved;
+	/** Offset 0x0028**/	uint32_t                    logo_bmp_buffer;
 	/** Offset 0x002C**/	uint32_t                    reserved1;
 	/** Offset 0x0030**/	uint16_t                    UpdTerminator;
 } FSP_S_CONFIG;