diff options
author | Subrata Banik <subrata.banik@intel.com> | 2017-12-19 10:27:45 +0530 |
---|---|---|
committer | Subrata Banik <subrata.banik@intel.com> | 2017-12-21 03:48:13 +0000 |
commit | 7f4ec968695e918da49fc9b9163188188b71f05b (patch) | |
tree | 7a6ad392a585451eec8086562cea9fa44e06a5e6 /src/soc/intel/skylake/smihandler.c | |
parent | 9b98febe7a9126ab4a323c8eeedb1427e959f7d9 (diff) |
soc/intel/skylake: Implement pmc_soc_restore_power_failure as per EDS
TEST=KBL_RVP is able to power on after reconnecting power supply.
Change-Id: Ic707164a576ffb25418eb6553843cd8edc608800
Signed-off-by: Subrata Banik <subrata.banik@intel.com>
Reviewed-on: https://review.coreboot.org/22839
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc/intel/skylake/smihandler.c')
-rw-r--r-- | src/soc/intel/skylake/smihandler.c | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/src/soc/intel/skylake/smihandler.c b/src/soc/intel/skylake/smihandler.c index 211432cd35..9ec6b87ca6 100644 --- a/src/soc/intel/skylake/smihandler.c +++ b/src/soc/intel/skylake/smihandler.c @@ -120,21 +120,10 @@ static void busmaster_disable_on_bus(int bus) } } - static void southbridge_smi_sleep(void) { - u8 reg8; u32 reg32; u8 slp_typ; - u8 s5pwr = CONFIG_MAINBOARD_POWER_ON_AFTER_POWER_FAIL; - - /* save and recover RTC port values */ - u8 tmp70, tmp72; - tmp70 = inb(0x70); - tmp72 = inb(0x72); - get_option(&s5pwr, "power_on_after_fail"); - outb(tmp70, 0x70); - outb(tmp72, 0x72); /* First, disable further SMIs */ pmc_disable_smi(SLP_SMI_EN); @@ -173,21 +162,10 @@ static void southbridge_smi_sleep(void) break; case ACPI_S5: printk(BIOS_DEBUG, "SMI#: Entering S5 (Soft Power off)\n"); - /*TODO: cmos_layout.bin need to verify; cause wrong CMOS setup*/ - s5pwr = MAINBOARD_POWER_ON; /* Disable all GPE */ pmc_disable_all_gpe(); - /* - * Always set the flag in case CMOS was changed on runtime. For - * "KEEP", switch to "OFF" - KEEP is software emulated - */ - reg8 = pci_read_config8(PCH_DEV_PMC, GEN_PMCON_B); - if (s5pwr == MAINBOARD_POWER_ON) - reg8 &= ~1; - else - reg8 |= 1; - pci_write_config8(PCH_DEV_PMC, GEN_PMCON_B, reg8); + pmc_soc_restore_power_failure(); /* also iterates over all bridges on bus 0 */ busmaster_disable_on_bus(0); |