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));
|
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);
|
const struct chipset_power_state *ps = cbmem_find(CBMEM_ID_POWER_STATE);
|
||||||
|
|
||||||
if (!ps) {
|
if (!ps) {
|
||||||
printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n");
|
printk(BIOS_ERR, "Could not find power state in cbmem, RTC init aborted\n");
|
||||||
return;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtc_fail = !!(ps->gen_pmcon1 & RPS);
|
return !!(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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lpc_init(struct device *dev)
|
void lpc_init(struct device *dev)
|
||||||
|
|
|
@ -18,4 +18,9 @@
|
||||||
|
|
||||||
void enable_rtc_upper_bank(void);
|
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 */
|
#endif /* SOC_INTEL_COMMON_BLOCK_RTC_H */
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
bootblock-$(CONFIG_SOC_INTEL_COMMON_BLOCK_RTC) += rtc.c
|
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.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <soc/pcr_ids.h>
|
|
||||||
#include <intelblocks/pcr.h>
|
#include <intelblocks/pcr.h>
|
||||||
#include <intelblocks/rtc.h>
|
#include <intelblocks/rtc.h>
|
||||||
|
#include <soc/pcr_ids.h>
|
||||||
|
#include <pc80/mc146818rtc.h>
|
||||||
|
#include <vboot/vbnv.h>
|
||||||
|
|
||||||
/* RTC PCR configuration */
|
/* RTC PCR configuration */
|
||||||
#define PCR_RTC_CONF 0x3400
|
#define PCR_RTC_CONF 0x3400
|
||||||
|
@ -29,3 +31,22 @@ void enable_rtc_upper_bank(void)
|
||||||
/* Enable upper 128 bytes of CMOS */
|
/* Enable upper 128 bytes of CMOS */
|
||||||
pcr_or32(PID_RTC, PCR_RTC_CONF, PCR_RTC_CONF_UCMOS_EN);
|
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