From 4e619b2c5c4732eb124b2909311abeb9e136cbd3 Mon Sep 17 00:00:00 2001
From: Arthur Heymans <arthur@aheymans.xyz>
Date: Tue, 15 Feb 2022 11:01:37 +0100
Subject: drivers/amd/agesa: Use prepare_and_run_postcar
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This removes some of the postcar setup boilerplate.

Change-Id: I4f8f92b88ac16dd70ff4878dfc14e676386d4703
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61962
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
---
 src/drivers/amd/agesa/mtrr_fixme.c       | 10 +++++++++-
 src/drivers/amd/agesa/romstage.c         |  5 +----
 src/northbridge/amd/agesa/agesa_helper.h |  1 -
 3 files changed, 10 insertions(+), 6 deletions(-)

(limited to 'src')

diff --git a/src/drivers/amd/agesa/mtrr_fixme.c b/src/drivers/amd/agesa/mtrr_fixme.c
index b8b8ef05e0..1a1818ffee 100644
--- a/src/drivers/amd/agesa/mtrr_fixme.c
+++ b/src/drivers/amd/agesa/mtrr_fixme.c
@@ -9,6 +9,7 @@
 #include <cpu/x86/msr.h>
 #include <cpu/x86/mtrr.h>
 #include <northbridge/amd/agesa/agesa_helper.h>
+#include <romstage_handoff.h>
 
 static void set_range_uc(u32 base, u32 size)
 {
@@ -51,10 +52,11 @@ void fixup_cbmem_to_UC(int s3resume)
 	set_range_uc(top_of_ram - 8 * MiB, 4 * MiB);
 }
 
-void recover_postcar_frame(struct postcar_frame *pcf, int s3resume)
+static void recover_postcar_frame(struct postcar_frame *pcf)
 {
 	msr_t base, mask;
 	int i;
+	int s3resume = romstage_handoff_is_resume();
 
 	/* Replicate non-UC MTRRs as left behind by AGESA.
 	 */
@@ -86,3 +88,9 @@ void recover_postcar_frame(struct postcar_frame *pcf, int s3resume)
 			MTRR_TYPE_WRBACK);
 	}
 }
+
+void fill_postcar_frame(struct postcar_frame *pcf)
+{
+	pcf->skip_common_mtrr = 1;
+	recover_postcar_frame(pcf);
+}
diff --git a/src/drivers/amd/agesa/romstage.c b/src/drivers/amd/agesa/romstage.c
index 648a0451b3..9abcdd6110 100644
--- a/src/drivers/amd/agesa/romstage.c
+++ b/src/drivers/amd/agesa/romstage.c
@@ -78,10 +78,7 @@ static void romstage_main(void)
 
 	romstage_handoff_init(cb->s3resume);
 
-	postcar_frame_init(&pcf);
-	recover_postcar_frame(&pcf, cb->s3resume);
-
-	run_postcar_phase(&pcf);
+	prepare_and_run_postcar(&pcf);
 	/* We do not return. */
 }
 
diff --git a/src/northbridge/amd/agesa/agesa_helper.h b/src/northbridge/amd/agesa/agesa_helper.h
index 120e74a71a..5f93d2ad17 100644
--- a/src/northbridge/amd/agesa/agesa_helper.h
+++ b/src/northbridge/amd/agesa/agesa_helper.h
@@ -36,7 +36,6 @@ void EmptyHeap(void);
 #define HIGH_MEMORY_SCRATCH		0x30000
 
 void fixup_cbmem_to_UC(int s3resume);
-void recover_postcar_frame(struct postcar_frame *pcf, int s3resume);
 
 void restore_mtrr(void);
 void backup_mtrr(void *mtrr_store, u32 *mtrr_store_size);
-- 
cgit v1.2.3