soc/intel/common/block: Update common rtc code
Move rtc init code into common area and update the implementation for apollolake to avoid build break. Change-Id: I702ce0efba25cb6fde33cc15698ae44312742367 Signed-off-by: Lijian Zhao <lijian.zhao@intel.com> Reviewed-on: https://review.coreboot.org/21433 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
0a712c3337
commit
bfabe62a6e
|
@ -83,23 +83,16 @@ void lpc_configure_pads(void)
|
|||
gpio_configure_pads(lpc_gpios, ARRAY_SIZE(lpc_gpios));
|
||||
}
|
||||
|
||||
static void rtc_init(void)
|
||||
int soc_get_rtc_failed(void)
|
||||
{
|
||||
int rtc_fail;
|
||||
const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE);
|
||||
|
||||
if (!ps) {
|
||||
printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n");
|
||||
return;
|
||||
return 1;
|
||||
}
|
||||
|
||||
rtc_fail = !!(ps->gen_pmcon1 & RPS);
|
||||
/* Ensure the date is set including century byte. */
|
||||
cmos_check_update_date();
|
||||
if (IS_ENABLED(CONFIG_VBOOT_VBNV_CMOS))
|
||||
init_vbnv_cmos(rtc_fail);
|
||||
else
|
||||
cmos_init(rtc_fail);
|
||||
return !!(ps->gen_pmcon1 & RPS);
|
||||
}
|
||||
|
||||
void lpc_init(struct device *dev)
|
||||
|
|
|
@ -18,4 +18,9 @@
|
|||
|
||||
void enable_rtc_upper_bank(void);
|
||||
|
||||
/* Expect return rtc failed bootlean in case of coin removal */
|
||||
int soc_get_rtc_failed(void);
|
||||
|
||||
void rtc_init(void);
|
||||
|
||||
#endif /* SOC_INTEL_COMMON_BLOCK_RTC_H */
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
bootblock-$(CONFIG_SOC_INTEL_COMMON_BLOCK_RTC) += rtc.c
|
||||
|
||||
ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_RTC) += rtc.c
|
||||
|
|
|
@ -13,9 +13,11 @@
|
|||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <soc/pcr_ids.h>
|
||||
#include <intelblocks/pcr.h>
|
||||
#include <intelblocks/rtc.h>
|
||||
#include <soc/pcr_ids.h>
|
||||
#include <pc80/mc146818rtc.h>
|
||||
#include <vboot/vbnv.h>
|
||||
|
||||
/* RTC PCR configuration */
|
||||
#define PCR_RTC_CONF 0x3400
|
||||
|
@ -29,3 +31,22 @@ void enable_rtc_upper_bank(void)
|
|||
/* Enable upper 128 bytes of CMOS */
|
||||
pcr_or32(PID_RTC, PCR_RTC_CONF, PCR_RTC_CONF_UCMOS_EN);
|
||||
}
|
||||
|
||||
__attribute__((weak)) int soc_get_rtc_failed(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rtc_init(void)
|
||||
{
|
||||
int rtc_failed;
|
||||
|
||||
rtc_failed = soc_get_rtc_failed();
|
||||
/* Ensure the date is set including century byte. */
|
||||
cmos_check_update_date();
|
||||
|
||||
if (IS_ENABLED(CONFIG_VBOOT_VBNV_CMOS))
|
||||
init_vbnv_cmos(rtc_failed);
|
||||
else
|
||||
cmos_init(rtc_failed);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue