summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu-An Chen <yu-an.chen@quanta.corp-partner.google.com>2022-11-23 15:13:18 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-29 19:34:01 +0000
commit01be95eee0d625e4b8a194f6664d2bae20765355 (patch)
treef0674fe762f2af1b6fd48c2aac1875280a66289e
parentb31068ff225f5e61460a4bd09c406327b91f1443 (diff)
downloadchrome-ec-01be95eee0d625e4b8a194f6664d2bae20765355.tar.gz
zephyr: pcf85063a: Support oscillator capacitor selection
Support to select the internal oscillator capacitor to 12.5 pF for PCF85063A, default setting is 7 pF. BUG=b:260165217 BRANCH=none TEST=zmake build evoker LOW_COVERAGE_REASON=RTC driver currently has no tests Signed-off-by: Yu-An Chen <yu-an.chen@quanta.corp-partner.google.com> Change-Id: I3418adb08fb4f56bba06a0844acec7806b2bc35d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4050010 Commit-Queue: Wai-Hong Tam <waihong@google.com> Reviewed-by: Bob Moragues <moragues@chromium.org> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Reviewed-by: Sam Hurst <shurst@google.com>
-rw-r--r--zephyr/drivers/cros_rtc/Kconfig7
-rw-r--r--zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.c10
-rw-r--r--zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.h1
3 files changed, 18 insertions, 0 deletions
diff --git a/zephyr/drivers/cros_rtc/Kconfig b/zephyr/drivers/cros_rtc/Kconfig
index fb84416d70..2f064b4db8 100644
--- a/zephyr/drivers/cros_rtc/Kconfig
+++ b/zephyr/drivers/cros_rtc/Kconfig
@@ -45,4 +45,11 @@ config CROS_RTC_RENESAS_IDT1337AG
endchoice # CROS_RTC_TYPE
+config PLATFORM_EC_PCF85063A_CAP_SEL
+ bool "Set CAP_SEL of PCF85063A"
+ depends on CROS_RTC_NXP_PCF85063A
+ help
+ This option select the internal oscillator capacitor to 12.5 pF,
+ default is 7 pF.
+
endif # PLATFORM_EC_RTC
diff --git a/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.c b/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.c
index 34c2cbe0a7..298c8cd64f 100644
--- a/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.c
+++ b/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.c
@@ -363,6 +363,16 @@ static int nxp_rtc_pcf85063a_init(const struct device *dev)
}
}
+#ifdef CONFIG_PLATFORM_EC_PCF85063A_CAP_SEL
+ ret = pcf85063a_write_reg(dev, REG_CONTROL_1,
+ (CONTROL_1_DEFAULT_VALUE | CAP_SEL));
+
+ if (ret < 0) {
+ LOG_ERR("PCF85063A set CAP_SEL Fail!");
+ return ret;
+ }
+#endif
+
/*
* Read Seconds register and check if oscillator is stopped.
* If so, clear the bit.
diff --git a/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.h b/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.h
index 54b1fbd2ea..c0139db631 100644
--- a/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.h
+++ b/zephyr/drivers/cros_rtc/nxp_rtc_pcf85063a.h
@@ -10,6 +10,7 @@
#define SOFT_RESET 0x58
#define CONTROL_1_DEFAULT_VALUE 0
#define OS_BIT 0x80
+#define CAP_SEL 0x01
#define DISABLE_ALARM 0x80
#define ENABLE_ALARM_INTERRUPT 0x80
#define RTC_STOP_CLOCKS 0x20