romstage_handoff: add helper to determine resume status
Instead of having callers query the romstage handoff resume status by inspecting the object themselves add romstage_handoff_is_resume() so that the same information can be queried easily. Change-Id: I40f3769b7646bf296ee4bc323a9ab1d5e5691e21 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/17647 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
parent
77e13997d3
commit
6c191d8af4
|
@ -32,14 +32,7 @@ int acpi_slp_type = -1;
|
||||||
#if IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
#if IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
||||||
int acpi_get_sleep_type(void)
|
int acpi_get_sleep_type(void)
|
||||||
{
|
{
|
||||||
struct romstage_handoff *handoff;
|
if (romstage_handoff_is_resume()) {
|
||||||
|
|
||||||
handoff = cbmem_find(CBMEM_ID_ROMSTAGE_INFO);
|
|
||||||
|
|
||||||
if (handoff == NULL) {
|
|
||||||
printk(BIOS_DEBUG, "Unknown boot method, assuming normal.\n");
|
|
||||||
return ACPI_S0;
|
|
||||||
} else if (handoff->s3_resume) {
|
|
||||||
printk(BIOS_DEBUG, "S3 Resume.\n");
|
printk(BIOS_DEBUG, "S3 Resume.\n");
|
||||||
return ACPI_S3;
|
return ACPI_S3;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -78,4 +78,17 @@ static inline int romstage_handoff_init(int is_s3_resume)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return 1 if resuming or 0 if not. */
|
||||||
|
static inline int romstage_handoff_is_resume(void)
|
||||||
|
{
|
||||||
|
struct romstage_handoff *handoff;
|
||||||
|
|
||||||
|
handoff = cbmem_find(CBMEM_ID_ROMSTAGE_INFO);
|
||||||
|
|
||||||
|
if (handoff == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return handoff->s3_resume;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* ROMSTAGE_HANDOFF_H */
|
#endif /* ROMSTAGE_HANDOFF_H */
|
||||||
|
|
|
@ -85,10 +85,11 @@ static void ramstage_cache_invalid(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void run_ramstage_from_resume(struct romstage_handoff *handoff,
|
static void run_ramstage_from_resume(struct prog *ramstage)
|
||||||
struct prog *ramstage)
|
|
||||||
{
|
{
|
||||||
if (handoff != NULL && handoff->s3_resume) {
|
if (!romstage_handoff_is_resume())
|
||||||
|
return;
|
||||||
|
|
||||||
/* Load the cached ramstage to runtime location. */
|
/* Load the cached ramstage to runtime location. */
|
||||||
stage_cache_load_stage(STAGE_RAMSTAGE, ramstage);
|
stage_cache_load_stage(STAGE_RAMSTAGE, ramstage);
|
||||||
|
|
||||||
|
@ -97,7 +98,6 @@ static void run_ramstage_from_resume(struct romstage_handoff *handoff,
|
||||||
prog_run(ramstage);
|
prog_run(ramstage);
|
||||||
}
|
}
|
||||||
ramstage_cache_invalid();
|
ramstage_cache_invalid();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int load_relocatable_ramstage(struct prog *ramstage)
|
static int load_relocatable_ramstage(struct prog *ramstage)
|
||||||
|
@ -136,8 +136,7 @@ void run_ramstage(void)
|
||||||
if (IS_ENABLED(CONFIG_ARCH_X86) &&
|
if (IS_ENABLED(CONFIG_ARCH_X86) &&
|
||||||
!IS_ENABLED(CONFIG_NO_STAGE_CACHE) &&
|
!IS_ENABLED(CONFIG_NO_STAGE_CACHE) &&
|
||||||
IS_ENABLED(CONFIG_EARLY_CBMEM_INIT))
|
IS_ENABLED(CONFIG_EARLY_CBMEM_INIT))
|
||||||
run_ramstage_from_resume(romstage_handoff_find_or_add(),
|
run_ramstage_from_resume(&ramstage);
|
||||||
&ramstage);
|
|
||||||
|
|
||||||
if (prog_locate(&ramstage))
|
if (prog_locate(&ramstage))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
|
@ -260,7 +260,6 @@ static void set_power_limits(void)
|
||||||
static void soc_init(void *data)
|
static void soc_init(void *data)
|
||||||
{
|
{
|
||||||
struct global_nvs_t *gnvs;
|
struct global_nvs_t *gnvs;
|
||||||
struct romstage_handoff *handoff;
|
|
||||||
|
|
||||||
/* Save VBT info and mapping */
|
/* Save VBT info and mapping */
|
||||||
vbt = vbt_get(&vbt_rdev);
|
vbt = vbt_get(&vbt_rdev);
|
||||||
|
@ -269,8 +268,7 @@ static void soc_init(void *data)
|
||||||
* default policy that doesn't honor boards' requirements. */
|
* default policy that doesn't honor boards' requirements. */
|
||||||
itss_snapshot_irq_polarities(GPIO_IRQ_START, GPIO_IRQ_END);
|
itss_snapshot_irq_polarities(GPIO_IRQ_START, GPIO_IRQ_END);
|
||||||
|
|
||||||
handoff = romstage_handoff_find_or_add();
|
fsp_silicon_init(romstage_handoff_is_resume());
|
||||||
fsp_silicon_init(handoff->s3_resume);
|
|
||||||
|
|
||||||
/* Restore GPIO IRQ polarities back to previous settings. */
|
/* Restore GPIO IRQ polarities back to previous settings. */
|
||||||
itss_restore_irq_polarities(GPIO_IRQ_START, GPIO_IRQ_END);
|
itss_restore_irq_polarities(GPIO_IRQ_START, GPIO_IRQ_END);
|
||||||
|
|
|
@ -102,8 +102,6 @@ static const struct reg_script thermal_init_script[] = {
|
||||||
|
|
||||||
static void chip_init(void *chip_info)
|
static void chip_init(void *chip_info)
|
||||||
{
|
{
|
||||||
struct romstage_handoff *handoff;
|
|
||||||
|
|
||||||
/* Validate the temperature settings */
|
/* Validate the temperature settings */
|
||||||
ASSERT(PLATFORM_CATASTROPHIC_TRIP_CELSIUS <= 255);
|
ASSERT(PLATFORM_CATASTROPHIC_TRIP_CELSIUS <= 255);
|
||||||
ASSERT(PLATFORM_CATASTROPHIC_TRIP_CELSIUS
|
ASSERT(PLATFORM_CATASTROPHIC_TRIP_CELSIUS
|
||||||
|
@ -120,8 +118,7 @@ static void chip_init(void *chip_info)
|
||||||
| TS_LOCK_AUX_TRIP_PT_REGS_ENABLE));
|
| TS_LOCK_AUX_TRIP_PT_REGS_ENABLE));
|
||||||
|
|
||||||
/* Perform silicon specific init. */
|
/* Perform silicon specific init. */
|
||||||
handoff = romstage_handoff_find_or_add();
|
fsp_silicon_init(romstage_handoff_is_resume());
|
||||||
fsp_silicon_init(handoff->s3_resume);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pci_domain_set_resources(device_t dev)
|
static void pci_domain_set_resources(device_t dev)
|
||||||
|
|
|
@ -35,13 +35,8 @@
|
||||||
|
|
||||||
void soc_init_pre_device(void *chip_info)
|
void soc_init_pre_device(void *chip_info)
|
||||||
{
|
{
|
||||||
struct romstage_handoff *handoff;
|
|
||||||
|
|
||||||
/* Get S3 status to pass to silicon init. */
|
|
||||||
handoff = romstage_handoff_find_or_add();
|
|
||||||
|
|
||||||
/* Perform silicon specific init. */
|
/* Perform silicon specific init. */
|
||||||
fsp_silicon_init(handoff->s3_resume);
|
fsp_silicon_init(romstage_handoff_is_resume());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pci_domain_set_resources(device_t dev)
|
static void pci_domain_set_resources(device_t dev)
|
||||||
|
|
Loading…
Reference in New Issue