diff options
author | Aaron Durbin <adurbin@chromium.org> | 2016-11-29 17:43:04 -0600 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2016-12-01 08:16:15 +0100 |
commit | 77e13997d33ce8011f711c2001f82113320511fa (patch) | |
tree | a600f2d0d9e21c52ed0551ed37458a87e2ff5afb /src/include | |
parent | c1d72942f4b03b4d684e9b2183841d2d50ce50f0 (diff) | |
download | coreboot-77e13997d33ce8011f711c2001f82113320511fa.tar.xz |
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')
-rw-r--r-- | src/include/romstage_handoff.h | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/include/romstage_handoff.h b/src/include/romstage_handoff.h index 4aba2cea50..3eba0fdaf1 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 */ |