From 6b931125459250a015f6de438dbf9c23e9cd6d75 Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Thu, 1 Nov 2018 17:48:37 +0100 Subject: sb/intel: Deduplicate vbnv_cmos_failed and rtc_init * Move all implementations to into common folder. * Add rtc.c for rtc based functions Allows all Intel based platforms to use VBOOT_VBNV_CMOS. Change-Id: Ia494e6d418af6f907c648376674776c54d95ba71 Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/29427 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- src/southbridge/intel/common/rtc.c | 58 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/southbridge/intel/common/rtc.c (limited to 'src/southbridge/intel/common/rtc.c') diff --git a/src/southbridge/intel/common/rtc.c b/src/southbridge/intel/common/rtc.c new file mode 100644 index 0000000000..e9ac2c2deb --- /dev/null +++ b/src/southbridge/intel/common/rtc.c @@ -0,0 +1,58 @@ +/* + * This file is part of the coreboot project. + * + * Copyright 2013 Google Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 of + * the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include "pmutil.h" +#include "rtc.h" + +/* PCI Configuration Space (D31:F0): LPC */ +#if defined(__SIMPLE_DEVICE__) +#define PCH_LPC_DEV PCI_DEV(0, 0x1f, 0) +#else +#define PCH_LPC_DEV dev_find_slot(0, PCI_DEVFN(0x1f, 0)) +#endif + +int rtc_failure(void) +{ + return !!(pci_read_config8(PCH_LPC_DEV, D31F0_GEN_PMCON_3) + & RTC_BATTERY_DEAD); +} + +void sb_rtc_init(void) +{ + int rtc_failed = rtc_failure(); + + if (rtc_failed) { + if (IS_ENABLED(CONFIG_ELOG)) + elog_add_event(ELOG_TYPE_RTC_RESET); + pci_update_config8(PCH_LPC_DEV, D31F0_GEN_PMCON_3, + ~RTC_BATTERY_DEAD, 0); + } + + printk(BIOS_DEBUG, "RTC: failed = 0x%x\n", rtc_failed); + + cmos_init(rtc_failed); +} + +int vbnv_cmos_failed(void) +{ + return rtc_failure(); +} -- cgit v1.2.3