drivers/intel/fsp2_0: add option to compress FSP-M in cbfs

Allow the ability for chipset or mainboard to choose to
compress FSP-M in cbfs using LZMA or LZ4 routines. However, only
non-XIP platforms will support FSP-M compression. Since the main
cbfs decompression paths are utilized add the appropriate checks
for including compression algorithms under the FSP-M compression
options.

On picasso FSP-M (debug builds) the following savings were measured:
no-compression:
	fspm.bin	720896	none
FSP_COMPRESS_FSP_M_LZ4:
	fspm.bin	138379	LZ4  (720896 decompressed)	-80%
FSP_COMPRESS_FSP_M_LZMA:
	fspm.bin	98921	LZMA (720896 decompressed)	-86%

BUG=b:155322763,b:150746858,b:152909132

Change-Id: I5c88510c134b56a36ff1cd97a64b51ab2fea0ab0
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41450
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index ec5156c..cb66f81 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -99,10 +99,20 @@
 	return false;
 }
 
+static inline bool fspm_env(void)
+{
+	/* FSP-M is assumed to be loaded in romstage. */
+	if (ENV_ROMSTAGE)
+		return true;
+	return false;
+}
+
 static inline bool cbfs_lz4_enabled(void)
 {
 	if (fsps_env() && CONFIG(FSP_COMPRESS_FSP_S_LZ4))
 		return true;
+	if (fspm_env() && CONFIG(FSP_COMPRESS_FSP_M_LZ4))
+		return true;
 
 	if ((ENV_BOOTBLOCK || ENV_SEPARATE_VERSTAGE) && !CONFIG(COMPRESS_PRERAM_STAGES))
 		return false;
@@ -114,6 +124,8 @@
 {
 	if (fsps_env() && CONFIG(FSP_COMPRESS_FSP_S_LZMA))
 		return true;
+	if (fspm_env() && CONFIG(FSP_COMPRESS_FSP_M_LZMA))
+		return true;
 	/* We assume here romstage and postcar are never compressed. */
 	if (ENV_BOOTBLOCK || ENV_SEPARATE_VERSTAGE)
 		return false;