summaryrefslogtreecommitdiffstats
path: root/src/include/romstage_handoff.h
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2016-11-29 17:43:04 -0600
committerAaron Durbin <adurbin@chromium.org>2016-12-01 08:16:15 +0100
commit77e13997d33ce8011f711c2001f82113320511fa (patch)
treea600f2d0d9e21c52ed0551ed37458a87e2ff5afb /src/include/romstage_handoff.h
parentc1d72942f4b03b4d684e9b2183841d2d50ce50f0 (diff)
downloadcoreboot-77e13997d33ce8011f711c2001f82113320511fa.tar.gz
coreboot-77e13997d33ce8011f711c2001f82113320511fa.tar.bz2
coreboot-77e13997d33ce8011f711c2001f82113320511fa.zip
romstage_handoff: remove code duplication
The same pattern was being used throughout the code base for initializing the romstage handoff structure. Provide a helper function to initialize the structure with the S3 resume state then utilize it at all the existing call sites. Change-Id: I1e9d588ab6b9ace67757387dbb5963ae31ceb252 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/17646 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src/include/romstage_handoff.h')
-rw-r--r--src/include/romstage_handoff.h31
1 files changed, 26 insertions, 5 deletions
diff --git a/src/include/romstage_handoff.h b/src/include/romstage_handoff.h
index 4aba2cea501a..3eba0fdaf171 100644
--- a/src/include/romstage_handoff.h
+++ b/src/include/romstage_handoff.h
@@ -18,6 +18,8 @@
#include <stdint.h>
#include <string.h>
#include <cbmem.h>
+#include <console/console.h>
+#include <rules.h>
/* It is the chipset's responsibility for maintaining the integrity of this
* structure in CBMEM. For instance, if chipset code adds this structure
@@ -48,13 +50,32 @@ static inline struct romstage_handoff *romstage_handoff_find_or_add(void)
* found so it can be initialized to 0. */
handoff = cbmem_find(CBMEM_ID_ROMSTAGE_INFO);
- if (handoff == NULL) {
- handoff = cbmem_add(CBMEM_ID_ROMSTAGE_INFO, sizeof(*handoff));
- if (handoff != NULL)
- memset(handoff, 0, sizeof(*handoff));
- }
+ if (handoff)
+ return handoff;
+
+ handoff = cbmem_add(CBMEM_ID_ROMSTAGE_INFO, sizeof(*handoff));
+
+ if (handoff != NULL)
+ memset(handoff, 0, sizeof(*handoff));
+ else
+ printk(BIOS_DEBUG, "Romstage handoff structure not added!\n");
return handoff;
}
+/* Returns 0 if initialized. Else < 0 if handoff structure not added. */
+static inline int romstage_handoff_init(int is_s3_resume)
+{
+ struct romstage_handoff *handoff;
+
+ handoff = romstage_handoff_find_or_add();
+
+ if (handoff == NULL)
+ return -1;
+
+ handoff->s3_resume = is_s3_resume;
+
+ return 0;
+}
+
#endif /* ROMSTAGE_HANDOFF_H */