From 77e13997d33ce8011f711c2001f82113320511fa Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Tue, 29 Nov 2016 17:43:04 -0600 Subject: romstage_handoff: remove code duplication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-on: https://review.coreboot.org/17646 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki Reviewed-by: Furquan Shaikh --- src/include/romstage_handoff.h | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'src/include/romstage_handoff.h') 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 #include #include +#include +#include /* 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 */ -- cgit v1.2.3