summaryrefslogtreecommitdiff
path: root/board/ti/common/rtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/ti/common/rtc.c')
-rw-r--r--board/ti/common/rtc.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/board/ti/common/rtc.c b/board/ti/common/rtc.c
new file mode 100644
index 0000000000..e117a92776
--- /dev/null
+++ b/board/ti/common/rtc.c
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * RTC setup for TI Platforms
+ *
+ * Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
+ */
+#include <asm/arch/hardware.h>
+#include <asm/io.h>
+#include <log.h>
+
+#define WKUP_CTRLMMR_DBOUNCE_CFG1 0x04504084
+#define WKUP_CTRLMMR_DBOUNCE_CFG2 0x04504088
+#define WKUP_CTRLMMR_DBOUNCE_CFG3 0x0450408c
+#define WKUP_CTRLMMR_DBOUNCE_CFG4 0x04504090
+#define WKUP_CTRLMMR_DBOUNCE_CFG5 0x04504094
+#define WKUP_CTRLMMR_DBOUNCE_CFG6 0x04504098
+
+void board_rtc_init(void)
+{
+ u32 val;
+
+ /* We have 32k crystal, so lets enable it */
+ val = readl(MCU_CTRL_LFXOSC_CTRL);
+ val &= ~(MCU_CTRL_LFXOSC_32K_DISABLE_VAL);
+ writel(val, MCU_CTRL_LFXOSC_CTRL);
+
+ /* Add any TRIM needed for the crystal here.. */
+ /* Make sure to mux up to take the SoC 32k from the crystal */
+ writel(MCU_CTRL_DEVICE_CLKOUT_LFOSC_SELECT_VAL,
+ MCU_CTRL_DEVICE_CLKOUT_32K_CTRL);
+
+ /* Setup debounce conf registers - arbitrary values.
+ * Times are approx
+ */
+ /* 1.9ms debounce @ 32k */
+ writel(WKUP_CTRLMMR_DBOUNCE_CFG1, 0x1);
+ /* 5ms debounce @ 32k */
+ writel(WKUP_CTRLMMR_DBOUNCE_CFG2, 0x5);
+ /* 20ms debounce @ 32k */
+ writel(WKUP_CTRLMMR_DBOUNCE_CFG3, 0x14);
+ /* 46ms debounce @ 32k */
+ writel(WKUP_CTRLMMR_DBOUNCE_CFG4, 0x18);
+ /* 100ms debounce @ 32k */
+ writel(WKUP_CTRLMMR_DBOUNCE_CFG5, 0x1c);
+ /* 156ms debounce @ 32k */
+ writel(WKUP_CTRLMMR_DBOUNCE_CFG6, 0x1f);
+}