soc/intel/common: Add API to restore power failure into PMC common code
PMC config register need to program to define which state system should be after reapplied power from G3 state. 0 = System will return to S0 state 1 = System will return to S5 state 2 = System will return to previous state before failure Refer to EDS for detailed programming sequence. Change-Id: I0ce2cc77745d00a8cfe3eed7c6372af77e063d02 Signed-off-by: Subrata Banik <subrata.banik@intel.com> Reviewed-on: https://review.coreboot.org/22838 Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
e5ab9e28a6
commit
9b98febe7a
|
@ -132,6 +132,12 @@ void pmc_clear_all_gpe_status(void);
|
|||
/* Clear status bits in Power and Reset Status (PRSTS) register */
|
||||
void pmc_clear_prsts(void);
|
||||
|
||||
/*
|
||||
* Set PMC register to know which state system should be after
|
||||
* power reapplied
|
||||
*/
|
||||
void pmc_soc_restore_power_failure(void);
|
||||
|
||||
/*
|
||||
* Enable or disable global reset. If global reset is enabled, hard reset and
|
||||
* soft reset will trigger global reset, where both host and TXE are reset.
|
||||
|
@ -205,4 +211,22 @@ void soc_get_gpi_gpe_configs(uint8_t *dw0, uint8_t *dw1, uint8_t *dw2);
|
|||
*/
|
||||
void soc_fill_power_state(struct chipset_power_state *ps);
|
||||
|
||||
/*
|
||||
* Which state do we want to goto after g3 (power restored)?
|
||||
* 0 == S5 Soft Off
|
||||
* 1 == S0 Full On
|
||||
* 2 == Keep Previous State
|
||||
*/
|
||||
enum {
|
||||
MAINBOARD_POWER_STATE_OFF,
|
||||
MAINBOARD_POWER_STATE_ON,
|
||||
MAINBOARD_POWER_STATE_PREVIOUS,
|
||||
};
|
||||
|
||||
/*
|
||||
* Determines what state to go to when power is reapplied
|
||||
* after a power failure (G3 State)
|
||||
*/
|
||||
int pmc_get_mainboard_power_failure_state_choice(void);
|
||||
|
||||
#endif /* SOC_INTEL_COMMON_BLOCK_PMCLIB_H */
|
||||
|
|
|
@ -5,3 +5,28 @@ config SOC_INTEL_COMMON_BLOCK_PMC
|
|||
help
|
||||
Intel Processor common code for Power Management controller(PMC)
|
||||
subsystem
|
||||
|
||||
choice
|
||||
prompt "System Power State after Failure"
|
||||
default POWER_STATE_ON_AFTER_FAILURE
|
||||
|
||||
config POWER_STATE_OFF_AFTER_FAILURE
|
||||
bool "S5 Soft Off"
|
||||
help
|
||||
Choose this option if you want to keep system into
|
||||
S5 after reapplying power after failure
|
||||
|
||||
config POWER_STATE_ON_AFTER_FAILURE
|
||||
bool "S0 Full On"
|
||||
help
|
||||
Choose this option if you want to keep system into
|
||||
S0 after reapplying power after failure
|
||||
|
||||
config POWER_STATE_PREVIOUS_AFTER_FAILURE
|
||||
bool "Keep Previous State"
|
||||
help
|
||||
Choose this option if you want to keep system into
|
||||
same power state as before failure even after reapplying
|
||||
power
|
||||
|
||||
endchoice
|
||||
|
|
|
@ -80,6 +80,18 @@ __attribute__ ((weak)) uint32_t soc_get_smi_status(uint32_t generic_sts)
|
|||
return generic_sts;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set PMC register to know which state system should be after
|
||||
* power reapplied
|
||||
*/
|
||||
__attribute__ ((weak)) void pmc_soc_restore_power_failure(void)
|
||||
{
|
||||
/*
|
||||
* SoC code should set PMC config register in order to set
|
||||
* MAINBOARD_POWER_ON bit as per EDS.
|
||||
*/
|
||||
}
|
||||
|
||||
static uint32_t pmc_reset_smi_status(void)
|
||||
{
|
||||
uint32_t smi_sts = inl(ACPI_BASE_ADDRESS + SMI_STS);
|
||||
|
@ -590,3 +602,17 @@ void pmc_gpe_init(void)
|
|||
/* Set the routes in the GPIO communities as well. */
|
||||
gpio_route_gpe(dw0, dw1, dw2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Determines what state to go to when power is reapplied
|
||||
* after a power failure (G3 State)
|
||||
*/
|
||||
int pmc_get_mainboard_power_failure_state_choice(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_POWER_STATE_PREVIOUS_AFTER_FAILURE))
|
||||
return MAINBOARD_POWER_STATE_PREVIOUS;
|
||||
else if (IS_ENABLED(CONFIG_POWER_STATE_ON_AFTER_FAILURE))
|
||||
return MAINBOARD_POWER_STATE_ON;
|
||||
|
||||
return MAINBOARD_POWER_STATE_OFF;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue