lib/fmap: Disable pre-RAM cache for FSP 1.0

Due to the way CAR teardown is handled in FSP 1.0, the results of
car_get_var_ptr() aren't always reliable, which can break things when
running with FMAP cache. It might be possible to fix this but would make
the code rather complicated, so let's just disable the feature on these
platforms and hope they die out soon.

Also allow this option to be used by platforms that don't have space for
the cache and want to save a little more code.

Change-Id: I7ffb1b8b08a7ca3fe8d53dc827e2c8521da064c7
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/36937
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
diff --git a/src/lib/fmap.c b/src/lib/fmap.c
index 4b4179c..48aab8f 100644
--- a/src/lib/fmap.c
+++ b/src/lib/fmap.c
@@ -60,6 +60,9 @@
 
 static void setup_preram_cache(struct mem_region_device *cache_mrdev)
 {
+	if (CONFIG(NO_FMAP_CACHE))
+		return;
+
 	if (!ENV_ROMSTAGE_OR_BEFORE) {
 		/* We get here if ramstage makes an FMAP access before calling
 		   cbmem_initialize(). We should avoid letting it come to that,
@@ -70,10 +73,10 @@
 	}
 
 	if (REGION_SIZE(fmap_cache) == 0) {
-		/* If you see this you really want to add an FMAP_CACHE to your
-		   memlayout, unless you absolutely can't affort the 2K. */
-		print_once(BIOS_NOTICE,
-			"NOTE: Running without FMAP_CACHE, should add it!\n");
+		/* If you see this you should add FMAP_CACHE() to your memlayout
+		   (or select NO_FMAP_CACHE if you can't afford the 2K). */
+		print_once(BIOS_ERR,
+			"ERROR: FMAP_CACHE enabled but no region provided!\n");
 		return;
 	}