From d669736841dc9813fef6780ba833d5cff6ac7605 Mon Sep 17 00:00:00 2001 From: Shunxi Zhang Date: Mon, 10 Feb 2025 16:47:28 +0800 Subject: [PATCH] soc/mediatek/mt8196: Fix RTC recovery by disabling external XTAL Configure PMIC register 0x50c bit0 which decides whether to use external xtal. This bit of mt6685 should be set to 1, to disable external xtal. BRANCH=rauru BUG=b:395485005 TEST=emerge-rauru coreboot chromeos-bootimage, remove battery and charger, then insert battery and charge, RTC boots normally. Signed-off-by: Shunxi Zhang Change-Id: Iea44f13af030f24c02993dd43a35a9d8b4f72179 Reviewed-on: https://review.coreboot.org/c/coreboot/+/86353 Reviewed-by: Shunxi Zhang Tested-by: build bot (Jenkins) Reviewed-by: Yu-Ping Wu Reviewed-by: Yidi Lin --- src/soc/mediatek/mt8196/mt6685_rtc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/soc/mediatek/mt8196/mt6685_rtc.c b/src/soc/mediatek/mt8196/mt6685_rtc.c index 4564a3144a..4e63f10664 100644 --- a/src/soc/mediatek/mt8196/mt6685_rtc.c +++ b/src/soc/mediatek/mt8196/mt6685_rtc.c @@ -345,6 +345,10 @@ static void rtc_recovery_flow(void) { printk(BIOS_INFO, "%s: enter\n", __func__); + config_interface(SCK_TOP_XTAL_SEL_ADDR, 1, SCK_TOP_XTAL_SEL_MASK, + SCK_TOP_XTAL_SEL_SHIFT); + udelay(100); + if (!retry(RECOVERY_RETRY_COUNT, rtc_frequency_meter_check() && rtc_init_after_recovery())) {