]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
board: ti: common: Add function for initialization of 32k crystal
authorVishal Mahaveer <vishalm@ti.com>
Wed, 21 Jan 2026 19:53:37 +0000 (13:53 -0600)
committerTom Rini <trini@konsulko.com>
Wed, 28 Jan 2026 21:54:41 +0000 (15:54 -0600)
Add a common helper function for doing the basic configuration
required for enabling the 32k crystal on some of the TI boards.

Signed-off-by: Vishal Mahaveer <vishalm@ti.com>
board/ti/common/Kconfig
board/ti/common/Makefile
board/ti/common/k3_32k_lfosc.c [new file with mode: 0644]
board/ti/common/k3_32k_lfosc.h [new file with mode: 0644]

index 3dd2852e6b0826863a3ed67cd9593e49f7152444..409454813f35da900fc9f5bd1e930724a761fc70 100644 (file)
@@ -22,6 +22,11 @@ config CAPE_EEPROM_BUS_NUM
        default 2
        depends on SUPPORT_EXTENSION_SCAN
 
+config TI_K3_BOARD_LFOSC
+       bool "Initialize 32k LFOSC"
+       help
+         Enable the 32k LFOSC on the device
+
 config TI_COMMON_CMD_OPTIONS
        bool "Enable cmd options on TI platforms"
        imply CMD_ASKENV
index f58935b4103927ebbead3d18d71bee3d5e52c065..b40c93cf31297f825f4a20501bf26debf721203d 100644 (file)
@@ -5,3 +5,4 @@ obj-${CONFIG_TI_I2C_BOARD_DETECT} += board_detect.o
 obj-${CONFIG_$(PHASE_)SUPPORT_EXTENSION_SCAN} += cape_detect.o
 obj-${CONFIG_OF_LIBFDT} += fdt_ops.o
 obj-${CONFIG_ARCH_K3} += k3-ddr.o
+obj-${CONFIG_TI_K3_BOARD_LFOSC} += k3_32k_lfosc.o
diff --git a/board/ti/common/k3_32k_lfosc.c b/board/ti/common/k3_32k_lfosc.c
new file mode 100644 (file)
index 0000000..24c5bad
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Library to support LFOSC operations common to some of the K3 devices
+ *
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#include <asm/arch/hardware.h>
+
+void enable_32k_lfosc(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);
+}
diff --git a/board/ti/common/k3_32k_lfosc.h b/board/ti/common/k3_32k_lfosc.h
new file mode 100644 (file)
index 0000000..0875203
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Library to support LFOSC operations common to some of the K3 devices
+ *
+ * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/
+ */
+#ifndef __32K_LFOSC_OPS_H
+#define __32K_LFOSC_OPS_H
+
+/**
+ * enable_32k_lfosc - Do basic initialization of the 32k crystal
+ */
+void enable_32k_lfosc(void);
+
+#endif /* __32K_LFOSC_OPS_H */